C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[41365] [질문] Random Sparse Matrix 를 바이너리 파일로 쓰기.
kalamazu [kalamazu] 991 읽음    2005-08-08 09:46
안녕하세요.

여기에 이렇게 유익한 싸이트가 있는줄 몰랐네요.
오늘 가입했습니다.

저는 응용코딩 이론(Applied Coding Theory)를 공부하고 있습니다.
프로그램을 만들때 매번 MatLab을 이용하다 보니 속도가 넘 느려서 이제서야 C++로 눈을 돌렸습니다.
백그라운드가 많이 부족해서 그런지 상당히 힘이 드네요.

제 질문은,
사이즈가 N by M 인 Random Sparse Matrix를 바이너리 파일로 쓸려고 하는데,
문제는 싸이즈가 넘 커서...(예를 들면 N=2000,000 , M=1000,000).
그래서 이 Matrix의 각 행의 0 이 아닌 엔트리만 Vector 형태로 저장할려고 합니다.
이런 식으로 저장을 하면 Matrix를 (10X1000,000)의 사이즈로 저장을 할수가 있거든요.
문제는 이런식으로 저장할때, 초보자에게 늘 그렇듯이, 각 행벡터가 사이즈가 다르기 때문에 어떻게 행벡터와 행벡터를 구분하게 해주어야 할지 참 난감합니다.
행벡터와 행벡터를 구분할수 있는 구분자를 넣을수 있는 예제를 소스코드와 함께 강의를 좀 해주실수 없을까요?
미리 감사드립니다.

참고:Sparse Matrix 란 Matrix의 거의모든 성분이 0인 Matrix 입니다.

참고로 아래코드는 지금 제가 Try 하고 있는 코드입니다.

******************************************************
#include <iostream.h>
#include <stdlib.h> //rand() 를 사용하기 위함.

#include <vector> //matrix size가 constant가 아니므로 vector를 이용함.
using std::vector;

#include <algorithm>
using std::random_shuffle; // random vector를 만들어줌.



void main( void )
{

//먼저 matrix 의 0이 아닌 성분의 총 개수를 t 로 입력받음.
  int t;
  cout << "Enter the size of your permutations:";
  cin >> t;
 
//싸이즈 t 인 Identity Vector를 생성함.
  vector < int > vi;
  for ( int i = 0; i < t; i++ )
  {
    vi.push_back( i );
  }

  //Identity Vector를 랜덤 셔플링 함.
   for ( int j = 0; j < 10; j++ )
  {
    random_shuffle( vi.begin(), vi.end() );
  }
}

/* 이 vi 벡터를 사이즈가 서로다른 row(1),row(2),...,row(n) 으로 나누어서
각 row(i)에 있는 성분을 i번째 행의 nonzero 성분으로 사용할려고 합니다.
row(i)의 그 나머지 성분은 모두 zero. */
*******************************************************************


일단 여기까지 무난하게 됐구요.
이제 이 vi 벡터를 N개의 행벡터로 나누어서 바이너리 파일로 저장해야 하는데,
fstream을 이용해서 ios::open 과 ios::binary  옵션을 사용해서 저장하라고 하더군요.
(지금 연습을 하고 있습니다만, 워낙 초보라서...떡을 줘도 입에 못넣네요 ㅎㅎ).

이때 바이너리 파일로 저장할때 행벡터와 행벡터를 구분하게 할려면 어떻게 해야 하는지...
좋은 조언 부탁드립니다.

+ -

관련 글 리스트
41365 [질문] Random Sparse Matrix 를 바이너리 파일로 쓰기. kalamazu 991 2005/08/08
41366     Re:[질문] Random Sparse Matrix 를 바이너리 파일로 쓰기. smleelms 1007 2005/08/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.