▲GN⁺ 2024-07-06 | parent | ★ favorite | on: Haskell을 사용한 Huffman 코드 기반 데이터 압축 유틸리티 개발(lazamar.github.io)Hacker News 의견 배열 기반의 인플레이스 알고리즘이 존재하여 트리를 할당하고 포인터를 추적할 필요가 줄어듦 대학에서 트리 기반 접근 방식을 배울 때 다른 방법이 있는지 몰랐음 트리 접근 방식이 직관적이고 유익하지만, 많은 데이터를 빠르게 처리해야 할 때는 인플레이스 배열을 사용하는 것이 더 합리적임 참고 문헌: "In-Place Calculation of Minimum-Redundancy Codes" (Moffat, Katajainen, 1995) 코드 단어가 다른 코드 단어의 접두사가 되지 않도록 해야 한다는 것은 기술적으로 정확하지 않음 유일하게 디코딩 가능한 코드 클래스는 접두사 코드의 상위 집합임 예를 들어, 접두사 코드의 역순은 여전히 명확하게 디코딩 가능함 예시 코드: a 1 b 00 c 10 'a'의 코드가 'c'의 코드의 접두사이지만, 역순으로 처리하면 명확하게 디코딩 가능함 Haskell 프로그램 작성에 대한 더 고급 기능(모나드 변환기, 렌즈 등)을 다루는 유사한 튜토리얼이 있는지 궁금함 Coursera의 함수형 프로그래밍 코스(Scala)에서 유사한 Huffman 코딩 과제를 제공함 링크: Coursera Scala Functional Programming Huffman 코드를 사용하여 MICMAC 프로세서 매크로 프로그램을 최소한의 마이크로사이클과 마이크로명령으로 실행했음 매크로 명령어의 히스토그램을 작성하고, 이를 기반으로 프로그레시브 디코딩 마이크로코드 프로그램을 작성했음 실제로는 느리고 불편했을 것임 Huffman 코드의 장점은 값의 분포에 따라 접두사 깊이를 조절할 수 있다는 것임 비초과파이프라인 프로세서 모델에서 분기 예측을 처리해야 했음 Huffman 코딩에 대한 추가 정보: Rosetta Code Huffman Coding Haskell 프로그래머를 위한 질문: 최적화된 코드를 작성하려는 프로그래머에게 Haskell의 성능은 어떤지 궁금함 특히 행렬 연산과 SIMD를 활용하는 수치 계산 성능에 관심이 있음 공유해줘서 고맙다는 의견 "Creating prefix-free codes" 섹션의 표에 오타가 있음 D는 '0010'이어야 함 (현재는 '0110'으로 잘못 표기됨) 그 외에는 훌륭한 읽을거리였음 산술 코드는 거의 모든 면에서 더 나음 더 적은 RAM과 코드로 구현 가능함 더 나은 압축 및 디컴프레션 비율을 제공함 스트림 중에 다른 기호가 나타날 확률을 동적으로 업데이트하기 더 쉬움 Huffman 코드는 먼저 발명되었고 산술 코드는 특허가 있었기 때문에 사용됨 현재 특허가 만료되었으므로 더 나은 설계를 사용해야 함
Hacker News 의견
배열 기반의 인플레이스 알고리즘이 존재하여 트리를 할당하고 포인터를 추적할 필요가 줄어듦
코드 단어가 다른 코드 단어의 접두사가 되지 않도록 해야 한다는 것은 기술적으로 정확하지 않음
Haskell 프로그램 작성에 대한 더 고급 기능(모나드 변환기, 렌즈 등)을 다루는 유사한 튜토리얼이 있는지 궁금함
Coursera의 함수형 프로그래밍 코스(Scala)에서 유사한 Huffman 코딩 과제를 제공함
Huffman 코드를 사용하여 MICMAC 프로세서 매크로 프로그램을 최소한의 마이크로사이클과 마이크로명령으로 실행했음
Huffman 코딩에 대한 추가 정보: Rosetta Code Huffman Coding
Haskell 프로그래머를 위한 질문: 최적화된 코드를 작성하려는 프로그래머에게 Haskell의 성능은 어떤지 궁금함
공유해줘서 고맙다는 의견
"Creating prefix-free codes" 섹션의 표에 오타가 있음
산술 코드는 거의 모든 면에서 더 나음