알고리즘(?)관련 질문드립니닷!!!
글쓴이: iah63 / 작성시간: 월, 2010/07/19 - 6:29오후
제목이 제대로된건지 잘모르겟내요 -0-;;;
시뮬레이션 후 생긴 트레이스파일을 가지고 그레프로 보여주는 프로그램을 작성중입니다.
트레이스 파일에 넣어지는 정보는 정보 하나당 (출발지 목적지 출발시간 도착시간)으로 구성되어져있습니다.
트레이스파일에 있는 이러한 것들을 모두읽어서 저장해놨다가 사용자가 선택한 정보를 그레프로 출력해 주는 것이 목적입니다.
헌데 저러한 정보가 몇만개가 되다보니... 메모리 사용량이 커지는 것은 물론 프로그램 속도도 현저히 줄어드는 것같습니다.
그래서 질문 드립니다, 어떻게 하면 메모리 사용량을 줄일 수 있을까요?
아 그리고 여기 게시판은 원래 검색이 안되나요?;;;
Forums:
일단 컴퓨터를
업그레이드하는 방법이 있구요. :-)
사용자가 원하는 정보가 뭔지에 따라 해결방법이 달라지겠죠.
만약 사용자가 원하는 정보가 이를테면 평균 여행시간이라면 재귀적으로 계산하면 되겠죠. 즉 i번째 정보까지의 평균 여행시간을 T_i 라고 하면
T_i = ((i-1) * T_{i-1} + (도착시간 - 출발시간)) / (i+1)
로 자료를 하나씩만 읽어서 이 값만 계속 계산해나가면 되겠죠.
만약에 원하는 자료값을 부분 자료값의 함수로 쓸 수 있다면 전체 자료를 쪼개서 부분 자료값을 계산한 후에 다시 전체 자료에 대한 값을 계산할 수도 있구요.
만약에 이도저도 안되는 경우인데, 자료가 아주 많다면 sampling 을 할 수 있습니다. 즉 만개의 자료 중에 1000 개만 골라서 읽은 다음 값을 계산해 주거나 그래프를 그려 주거나 하면 됩니다.
Sampling 을 여러 번 해서 평균을 내어도 됩니다. 이를테면 자료가 10만개이면 10만개를 다 처리하는 것보다, 1000 개씩 랜덤하게 뽑아서 10번 (총 만개 자료) 값을 낸 평균을 쓰는 것도 괜찮습니다. (통계학적으로도 괜찮습니다.)
그런데 정보 하나가 (출발지 목적지 출발시간 도착시간) 인 게 몇만개인 자료가 그렇게 커 보이지는 않네요. 최소 몇백만개는 되어야 처리하기 힘든 자료일 듯 한데, 사용하는 언어나 구현을 한번 들여다보는 것도 괜찮을 듯 합니다.
댓글 달기