InfElmTetel9

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:00-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|InfElmTetel9}} vissza InfelmTetelek-hez <style> li {margin-top: 4px; margin-bottom: 4px;} </style> ==Shannon-Fano kód== S…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


vissza InfelmTetelek-hez <style> li {margin-top: 4px; margin-bottom: 4px;} </style>

Shannon-Fano kód

Szeretnénk kódolni egy [math] X [/math] valószínűségi változót, amelynek eloszlása a következő. (Ha a következő nem teljesül, átindexeljük.)

Feltesszük, hogy [math]p(x_1) \geq p(x_2) \geq \ldots \geq p(x_n) \gt 0[/math].

[math]w_i[/math] az (i-1) legnagyobb valószínűségű érték valószínűségeinek összege, amire a kódoláshoz szükségünk lesz.
Legyen
[math] w_1 = 0 [/math]
[math] w_i = \sum_{l=1}^{i-1}{p(x_l)} [/math]
ahol [math]i = 2 \ldots n[/math].

Felírjuk [math]w_i[/math] számokat [math]s[/math]-alapú számrendszerben, a [math]w_j[/math]-hez tartozó törtet olyan pontosságig, ahol először különbözik a többi [math]w_i[/math], [math]w_i \neq w_j[/math] felírástól. Az így kapott [math]n[/math] db véges hosszú törtből elhagyjuk az egészrészt, ez lesz [math]f(x_i)[/math]. Az így kapott kód prefix, és [math] E|f(X)| \lt \frac{H(X)}{\log{s}} + 1 [/math]

Látható, hogy minden kódolásnál kevesebb mint egy kódbetű "veszik el", ezért célszerű minél nagyobb blokkméretet használni. A blokkméret növelésével az átlagos kódszóhosszra vonatkozó alsó határ tetszőlegesen megközelíthető. -- Sales - 2006.06.23.

TODO: ez nem bizonyítás! Én nem is fogom ideírni:) TK-ban megvan illetve: jogvédett, de elektronikus formában elérhető anyag
Algoritmus másképpen, ahogy digitből is tanultuk és ahogy könyebb elképzelni:

  • 0/1 kiegészítgetés*:
    A Shannon-Fano kód konstruálása során fát építhetünk(Legyen bináris a fa; s = 2). A valószínűségeken rendezés adott, ahogy a Shannon-kódnál. A rendezett sorozatot kétfelé vágjuk, hogy a két rész összsúlya(valószínűségek összege) a lehető legközelebb legyen egymáshoz. A két szakaszt jelezzük 0-val illetve 1-el a fa két új csúcsában(a gyökér alá téve ezeket) ami a sorozatot reprezentálja ezek után. Ez rekurzívan (a sorozat szétbontása a sorozathoz tartozó csúcs alá kerül, mint új gyökér alá) amíg egy elemű sorozatokat kapunk. A kódszavakat kiolvashatjuk, ha a gyökértől a levélekig bejárjuk az utakat, és kiolvassuk a csúcsokba írt számot(0/1).

-- hippi - 2007.06.13.