Nguồn gốc và ứng dụng rộng hơn
Mã Reed–Solomon được Irving S. Reed và Gustave Solomon mô tả năm 1960. Chúng hoạt động trên toàn bộ ký hiệu, thường là byte, thay vì từng bit đơn lẻ, nên xử lý tốt các đợt hư hại liên tiếp như vết xước hay vết bẩn.
Cùng họ mã này bảo vệ dữ liệu trên đĩa CD, DVD và Blu-ray, trong một số đường truyền truyền hình số và vệ tinh, và trong các mã vạch 2D khác gồm Data Matrix ECC 200, mã Aztec và PDF417.
Mã QR dùng nó thế nào
Mã QR coi mỗi từ mã 8 bit là một phần tử của trường hữu hạn GF(256), xây dựng bằng đa thức nguyên thủy x^8 + x^4 + x^3 + x^2 + 1 (hex 0x11D). Các từ mã dữ liệu được chia cho một đa thức sinh, và phần dư trở thành các từ mã sửa lỗi nối vào sau chúng.
Mã lớn hơn chia dữ liệu thành nhiều khối, mỗi khối có từ mã sửa lỗi riêng. Các khối sau đó được xen kẽ khi đặt từ mã vào lưới, để một vết hỏng được dàn ra nhiều khối thay vì đè nặng lên một khối.
Nó sửa được bao nhiêu
Với n từ mã sửa lỗi trong một khối, bộ giải mã có thể sửa tối đa n/2 từ mã có vị trí chưa biết, hoặc tối đa n từ mã có vị trí đã biết, gọi là xóa (erasure). Các trường hợp hỗn hợp theo quy tắc mỗi lỗi tính hai lần và mỗi lần xóa tính một lần.
Vì vậy mã có vùng sạch, phẳng bị logo che vẫn quét được: một đầu đọc thông minh có thể coi vùng bị che là các vị trí bị xóa, còn hư hại ngẫu nhiên khó sửa hơn vì bộ giải mã trước hết phải tìm ra nó.
- Lỗi không biết vị trí: tối đa một nửa số từ mã EC
- Xóa (vị trí đã biết): tối đa bằng số từ mã EC
- Trường: GF(256), đa thức 0x11D
- Các khối được xen kẽ để dàn trải hư hại liên tiếp