다음과 같은 표준 하프만 코드 테이블이 있다고 가정 해 봅시다.Canonical Huffman Encoder : 인코딩 된 비트 스트림의 내용
Symbol Code-length Codeword
A 2 00
B 2 01
C 2 10
D 2 11
이제 입력 파일에서 기호를 읽고 위의 표를보고 인코딩합니다. 그러나 표준 자원 인 허프만 (Huffman)의 경우 코드 워드를 보내지 말아야한다는 주장이 많습니다. 대신 각 기호의 코드 길이로 충분합니다.
텍스트 파일에 ACCDB가 포함되어있는 경우 인코딩 된 비트 스트림으로 00 01 10 11 또는 10 10 10 10 (해당 코드 길이의 이진 값)을 전송해야합니까? 내가 틀렸다면 나에게 바로 설명을 해주십시오.
또한 정규 허프만의 경우 해당 비트 스트림을 디코딩하여 원래 기호 ACCDB (디코더에서 허프만 트리를 사용하지 않음)를 다시 얻으려면 어떻게해야합니까?
질문을 수정 한 후에도 여전히 접두사 코드가 아닙니다. A는 C와 D의 접두사입니다. 접두어 코드에서 접두사로 다른 코드를 사용할 수있는 코드는 없습니다. –
이제 불완전한 코드입니다. 100 및 111은 사용되지 않습니다. 당신은 C와 D의 마지막 비트를 깎아 내서 10과 11을 길이 2 2 2 2로 완전한 코드로 만들 수 있습니다. 유효한 4 개의 기호 코드 길이는 2 2 2 2와 1 2 3 3입니다. –