Berlekamp-Massey algoritm

Berlekamp-Massey-  algoritmen är en algoritm för att hitta det kortaste skiftregistret med linjär återkoppling för en binär sekvens som ges som ingång. Algoritmen låter dig också hitta minimipolynomet för den ingående linjära återkommande sekvensen över ett godtyckligt fält .

Algoritmen upptäcktes av Alvin Berlekamp 1968 [1] . En tillämpning av algoritmen på linjära koder hittades av James Massey följande år [2] . Detta blev nyckeln till den praktiska tillämpningen av Reed-Solomon-koder .

Beskrivning av algoritmen

Algoritm B.M. är en alternativ metod för att lösa SLAE, som kan beskrivas enligt följande:

I kodexemplen nedan representerar C(x) Λ(x). Fellokaliseraren C(x) för L -fel definieras som:

eller bakifrån:

Syftet med algoritmen är att bestämma minimum L och motsvarande C(x), vilket ger fel i hela syndromet

resulterar i noll:

Algoritm: C(x) initieras till 1, L betecknar det aktuella antalet fel som hittills hittats och initieras till noll. N är det totala antalet felsyndromelement. n är huvudräknaren, det är också indexet för syndromelementen från 0 till ( N -1). B(x) är en kopia av den sista C(x) vid tidpunkten för uppdateringen av L , och initieras till 1. b är en kopia av den senaste avvikelsen d (se nedan), återigen, vid tidpunkten för uppdateringen av L och initieras till 1. m är antalet iterationer som har passerat sedan uppdateringen L , B(x) och b och som också initierats till en.

Vid varje iteration beräknas diskrepansen d . Vid den k: te iterationen blir det:

Om d är noll betyder det att C(x) och L är korrekta för närvarande, det räcker med att öka m och fortsätta iterationen.

Om d inte är noll, korrigerar algoritmen C(x) för att sätta d till noll :

Multiplicering med x m är i huvudsak en förskjutning av B(x)-koefficienterna med m, dvs varje koefficient sker m högre för att matcha syndromet för b . Om senaste gången L uppdaterades vid iteration j (och nu har vi den k: te iterationen), då är m = k - j , och den omräknade avvikelsen är:

Det vill säga, genom att ersätta, ser vi att det försvinner:

Dessutom måste värdet på L (antalet fel hittade) ibland korrigeras. Om L är lika med det faktiska antalet felaktiga symboler, så nollställs avvikelserna under iterationerna innan n blir större än eller lika med (2 L ). Annars uppdateras L och algoritmen uppdaterar B(x), b, L själv (ökar) och m återställs till 1. Uttrycket L = (n + 1 - L) begränsar L till antalet tillgängliga syndromelement som används för att beräkna avvikelserna, och löser samtidigt problemet med att öka L med mer än ett.

Exempelkod

Algoritm från Massey (1969 , s. 124):

polynom ( fält K ) s ( x ) = ... /* koeffs är s_j; utdatasekvens som N-1 grads polynom) */ /* anslutningspolynom */ polynom ( fält K ) C ( x ) = 1 ; /* koeffs är c_j */ polynom ( fält K ) B ( x ) = 1 ; int L = 0 ; int m = 1 ; fält Kb = 1 ; _ int n ; /* steg 2. och 6. */ för ( n = 0 ; n < N ; n ++ ) { /* steg 2. beräkna avvikelse */ fält Kd = s_n + \ Sigma_ { i = 1 } ^ L c_i * s_ { n - i } ; om ( d == 0 ) { /* steg 3. avvikelsen är noll; förintelsen fortsätter */ m = m + 1 _ } annat om ( 2 * L <= n ) { /* steg 5. */ /* tillfällig kopia av C(x) */ polynom ( fält K ) 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 ; } annan { /* steg 4. */ C ( x ) = C ( x ) -db ^ { - 1 } x ^ mB ( x ) ; _ m = m + 1 _ } } retur L ;

Algoritm för binära sekvenser

  • Ställ in önskad bitsekvens .
  • Skapa arrayer , , längder , ställ in initiala värden , , , , .
  • Hejdå :
    1. Beräkna .
    2. Om , då genererar den aktuella funktionen den valda delen av sekvensen; lämna funktionen densamma.
    3. Om :
      • Spara en kopia av arrayen i .
      • Beräkna nya värden .
      • Om , ställ in värden och kopiera till .
    4. .
  • Som ett resultat är matrisen  en återkopplingsfunktion, det vill säga för alla .

Anteckningar

  1. Elwyn R. Berlekamp , ​​Algebraic Coding Theory, New York: McGraw-Hill, 1968. Reviderad upplaga, Aegean Park Press, 1984, ISBN 0-89412-063-8 .
  2. JL Massey , Shift-register syntes och BCH-avkodning Arkiverad 27 september 2011 på Wayback Machine , IEEE Trans. Information Theory, IT-15 (1969), 122-127.

Litteratur

  • Blahut R. Teori och praktik av felkontrollkoder. — M .: Mir , 1986. — 576 sid.
  • VL Kurakin, AS Kuzmin, AV Mikhalev, AA Nechaev. Linjära återkommande sekvenser över ringar och moduler. // I. of Math. Vetenskap. Samtida matematik. och det är Appl. Tematiska undersökningar, vol. 10, 1994, I. of Math. Sciences, vol. 76, nr 6, 1995. MR : 1365809

Länkar

Implementering