작성자 | 낙원의새 | ||
---|---|---|---|
작성일 | 2010-11-27 23:40:09 KST | 조회 | 311 |
제목 |
트리거 응용 조언 부탁드립니다.
|
허프만 알고리즘을 라이브러리로 구현할려고 합니다.
월래 C++ 로 작성된 소스를 그데로 변환해서 옴길려고 했지만
지식 부족으로 인해서 차라이 순수 트리거를 이용해서 구현해볼까 합니다.
texttype[x][y] 이라는 변수(변수유형: 문자열)가 있을때
지정된 변수 K (변수유형: 문자열) 에 들어있는 문자의 종류만큼 반복해서 알파벳의 갯수가 0 이 아닐 경우
변수 texttype[1][0] 은 갯수를 지정하고 변수 texttype[1][1] 은 해당 알파벳(문자열) 으로 지정합니다.
변수 texttype[2][0] 은 갯수를 지정하고 변수 texttype[2][1] 은 해당 알파벳(문자열) 으로 지정합니다.
변수 texttype[3][0] 은 갯수를 지정하고 변수 texttype[3][1] 은 해당 알파벳(문자열) 으로 지정합니다.
이렇게 ? 개에 해당하는 배열값이 지정되었습니다.
(지정된 변수 K 에 알파벳의 종류가 5개일 경우 지정된 배열은 모두 10개입니다.)
여기에는 위 내용을 For 문으로 만들기 위한 다듬기 과정은 생략할께요.
그럼 지금부터. 호프만 트리를 만들기 위해 아래 트리거를 K 문자열에 있는 알파벳 갯수만큼 반복합니다.
※ 여기서 n 은 반복 횟수 입니다.
※ 여기서 a 값은 초기에 검색한 K 문자열에 있는 알파벳의 종류입니다.
※ 선택된 이라는 것은 "트리거" 부분에서 지정한 x 값이 지정하는 배열이라는 뜻입니다.
트리거 - texttype[x][y] 배열 중 y 가 0 인 배열 값 중에 값이 0 이 아닌
가장 작은 수를 가지고 있는 배열 값을 x 로 선택합니다.
변수 texttype[a+n][0] 을 선택된 texttype[x][0] 으로 설정합니다.
변수 texttype[a+n][1] 을 선택된 texttype[x][1] 으로 설정합니다.
선택된 texttype[x][0] 을 "0" 으로 설정합니다. //* 한번 뽑아낸 수를 반복해서 사용하지 않기 위한 설정.
트리거 - texttype[x][y] 배열 중 y 가 0 인 배열 값 중에 값이 0 이 아닌
가장 작은 수를 가지고 있는 배열 값을 x 로 선택합니다.
(모두 0 일경우 트리거 즉시 종료)
변수 선택된 texttype[x][0] 를 texttype[a+n][0] 값 더하기 선택된 texttype[x][0]의 값 으로 설정합니다.
변수 texttype[x][1] 을 "&" 으로 설정합니다.
-- (반복 종료 후)
결과: (만일 a=5 라면)
texttype[6][1] 에는 가장 작은 알파벳 값이 저장되어있다.
texttype[7][1] 에는 두번째로 작은 알파벳 값이 저장되어있다.
texttype[8][1] 에는 세번째로 작은 알파벳 값이 ...
... 등등등
트리 구성에 필요한 값을 뽑아냈으니
texttype[x][y] x 를 통해서 우선 순위를 가려낼 수 있고
y 를 통해서 0 & 1 값을 산출할 수도 있으니 이것을 이용해서
허프만 알고리즘 방식으로 코드 생성해야하겠는데 ..
트리거를 어떻게 만들어야 할까요 ... =_= .. 막막 합니다.
모든 루트를 검색할 수는 없으니 지정된 배열에 있는
정수를 이용해서 뽑아내야 할 것 같은데 .. 흠 ;;
일단 위에 적어논게 맞는지도 모르겠고 ==;;
트리거를 어떻게 만들어야 할지 조언 좀 부탁드립니다.
혹시 이미 만들어 놓은 허프만 알고리즘 라이브러리가 있다면 괜찮으실 경우 공유 좀 부탁드립니다.
|
||
|
© PlayXP Inc. All Rights Reserved.