v teorie kódování, Zemorův algoritmus, navržený a vyvinutý Gillesem Zemorem,[1] je rekurzivní přístup ke konstrukci kódu s nízkou složitostí. Jedná se o vylepšení oproti algoritmu Sipser a Spielman.
Zemor považoval za typickou třídu Sipser – Spielmanovy konstrukce expandér kódy, kde je podkladový graf bipartitní graf. Sipser a Spielman představili konstruktivní rodinu asymptoticky dobrých kódů lineární chyby spolu s jednoduchým paralelním algoritmem, který vždy odstraní konstantní zlomek chyb. Článek je založen na poznámkách k kurzu Dr. Venkatesana Guruswamiho [2]
Konstrukce kódu
Zemorův algoritmus je založen na typu expandérové grafy volala Tannerův graf. Konstrukce kódu byla poprvé navržena Tannerem.[3] Kódy jsou založeny na dvojitý kryt , pravidelný expandér , což je bipartitní graf. =, kde je množina vrcholů a je sada hran a = a = , kde a označuje množinu 2 vrcholů. Nechat být počet vrcholů v každé skupině, tj, . Okraj set být velikosti = a každý okraj dovnitř má jeden koncový bod v obou a . označuje sadu hran obsahující .
Předpokládejme objednání dne , proto bude objednávka provedena na všech okrajích pro každého . Nechat konečné pole a na slovo v , nechte podřízené slovo slova indexovat pomocí . Nechť je toto slovo označeno . Podmnožina vrcholů a vyvolává každé slovo oddíl do nepřekrývající se dílčí slova , kde se pohybuje nad prvky . Pro konstrukci kódu , zvažte lineární subkód , což je kód, kde , velikost abecedy je . Pro jakýkoli vrchol , nechť být nějaké objednání vrcholy přilehlý k . V tomto kódu každý bit je spojen s hranou z .
Můžeme definovat kód být množina binárních vektorů z tak, že pro každý vrchol z , je kódové slovo z . V tomto případě můžeme uvažovat o zvláštním případě, kdy každá hrana sousedí přesně vrcholy . Znamená to, že a tvoří vrcholovou množinu a hranovou množinu běžný graf .
Zavolejme kód takto konstruováno jako kód. Pro daný graf a daný kód , existuje několik kódy, protože existují různé způsoby řazení hran dopadajících na daný vrchol , tj., . Ve skutečnosti náš kód se skládají ze všech kódových slov takových, že pro všechny . Kód je lineární v protože je generován z subkódu , který je lineární. Kód je definován jako pro každého .
Graf G a kód C.
Na tomto obrázku . Zobrazuje graf a kód .
V matici , nechť se rovná druhé největší vlastní hodnota z matice sousedství z . Zde je největší vlastní hodnota . Uvádějí se dvě důležitá tvrzení:
Nárok 1
. Nechat je míra lineárního kódu vytvořeného z bipartitního grafu, jehož číselné uzly mají stupeň a jejichž uzly subkódu mají stupeň . Pokud jeden lineární kód s parametry a hodnotit je spojen s každým z uzlů subkódů .
Důkaz
Nechat je rychlost lineárního kódu, která se rovná Nechť jsou uzly subkódů v grafu. Pokud je stupeň subkódu , pak kód musí mít číslic, ke kterým je připojen každý číslicový uzel z okraje v grafu. Každý uzel subkódu přispívá rovnice pro kontrolu parity pro celkem . Tyto rovnice nemusí být lineárně nezávislé. Proto,
, Protože hodnota , tj. číslicový uzel tohoto bipartitního grafu je a tady , můžeme psát jako:
2. nárok
-
Li je lineární kód rychlosti , délka kódu bloku a minimální relativní vzdálenost , a pokud je graf dopadu vrcholového vrcholu a - pravidelný graf s druhou největší vlastní hodnotou , pak kód má rychlost alespoň a minimální relativní vzdálenost alespoň .
Důkaz
Nechat být odvozen z běžný graf . Takže počet proměnných je a počet omezení je . Podle Alon - Chung,[4] -li je podmnožina vrcholů velikosti , pak je počet hran obsažených v podgrafu vyvolán v je nanejvýš .
Výsledkem je jakákoli sada proměnné budou mít alespoň omezení jako sousedé. Průměrný počet proměnných na omezení je tedy:
Takže když , pak slovo relativní váhy , nemůže být kódovým slovem . Nerovnost je spokojen pro . Proto, nemůže mít nenulové kódové slovo relativní váhy nebo méně.
V matici , můžeme to předpokládat je ohraničen od . Pro tyto hodnoty ve kterém je liché prvočíslo, existují explicitní konstrukce sekvencí - pravidelné bipartitní grafy s libovolně velkým počtem vrcholů, takže každý graf v pořadí je a Ramanujan graf. Říká se tomu graf Ramanujan, protože uspokojuje nerovnost . Určité vlastnosti expanze jsou viditelné v grafu jako oddělení mezi vlastními hodnotami a . Pokud graf je graf Ramanujan, pak tento výraz bude nakonec jako se zvětší.
Zemorův algoritmus
Níže napsaný iterativní dekódovací algoritmus střídá vrcholy a v a opraví kódové slovo z v a poté se přepne a opraví kódové slovo v . Zde hrany spojené s vrcholem na jedné straně grafu nejsou incidenty s jiným vrcholem na této straně. Ve skutečnosti nezáleží na tom, v jakém pořadí, na sadě uzlů a jsou zpracovány. Zpracování vrcholů lze také provádět paralelně.
Dekodér znamená dekodér pro který se správně zotaví s jakýmikoli kódovými slovy s méně než chyby.
Algoritmus dekodéru
Přijaté slovo:
Pro na dělat // je počet iterací
{if ( je liché) // Zde se bude algoritmus střídat mezi dvěma sadami vrcholů.
jiný
Opakování : Pro každého , nechť // Dekódování na nejbližší kódové slovo.
}
Výstup:
Vysvětlení algoritmu
Od té doby je bipartitní, sada vrcholů indukuje rozdělení sady hran = . Sada vyvolá další oddíl, = .
Nechat být přijatým vektorem a připomenout si to . První iterace algoritmu spočívá v použití úplného dekódování kódu vyvolaného pro každého . To znamená, že pro výměnu, pro všechny , vektor jedním z nejbližších kódových slov z . Protože podmnožiny hran jsou disjunktní pro , jejich dekódování subvektory lze provést paralelně.
Iterací se získá nový vektor . Další iterace spočívá v použití předchozího postupu na ale s nahrazen . Jinými slovy, spočívá v dekódování všech subvektorů indukovaných vrcholy . Nadcházející iterace tyto dva kroky opakují a střídavě aplikují paralelní dekódování na subvektory indukované vrcholy a na subvektory indukované vrcholy .
Poznámka: [Li a je tedy úplný bipartitní graf je kód produktu sám se sebou a výše uvedený algoritmus se redukuje na přirozené tvrdé iterativní dekódování produktových kódů].
Zde je počet iterací, je . Obecně může výše uvedený algoritmus opravit kódové slovo, jehož Hammingova hmotnost není větší než pro hodnoty . Zde je dekódovací algoritmus implementován jako obvod velikosti a hloubka který vrací kódové slovo, protože vektor chyby má váhu menší než .
Teorém
Li je graf Ramanujan dostatečně vysokého stupně pro všechny může dekódovací algoritmus opravit chyby, v kola (kde velká notace skrývá závislost na ). To lze implementovat v lineárním čase na jednom procesoru; na procesory každé kolo lze implementovat v konstantním čase.
Důkaz
Protože dekódovací algoritmus je necitlivý na hodnotu hran a lineárností, můžeme předpokládat, že přenášené kódové slovo je all nula - vektor. Nechte přijaté kódové slovo být . Je zohledněna sada hran, která má při dekódování nesprávnou hodnotu. Zde máme na mysli nesprávnou hodnotu v kterékoli z bitů. Nechat být počáteční hodnotou kódového slova, být hodnoty po první, druhé. . . fáze dekódování. Tady, , a . Tady odpovídá těm souborům vrcholů, které nebyly schopny úspěšně dekódovat své kódové slovo v kolo. Z výše uvedeného algoritmu protože počet neúspěšných vrcholů bude opraven v každé iteraci. Můžeme to dokázat je klesající sekvence. . Jak předpokládáme, , výše uvedená rovnice je v a geometrická klesající posloupnost. Takže když , více než kola jsou nutná. Dále , a pokud implementujeme zaokrouhlit čas, pak bude celková sekvenční doba chodu lineární.
Nevýhody Zemorova algoritmu
- Je to zdlouhavý proces jako počet iterací v dekodéru algoritmus trvá
- Zemorův dekódovací algoritmus považuje za obtížné dekódovat vymazání. Podrobný způsob, jak můžeme algoritmus vylepšit, je
uvedeny v.[5]
Viz také
Reference