Algoritmul Berlekamp-Massey este o procedură pentru LFSR sinteză; aceasta. găsește cel mai scurt LFSR care va produce secvența dată $s_0, s_1, s_2, \cdots$. Algoritmul este iterativ (nu recursiv, deoarece nu se numește pe sine) prin aceea că examinează secvența câte un simbol până când a procesat întreaga secvență dată. La sfârșitul $i$-a iterație, algoritmul a examinat $s_0, s_1, \cdots, s_{i-1}$ (examinarea $s_i, s_{i+1}, \cdots$ este încă să vină) și a sintetizat cel mai scurt LFSR care va genera $s_0, s_1, \cdots, s_{i-1}$. Apoi, la începutul $(i+1)$-a iterație, algoritmul determină dacă $s_i$ va fi generat de LFSR pe care tocmai l-a găsit calculând ceea ce Următorul ieșire $\hat{s}_i$ ar fi din LFSR tocmai sintetizat și comparându-l cu ceea ce noi vrei LFSR pentru a genera, și anume, dat $s_i$. Diferența se numește discrepanţă $\delta_i$ si daca $\delta_i$ se întâmplă să fie diferit de zero, the anterior-LFSR sintetizat este actualizat astfel încât LFSR actualizat va calcula $s_0, s_1, \cdots, s_{i-1}, {\mathbf s_i}$ (sublinierea adăugată). Această actualizare ar putea crește lungimea LFSR și, de asemenea, poate modifica atingerile de feedback sau doar schimba atingerile de feedback. Se poate dovedi că, dacă o iterație a dus la o creștere a lungimii LFSR și la schimbarea tapelor, atunci chiar la următoarea iterație, doar tapele de feedback s-ar putea schimba; LFSR nu poate crește în lungime.
Pe scurt, nu este nevoie să vă faceți griji cu privire la ceea ce se întâmplă cu discrepanțe anterioare; LFSR actual este garantat că va genera toată secvența examinată până acum fără discrepanțe să se strecoare în timpul procesului de generare.