| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
방정호
가입: 2011년 9월 19일 올린 글: 40
|
올려짐: 2011년10월28일 5:50 주제: 5-1번, 허프만 코드만큼의 비트수인지 확인해주는 테스터입니다. |
|
|
input 넣고, 이 input에 있는 빈도와 결과로 나온 코드 개수를 곱하고 전부 다 더해서
총 필요한 비트수를 비교하는 프로그램입니다.
테스트셋을 돌려보고, 허프만 코드만큼의 비트수만큼인지 확인합니다.
(사실 밑에 테스트셋에 optTotalCodeLen 으로 넣은 값들은 제 프로그램으로 나온 값입니다. ㅎㅎ;;;;
"허프만 코드만큼 효율적입니다." 라는 멘트 뒤에 음수가 나온다면,
더 적은 비트수로 인코딩 하실 수 있으시다는 건데, 그럼 제 프로그램이 잘못된 거네요 ㅎ;;
혹시 음수가 뜨신 분들은 알려주시면 감사하겠습니다. ^^;; )
| 코드: | ; Tester
(define (test input optTotalCodeLen)
(define (getLen str output)
(if (equal? str (car (car output))) (- (length (car output)) 1) (getLen str (cdr output))))
(define (getTotal ip op)
(if (null? ip) 0 (+ (* (cdr (car ip)) (getLen (car (car ip)) op)) (getTotal (cdr ip) op))))
(define sorted (sort input (lambda (x y) (< (cdr x) (cdr y)))))
(define totalCodeLen (getTotal sorted (vlencode sorted)))
(if (<= totalCodeLen optTotalCodeLen)
(begin (display "허프만 코드만큼 효율적입니다. ")
(display (- totalCodeLen optTotalCodeLen))
(newline)
)
(begin (display "허프만 코드보다 ")
(display (- totalCodeLen optTotalCodeLen))
(display " 만큼 더 많은 코드가 필요하네요.")
(newline)
(display sorted)
(newline)
(display (vlencode sorted))
(newline)
)
)
) |
| 코드: | (test (list (cons "w1" 61) (cons "w2" 44) (cons "w3" 93) (cons "w4" 36) (cons "w5" 38)) 618)
(test (list (cons "w1" 11) (cons "w2" 99) (cons "w3" 10) (cons "w4" 100) (cons "w5" 81) (cons "w6" 70) (cons "w7" 42) (cons "w8" 62) (cons "w9" 15) (cons "w10" 41)) 1627)
(test (list (cons "w1" 71) (cons "w2" 88) (cons "w3" 21) (cons "w4" 84) (cons "w5" 92) (cons "w6" 44) (cons "w7" 75) (cons "w8" 31) (cons "w9" 11) (cons "w10" 18) (cons "w11" 49) (cons "w12" 82) (cons "w13" 16) (cons "w14" 36) (cons "w15" 74) (cons "w16" 5) (cons "w17" 3) (cons "w18" 2) (cons "w19" 42) (cons "w20" 91)) 3724)
(test (list (cons "w1" 18) (cons "w2" 8) (cons "w3" 56) (cons "w4" 89) (cons "w5" 42) (cons "w6" 27) (cons "w7" 55) (cons "w8" 63) (cons "w9" 69) (cons "w10" 20) (cons "w11" 42) (cons "w12" 89) (cons "w13" 16) (cons "w14" 83) (cons "w15" 1) (cons "w16" 69) (cons "w17" 65) (cons "w18" 90) (cons "w19" 38) (cons "w20" 40) (cons "w21" 8) (cons "w22" 49) (cons "w23" 87) (cons "w24" 93) (cons "w25" 13) (cons "w26" 82) (cons "w27" 67) (cons "w28" 57) (cons "w29" 83) (cons "w30" 10)) 7119)
(test (list (cons "w1" 39) (cons "w2" 86) (cons "w3" 91) (cons "w4" 53) (cons "w5" 99) (cons "w6" 66) (cons "w7" 89) (cons "w8" 78) (cons "w9" 18) (cons "w10" 99) (cons "w11" 5) (cons "w12" 87) (cons "w13" 41) (cons "w14" 82) (cons "w15" 88) (cons "w16" 42) (cons "w17" 5) (cons "w18" 68) (cons "w19" 19) (cons "w20" 100) (cons "w21" 95) (cons "w22" 36) (cons "w23" 58) (cons "w24" 72) (cons "w25" 42) (cons "w26" 19) (cons "w27" 76) (cons "w28" 78) (cons "w29" 23) (cons "w30" 94) (cons "w31" 30) (cons "w32" 38) (cons "w33" 33) (cons "w34" 92) (cons "w35" 34) (cons "w36" 39) (cons "w37" 31) (cons "w38" 83) (cons "w39" 34) (cons "w40" 71) (cons "w41" 59) (cons "w42" 85) (cons "w43" 74) (cons "w44" 39) (cons "w45" 86) (cons "w46" 45) (cons "w47" 82) (cons "w48" 5) (cons "w49" 15) (cons "w50" 66)) 15773)
(test (list (cons "w1" 114) (cons "w2" 5) (cons "w3" 197) (cons "w4" 46) (cons "w5" 145) (cons "w6" 1) (cons "w7" 3) (cons "w8" 83) (cons "w9" 69) (cons "w10" 166) (cons "w11" 8) (cons "w12" 150) (cons "w13" 81) (cons "w14" 11) (cons "w15" 129) (cons "w16" 184) (cons "w17" 169) (cons "w18" 41) (cons "w19" 66) (cons "w20" 141) (cons "w21" 8) (cons "w22" 168) (cons "w23" 69) (cons "w24" 94) (cons "w25" 31) (cons "w26" 22) (cons "w27" 178) (cons "w28" 3) (cons "w29" 109) (cons "w30" 174) (cons "w31" 32) (cons "w32" 48) (cons "w33" 119) (cons "w34" 93) (cons "w35" 1) (cons "w36" 78) (cons "w37" 167) (cons "w38" 26) (cons "w39" 138) (cons "w40" 30) (cons "w41" 120) (cons "w42" 38) (cons "w43" 167) (cons "w44" 183) (cons "w45" 150) (cons "w46" 92) (cons "w47" 143) (cons "w48" 149) (cons "w49" 67) (cons "w50" 49)) 24045) |
방정호 가 2011년10월28일 20:56에 수정함, 총 3 번 수정됨 |
|
| 위로 |
|
 |
shwlinux
가입: 2011년 9월 26일 올린 글: 39
|
올려짐: 2011년10월28일 19:06 주제: 음수가 나왔네요..^^;; |
|
|
허프만 코드만큼 효율적입니다. -346
허프만 코드만큼 효율적입니다. -1096
허프만 코드만큼 효율적입니다. -2789
허프만 코드만큼 효율적입니다. -5590
허프만 코드만큼 효율적입니다. -12884
허프만 코드만큼 효율적입니다. -19490
테스트 결과 이렇게 나왔습니다.
테스트셋 제공해 주셔서 감사합니다! |
|
| 위로 |
|
 |
김태훈10
가입: 2011년 10월 15일 올린 글: 21
|
올려짐: 2011년10월28일 19:09 주제: 오오 감사합니다! |
|
|
| 감사합니다!! 잘만드셧네요 ㅋㅋ |
|
| 위로 |
|
 |
shwlinux
가입: 2011년 9월 26일 올린 글: 39
|
올려짐: 2011년10월28일 20:20 주제: 으어... |
|
|
위에 음수 나왔다고 했는데
알고보니 출력형식 때문에 문제가 생긴거였네요
허프만 코드보다 25 만큼 더 많은 코드가 필요하네요.
허프만 코드보다 352 만큼 더 많은 코드가 필요하네요.
허프만 코드보다 2466 만큼 더 많은 코드가 필요하네요.
허프만 코드보다 9076 만큼 더 많은 코드가 필요하네요.
허프만 코드보다 37401 만큼 더 많은 코드가 필요하네요.
ㅠㅠㅠㅠㅠㅠ |
|
| 위로 |
|
 |
kernys
가입: 2011년 10월 26일 올린 글: 10
|
올려짐: 2011년10월29일 15:37 주제: |
|
|
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
하프만 코드 이론을 그대로 따르면 위와 같이 나오네요... |
|
| 위로 |
|
 |
|