ในอัลกอริทึม Welch-Berlekamp สำหรับการถอดรหัสรหัส Reed-Solomon หนึ่งจะได้รับรายการของจุดแสดงถึงข้อความที่มีข้อผิดพลาดในในสถานที่ที่ไม่รู้จัก (และมอบให้กับอัลกอริทึม) ผลลัพธ์คือพหุนามผ่านจุดที่กำหนดทั้งหมดยกเว้นที่เกิดข้อผิดพลาด
วิธีนี้เกี่ยวข้องกับการแก้ระบบสมการเชิงเส้นของแบบฟอร์ม
สำหรับทุกที่มีปริญญาและมีการศึกษาระดับที่มากที่สุด k ตัวแปรที่มีค่าสัมประสิทธิ์ของและQ
เพื่อให้แน่ใจว่ามีระดับหนึ่งมักจะเพิ่มข้อ จำกัด ที่สัมประสิทธิ์ของเป็น 1 กับระบบเชิงเส้นด้านบน แต่ในทางปฏิบัติอย่างใดอย่างหนึ่งไม่จำเป็นต้องรู้ว่าอีวิธีหนึ่งที่ไม่มีประสิทธิภาพ (แต่ยังคงเป็นพหุนาม) วิธีที่จะจัดการกับสิ่งนี้คือลองสำหรับค่าทั้งหมดที่เริ่มต้นด้วยจะลดลงจนกว่าจะพบวิธีแก้ปัญหา
คำถามของฉันคือ: มีวิธีที่มีประสิทธิภาพมากขึ้นเพื่อกำหนด ? อีกวิธีหนึ่งมีการปรับเปลี่ยนระบบเชิงเส้นที่อนุญาตให้หนึ่งใช้ขอบเขตบนบนแทนค่าที่แน่นอน?
โดยเฉพาะฉันต้องการใช้ตัวถอดรหัสนี้สำหรับรหัส Reed-Solomon และไม่ใช่อัลกอริทึมที่แตกต่างอย่างสิ้นเชิงตามเทคนิคอื่น ๆ
เพื่อตอบสนองต่อคำตอบของ DW นี่คือตัวอย่างการทำงานของฉัน ทุกอย่างเสร็จสิ้นแบบโมดูโล 7
plain message is: [2, 3, 2]
polynomial is: 2 + 3 t^1 + 2 t^2
encoded message is: [[0, 2], [1, 0], [2, 2], [3, 1], [4, 4]]
corrupted message is: [[0, 2], [1, 0], [2, 3], [3, 1], [4, 4]]
ดังนั้นข้อผิดพลาดอยู่ในจุดที่สาม
เมื่อสมการพหุนามมีปัญหา
และการเสียบให้ระบบในรูปแบบเมทริกซ์:
[2, 0, 0, 6, 0, 0, 0, 0, 0]
[0, 0, 0, 6, 6, 6, 6, 6, 0]
[3, 6, 5, 6, 5, 3, 6, 5, 0]
[1, 3, 2, 6, 4, 5, 1, 3, 0]
[4, 2, 1, 6, 3, 5, 6, 3, 0]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
แถวสุดท้ายเป็นข้อ จำกัด ที่1 ใช้การกำจัดแบบเกาส์เราได้
[1, 0, 0, 0, 0, 0, 1, 4, 0]
[0, 1, 0, 0, 0, 0, 3, 3, 1]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
[0, 0, 0, 1, 0, 0, 2, 1, 0]
[0, 0, 0, 0, 1, 0, 2, 2, 5]
[0, 0, 0, 0, 0, 1, 4, 5, 2]
และเลือก 1 สำหรับตัวแปรอิสระทั้งคู่ที่เราได้เวกเตอร์ของ
[2, 2, 1, 4, 1, 0, 1, 1]
ซึ่งแปลว่า
E is 2 + 2 t^1 + 1 t^2
Q is 4 + 1 t^1 + 0 t^2 + 1 t^3 + 1 t^4
และไม่ได้แบ่งQโปรดทราบว่าปัจจัยเป็น
สำหรับฉันได้คำตอบที่ดี:
system is:
[2, 0, 6, 0, 0, 0, 0]
[0, 0, 6, 6, 6, 6, 0]
[3, 6, 6, 5, 3, 6, 0]
[1, 3, 6, 4, 5, 1, 0]
[4, 2, 6, 3, 5, 6, 0]
[0, 1, 0, 0, 0, 0, 1]
reduced system is:
[1, 0, 0, 0, 0, 0, 5]
[0, 1, 0, 0, 0, 0, 1]
[0, 0, 1, 0, 0, 0, 3]
[0, 0, 0, 1, 0, 0, 3]
[0, 0, 0, 0, 1, 0, 6]
[0, 0, 0, 0, 0, 1, 2]
solution is [5, 1, 3, 3, 6, 2]
Q is 3 + 3 t^1 + 6 t^2 + 2 t^3
E is 5 + 1 t^1
P(x) = 2 + 3 t^1 + 2 t^2 # this is correct!
r(x) = 0
โปรดทราบว่าในขณะที่ตัวอย่างโค้ดด้านบนสร้างขึ้นโดยรหัสที่ฉันเขียนตั้งแต่เริ่มแรก (โดยพื้นฐานแล้วเป็นสิ่งแรกที่ฉันลอง) แต่สามารถตรวจสอบวิธีแก้ไขได้ด้วยมือดังนั้นแม้ว่ารหัสของฉันจะเป็นรถก็ยังเป็นตัวอย่างที่ถูกต้อง ว่าการใช้งาน