주파수가 비슷할 때 최적의 프리픽스 프리 코드를 계산하는 복잡성은 무엇입니까?


13

잘 시간에 허프만 코드를 계산하는 최악의 경우 최적의 알고리즘이 있다고 알려져있다 θ(nlgn) . 이것은 두 가지 직교 방식으로 개선되었습니다.

  1. 고유 주파수 세트가 작은 경우 (예 : 크기 σ ) 최적의 프리픽스 프리 코드를 더 빠르게 계산할 수 있습니다 . [Munro and Spira, 1976]을 사용하여 주파수를 정렬하여 의 작은 값을 활용 σ하고 허프만을 계산하십시오. 정렬 된 주파수에서 선형 시간으로 트리. 이것은 O ( n lg σ ) 의 해를 산출합니다O(nlgσ)

  2. 등가 코드를 계산 하는 O(n16k) 알고리즘이 있습니다. 여기서 k고유 코드 워드 길이수입니다 [Belal and Elmasry].

현재 최선의 복잡성을 개선하기 위해, 그 기술을 결합 할 수있는 방법이 있나요 O(nmin{16k,lgσ}) ?


O(nk)2010 년 ARXIV에 게시 된 Elmasry, STACS 2006 SEEM TO BEONG OF O (nk) 결과 (http://arxiv.org/abs/cs/0509015) 정렬되지 않은 입력에 대한 O(16kn) 연산 - 정렬 된 입력에 대한 O(9klog2k1n) 연산


  1. ( Huffman의 코드에 대한 알고리즘 으로 정렬 ) 및 (선물 기반 알고리즘)에서 평면 볼록 껍질의 계산이 복잡하다는 점과 유사 합니다. 랩핑)은 Kirkpatrick과 Seidel의 알고리즘으로 대체되었습니다 (나중에 형식의 복잡성으로 최적 인 것으로 입증 ) Prefix Free 코드의 경우, 대 는 복잡도 또는 심지어 의 알고리즘 가능성을 제안합니다. 여기서 는 길이의 코드 워드 수입니다.O ( n lg n ) O ( n h ) O ( n lg h ) O ( n H ( n 1 , , n k ) O ( n lg n ) O ( n k ) O ( n lg k ) O ( n H ( n 1 )O(nlgn)O(nlgn)O(nh)O(nlgh)O(nH(n1,,nk)O(nlgn)O(nk)O(nlgk)n i i n i n iO(nH(n1,,nk)nii 덮는 볼록 껍질의 가장자리의 비유를 사용하여 심벌을 덮는 코드 길이를 가리킨다 .nini

  2. 간단한 예는 주파수의 (둥근) 로그 값을 정렬하면 ( 워드 RAM 모델에서 선형 시간으로) 선형 시간에서 최적의 프리픽스 프리 코드를 제공하지 않음을 보여줍니다. θ(lgn)

    • 를 들어 , 및F (1) = 1 / 2 - ε F (2) = F (3) = 1 / 4 + εn=3f1=1/2εf2=f3=1/4+ε
    • lgfi=2 이므로 로그 정렬 순서가 변경되지 않습니다
    • 그러나 3 개의 비용 중 2 개의 코드 는 최적의 것보다 비트 더 비싸다 .n/4
  3. 또 다른 흥미로운 질문은 가 클 때의 복잡성을 줄이는 것입니다 . 즉 모든 코드의 길이가 다릅니다.k

    • 예를 들어 때 주파수는 모두 고유 한 로그 값입니다. 이 경우 워드 RAM 에서 선형 시간으로 주파수를 정렬하고 허프만 코드를 선형 시간으로 계산할 수 있으므로 (로그 값을 정렬하면 값을 정렬하기에 충분하므로) 전체 선형 시간이 발생합니다. Belal과 Elmasry 알고리즘 의 보다 훨씬 낫습니다 .θ ( LG N ) , N (2)k=nθ(lgn)n2

답변:


1

몇 년 (5 년)이 걸렸지 만 다음은 질문에 대한 부분적인 답변입니다.

http://arxiv.org/abs/1602.00023

부분 정렬을 통한 최적 접두사 무료 코드 Jérémy Barbay (2016 년 1 월 29 일 제출)

우리는 대체 α∈ [1..n-1]의 양을 측정하는 O (n (1 + lgα)) ⊆O (nlgn) 내에서 n 개의 분류되지 않은 양의 가중치에 대한 최적의 프리픽스 프리 코드를 계산하는 알고리즘을 설명합니다. 계산에 필요한 정렬. 이 비대칭 복잡도는 대수 의사 결정 트리 계산 모델에서 최적의 상수 요소 내에 있으며, 최악의 경우 크기 n 및 교대 α의 모든 인스턴스에 대해 최악의 경우입니다. 이러한 결과는 최적의 접두사를 계산하기위한 van Leeuwen 알고리즘의 단순한 조합에 의해 1952 년 이후 압축 및 코딩의 랜드 마크인 동일한 계산 모델에서 크기 n의 인스턴스에 대해 최악의 경우 Θ (nlgn)의 복잡성을 개선합니다. 정렬 된 가중치 (1976 년 이후 알려진)의 무료 코드, 지연된 데이터 구조를 사용하여 쿼리에 따라 다중 집합을 부분적으로 정렬 (1988 년 이후 알려진).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.