Berlekamp-Massey algoritmus

A Berlekamp-Massey  algoritmus egy olyan algoritmus, amely a legrövidebb lineáris visszacsatolású eltolási regisztert keresi egy bemenetként megadott bináris sorozathoz. Az algoritmus azt is lehetővé teszi, hogy megtalálja a bemeneti lineáris ismétlődő sorozat minimális polinomját egy tetszőleges mezőn .

Az algoritmust Alvin Berlekamp fedezte fel 1968-ban [1] . Az algoritmus lineáris kódokra való alkalmazását James Massey találta meg a következő évben [2] . Ez lett a kulcs a Reed-Solomon kódexek gyakorlati alkalmazásához .

Az algoritmus leírása

Algoritmus B.M. egy alternatív módszer az SLAE megoldására, amely a következőképpen írható le:

Az alábbi kódpéldákban C(x) jelentése Λ(x). A C(x) hibakereső L hiba esetén a következőképpen definiálható:

vagy hátulról előre:

Az algoritmus célja a minimum L és a hozzá tartozó C(x) meghatározása, ami a teljes szindrómában hibákat ad.

nullát eredményez:

Algoritmus: C(x) inicializálása 1, L az eddig talált hibák aktuális számát jelöli, és nullára inicializálva. N a hibaszindróma elemek teljes száma. n a fő számláló, egyben a szindrómaelemek indexe 0-tól ( N -1-ig). B(x) az utolsó C(x) másolata L frissítése idején , és 1-re van inicializálva. b az utolsó d eltérés másolata (lásd alább), ismét az L frissítése idején, és m az L , B(x) és b frissítés óta eltelt iterációk száma, és szintén eggyel inicializálva van .

Minden iterációnál kiszámítjuk a d eltérést . A k- adik iterációnál ez lesz:

Ha d nulla, az azt jelenti, hogy C(x) és L egyenlőre helyes, elegendő m -et növelni és folytatni az iterációt.

Ha d értéke nem nulla, az algoritmus korrigálja a C(x)-et, és d -t nullára állítja :

Az x m -rel való szorzás lényegében a B(x) együtthatók m-rel való eltolását jelenti, azaz minden együttható m-rel magasabban helyezkedik el, hogy megfeleljen a b szindrómának . Ha legutóbb a j iterációnál frissítették az L-t (és most megvan a k -edik iteráció), akkor m = k - j , és az újraszámított eltérés a következő:

Vagyis helyettesítve azt látjuk, hogy eltűnik:

Ezenkívül az L értékét (a talált hibák száma) néha javítani kell. Ha L egyenlő a hibás szimbólumok tényleges számával, akkor az iterációk során az eltérések nullázódnak, mielőtt n nagyobb vagy egyenlő lesz, mint (2 L ). Ellenkező esetben az L frissítésre kerül, és az algoritmus frissíti a B(x), b-t, magát az L-t (növekmény), és m visszaáll 1-re. Az L = (n + 1 - L) kifejezés korlátozza az L-t a felhasznált elérhető szindrómaelemek számára. az eltérések kiszámításához, és egyúttal megoldja az L eggyel növelésének problémáját.

Mintakód

Massey algoritmusa (1969 , 124. o.):

polinom ( K mező ) s ( x ) = ... /* együtthatók s_j; kimeneti sorozat N-1 fokos polinomként) */ /* kapcsolati polinom */ polinom ( K mező ) C ( x ) = 1 ; /* a koefficiensek c_j */ polinom ( K mező ) B ( x ) = 1 ; int L = 0 ; int m = 1 ; mező K b = 1 ; int n ; /* 2. és 6. lépés. */ for ( n = 0 ; n < N ; n ++ ) { /* 2. lépés: eltérés kiszámítása */ mező K d = s_n + \ Sigma_ { i = 1 } ^ L c_i * s_ { n - i }; ha ( d == 0 ) { /* lépés 3. az eltérés nulla; a megsemmisítés folytatódik */ m = m + 1_ _ } különben ha ( 2 * L <= n ) { /* 5. lépés. */ /* a C(x) ideiglenes másolata */ polinom ( K mező ) T ( x ) = C ( x ); C ( x ) = C ( x ) -db ^ { - 1 } x ^ mB ( x ) ; _ L = n + 1 - L ; B ( x ) = T ( x ); b = d ; m = 1 ; } más { /* 4. lépés. */ C ( x ) = C ( x ) -db ^ { - 1 } x ^ mB ( x ) ; _ m = m + 1_ _ } } vissza L ;

Algoritmus bináris sorozatokhoz

  • Állítsa be a kívánt bitsorozatot .
  • Hozzon létre , , hosszúságú tömböket , állítsa be a kezdeti értékeket , , , , .
  • Viszlát :
    1. Számolja ki .
    2. Ha , akkor az aktuális függvény generálja a sorozat kiválasztott szakaszát; hagyja a funkciót változatlan.
    3. Ha :
      • Mentse el a tömb másolatát ide : .
      • Számítsa ki az új értékeket .
      • Ha , állítsa be az értékeket , és másolja ide .
    4. .
  • Ennek eredményeként a tömb  visszacsatolási függvény, azaz bármely .

Jegyzetek

  1. Elwyn R. Berlekamp , ​​Algebraic Coding Theory, New York: McGraw-Hill, 1968. Átdolgozott kiadás, Aegean Park Press, 1984, ISBN 0-89412-063-8 .
  2. JL Massey , Shift-register szintézis és BCH dekódolás Archiválva : 2011. szeptember 27., a Wayback Machine , IEEE Trans. Információelmélet, IT-15 (1969), 122-127.

Irodalom

  • Blahut R. A hibaellenőrző kódok elmélete és gyakorlata. — M .: Mir , 1986. — 576 p.
  • VL Kurakin, AS Kuzmin, AV Mikhalev, AA Nechaev. Lineáris ismétlődő sorozatok gyűrűk és modulok felett. // I. of Math. Tudomány. Kortárs matematika. és ez az Appl. Tematikus felmérések, vol. 10, 1994, I. of Math. Sciences, vol. 76, 6. szám, 1995. MR : 1365809

Linkek

Megvalósítás