1237134
Thuật toán Berlekamp–Massey
https://vi.wikipedia.org/wiki?curid=1237134
Title: Thuật toán Berlekamp–Massey
Nếu "d" bằng 0, thuật toán giả sử rằng C(x) và L hiện tại vẫn đúng, tăng "m", và tiếp tục.
Nếu "d" khác 0, thuật toán thay đổi C(x) sao cho khi tính lại thì "d" bằng 0:
Thừa số xm "dịch" B(x) đi "m" vị trí nên nó nhận giá trị ứng với "b". Nếu lần cuối cùng L thay đổi là ở lần lặp thứ "j", thì "m = k - j", và giá trị sai lệch tính lại sẽ là:
Vì vậy, giá trị sai lệch mới là:
Thuật toán cũng tăng giá trị "L" (số lỗi) nếu cần. Nếu "L" đúng bằng số lỗi thì trong quá trình lặp, tất cả các giá trị sai lệch sẽ trở thành 0 trước khi "n" lớn hơn hoặc bằng (2 "L"). Nếu giả thiết này không đúng, thuật toán tăng L và cập nhật giá trị B(x), b, tăng L, và khởi tạo lại m = 1. Công thức L = (n + 1 - L) giới hạn giá trị L nhỏ hơn hoặc bằng số giá trị hội chứng đã cho, và cũng giải quyết trường hợp tăng L nhiều hơn 1.
Thuật toán cho trường nhị phân.
Dưới đây là thuật toán Berlekamp–Massey cho trường hợp đặc biệt phổ biến là trường hữu hạn F2 và GF(2). Các phần tử của trường là 0 và 1. Trong trường này, các toán tử + và − là tương đương và trở thành toán tử hoặc loại trừ XOR. Toán tử nhân * trở thành toán tử lôgic AND. Phép chia trở thành toán tử đồng nhất (nghĩa là phép chia chỉ được định nghĩa cho giá trị 1, và x/1 = x).
Sau khi thuật toán thực hiện xong, formula_32 là chiều dài của LFSR ngắn nhất sinh ra dữ liệu vào, và ta có formula_36 với mọi formula_37.
Mã Java cho trường hợp trường nhị phân.
Mã ví dụ dưới đây là cho trường hợp trường nhị phân.
 public static int runTest(int[] array) {
 final int N = array.length;
 int[] b = new int[N];
 int[] c = new int[N];
 int[] t = new int[N];