Qual è la complessità del calcolo dei codici gratuiti prefisso ottimali, quando le frequenze sono simili?


13

È noto che esiste un algoritmo ottimale nel caso peggiore per calcolare il codice Huffman in tempo . Questo è migliorato in due modi ortogonali:θ(nlgn)

  1. I codici gratuiti con prefisso ottimale possono essere calcolati più rapidamente se l'insieme di frequenze distinte è piccolo (ad es. Di dimensione ): ordina le frequenze usando [Munro e Spira, 1976] in modo da sfruttare il piccolo valore di σ e calcola Huffman albero in tempo lineare dalle frequenze ordinate. Questo produce una soluzione in O ( n lg σ )σσO(nlgσ)

  2. Esiste un algoritmo per calcolare codici equivalenti in cui k è il numero di lunghezze distinte di parole in codice [Belal ed Elmasry].O(n16k)k

C'è un modo per combinare queste tecniche, al fine di migliorare l'attuale migliore complessità di ?O(nmin{16k,lgσ})


THE RESULT FROM STACS 2006 SEMBRA SBAGLIATOO(nk) , Elmasry ha pubblicato su ARXIV nel 2010 (http://arxiv.org/abs/cs/0509015) una versione che annuncia - operazioni su input non ordinato e - O ( 9 k log 2 k - 1 n ) operazioni su input ordinatoO(16kn)O(9klog2k1n)


  1. Vedo un'analogia con la complessità del calcolo dello scafo convesso planare, in cui gli algoritmi in (basato sull'ordinamento, come l' algoritmo O ( n lg n ) per il codice di Huffman) e in O ( n h ) (confezione regalo ) sono stati sostituiti dall'algoritmo di Kirkpatrick e Seidel in O ( n lg h ) (in seguito si è dimostrato ottimale con la complessità della forma O ( n H ( n 1 , ... , n kO(nlgn)O(nlgn)O(nh)O(nlgh) ). Nel caso dei prefissi Codici liberi, O ( n lg n ) contro O ( n k ) suggerisce la possibilità di un algoritmo con complessità , , n k ) dove n i è il numero di parole in codice di lunghezza i , usando l'analogia di un bordo dello scafo convesso che copre n iO(nH(n1,,nk)O(nlgn)O(nk) , o anche O ( n H ( n 1O(nlgk)O(nH(n1,,nk)niiniindica una lunghezza del codice che copre simboli.ni

  2. Un semplice esempio mostra che l'ordinamento dei valori logaritmici (arrotondati) delle frequenze (in tempo lineare nel modello RAM della parola ) non fornisce un codice libero di prefisso ottimale in tempo lineare: θ(lgn)

    • Per , f 1 = 1 / 2 - ε ed f 2 = f 3 = 1 / 4 + εn=3f1=1/2εf2=f3=1/4+ε
    • quindi l'ordinamento dei registri non cambia ordinelgfi=2
    • tuttavia due codici su tre costano bit in più rispetto all'ottimale.n/4
  3. Un'altra domanda interessante sarebbe quella di ridurre la complessità quando è grande, cioè tutti i codici hanno lunghezze distinte:k

    • per esempio quando le frequenze hanno tutte un valore log distinto. In questo caso è possibile ordinare le frequenze in tempo lineare ink=n parola di RAM, e calcolare il codice di Huffman in tempo lineare (perché l'ordinamento i loro valori di registro è sufficiente per ordinare i valori), con conseguente tempo lineare nel complesso, tanto meglio del n 2 dall'algoritmo di Belal ed Elmasry.θ(lgn)n2

Risposte:


1

Ci sono voluti alcuni anni (cinque!), Ma ecco una risposta parziale alla domanda:

http://arxiv.org/abs/1602.00023

Codici gratuiti prefisso ottimali con ordinamento parziale Jérémy Barbay (inviata il 29 gennaio 2016)

Descriviamo un algoritmo che calcola un prefisso ottimale ottimale per n pesi positivi non ordinati nel tempo entro O (n (1 + lgα)) ⊆O (nlgn), dove l'alternanza α∈ [1..n − 1] misura la quantità di ordinamento richiesto dal calcolo. Questa complessità asintotica rientra in un fattore costante dell'ottimale nel modello computazionale dell'albero delle decisioni algebrico, nel peggiore dei casi su tutte le istanze di dimensione n e alternanza α. Tali risultati perfezionano la complessità allo stato dell'arte di Θ (nlgn) nel peggiore dei casi rispetto alle istanze di dimensione n nello stesso modello computazionale, un punto di riferimento nella compressione e nella codifica dal 1952, dalla semplice combinazione dell'algoritmo di van Leeuwen per calcolare il prefisso ottimale codici liberi da pesi ordinati (noti dal 1976), con Deferred Data Structures per ordinare parzialmente un multiset in base alle query su di esso (note dal 1988).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.