انتقل إلى المحتوى

تصحيح خطأ ريد-سولومون

هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها
من ويكيبيديا، الموسوعة الحرة
تصحيح خطأ ريد-سولومون
معلومات عامة
صنف فرعي من
سُمِّي باسم
تاريخ النشر
1960 عدل القيمة على Wikidata
يدرسه
المكتشف أو المخترع

في نظرية المعلومات ونظرية الترميز، تُعد رموز ريد–سولومون مجموعة من رموز تصحيح الأخطاء التي قدمها إيرفينج إس. ريد وجوستاف سولومون في عام 1960.[1] لها العديد من التطبيقات، بما في ذلك تقنيات المستهلك مثل أقراص صغيرة  [لغات أخرى]‏، والأقراص المضغوطة، وأقراص دي في دي، وأقراص بلو راي، ورموز الاستجابة السريعة، ومصفوفة البيانات، وتقنيات نقل البيانات مثل الخط المشترك الرقمي وواي ماكس، وأنظمة البث مثل الاتصالات عبر الأقمار الصناعية، و بي في دي وهيئة أنظمة التلفزيون المتطورة، وأنظمة التخزين مثل ريد 6.

تعمل أكواد ريد–سولومون على كتلة من البيانات يتم التعامل معها كمجموعة من عناصر المجال المحدود تسمى الرموز. تتمتع رموز ريد–سولومون بالقدرة على اكتشاف أخطاء الرموز المتعددة وتصحيحها. من خلال إضافة رموز التحقق t = nk إلى البيانات، يمكن لكود ريد–سولومون اكتشاف (ولكن ليس تصحيح) أي مجموعة من الرموز الخاطئة حتى t، أو تحديد وتصحيح ما يصل إلى t/2⌋ من الرموز الخاطئة في مواقع غير معروفة. باعتباره رمز مسح  [لغات أخرى]‏، فإنه يمكنه تصحيح ما يصل إلى t عمليات مسح في المواقع المعروفة والمقدمة للخوارزمية، أو يمكنه اكتشاف وتصحيح مجموعات من الأخطاء والمسح. تعتبر أكواد ريد–سولومون مناسبة أيضًا كأكواد تصحيح أخطاء البتات متعددة الانفجارات، حيث أن تسلسل b + 1يمكن أن يؤثر خطأ بت b + 1 متتالي على رمزين بحجم b كحد أقصى. يعود اختيار t إلى مصمم الكود، ويمكن تحديده ضمن حدود واسعة.

هناك نوعان أساسيان من رموز ريد–سولومون – العرض الأصلي وعرض بي سي إتش – مع كون عرض بي سي إتش هو الأكثر شيوعًا، حيث أن فك تشفير عرض بي سي إتش أسرع ويتطلب مساحة تخزين عمل أقل من فك تشفير العرض الأصلي.

التاريخ

[عدل]

تم تطوير رموز ريد–سولومون في عام 1960 من قبل إيرفينج إس. ريد وجوستاف سولومون، اللذين كانا آنذاك من أعضاء هيئة التدريس في مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا. كان عنوان مقالهم الرائد «الرموز متعددة الحدود على حقول محدودة معينة».[1] استخدم مخطط الترميز الأصلي الموصوف في مقال ريد وسولومون متعدد الحدود المتغير استنادًا إلى الرسالة التي يجب ترميزها حيث تكون مجموعة ثابتة فقط من القيم (نقاط التقييم) التي يجب ترميزها معروفة للمشفر وفك التشفير. قام فك التشفير النظري الأصلي بإنشاء كثيرات حدود محتملة استنادًا إلى مجموعات فرعية من k (طول الرسالة غير المشفرة) من بين n (طول الرسالة المشفرة) من قيم الرسالة المستلمة، واختيار كثير الحدود الأكثر شيوعًا باعتباره الصحيح، وهو ما كان غير عملي في جميع الحالات باستثناء أبسطها. تم حل هذه المشكلة في البداية عن طريق تغيير المخطط الأصلي إلى مخطط يشبه رمز بي سي إتش يعتمد على كثير حدود ثابت معروف لكل من المشفر وفك التشفير، ولكن في وقت لاحق، تم تطوير أجهزة فك تشفير عملية تعتمد على المخطط الأصلي، على الرغم من أنها أبطأ من مخططات بي سي إتش. النتيجة هي وجود نوعين رئيسيين من رموز ريد–سولومون: تلك التي تستخدم مخطط الترميز الأصلي وتلك التي تستخدم مخطط ترميز بي سي إتش.

في عام 1960 أيضًا، تم وصف فك تشفير متعدد الحدود عملي ثابت لرموز بي سي إتش الذي طوره دانييل جورنشتاين ونيل زيرلر في تقرير صادر عن مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا بواسطة زيرلر في يناير 1960 وفي وقت لاحق في مقال في يونيو 1961.[2] تم وصف فك تشفير جورنشتاين-زيرلر والعمل المرتبط به على رموز بي سي إتش في كتاب «رموز تصحيح الأخطاء» بقلم و. ويزلي بيترسون (1961).[3][بحاجة لرقم الصفحة] بحلول عام 1963 (أو ربما قبل ذلك)، كان جيه جيه ستون (وآخرون) أدرك أن رموز ريد–سولومون يمكنها استخدام مخطط بي سي إتش باستخدام متعدد الحدود المولد الثابت، مما يجعل مثل هذه الرموز فئة خاصة من رموز بي سي إتش،[4] ولكن رموز ريد–سولومون المستندة إلى مخطط الترميز الأصلي ليست فئة من رموز بي سي إتش، واعتمادًا على مجموعة نقاط التقييم، فهي ليست حتى رموزًا دورية  [لغات أخرى]‏.

في عام 1969، تم تطوير فك تشفير مخطط بي سي إتش المحسن بواسطة إلوين بيرليكامب وجيمس ماسي ومنذ ذلك الحين أصبح يُعرف باسم خوارزمية فك تشفير بيرليكامب-ماسي  [لغات أخرى]‏.

في عام 1975، تم تطوير فك تشفير مخطط بي سي إتش محسن آخر بواسطة ياسو سوجياما، استنادًا إلى خوارزمية إقليدية موسعة.[5]

في عام 1977، تم تنفيذ أكواد ريد–سولومون في برنامج فوييجر في شكل أكواد تصحيح الأخطاء المتسلسلة  [لغات أخرى]‏. ظهر أول تطبيق تجاري في المنتجات الاستهلاكية المنتجة بكميات كبيرة في عام 1982 مع القرص المضغوط، حيث تم استخدام رمزين متداخلين من نوع ريد–سولومون. اليوم، يتم تنفيذ أكواد ريد–سولومون على نطاق واسع في أجهزة التخزين الرقمية ومعايير الاتصالات الرقمية، على الرغم من استبدالها ببطء بأكواد بوز-تشودهوري-هوكوينغيم (بي سي إتش). على سبيل المثال، يتم استخدام رموز ريد–سولومون في معيار البث الرقمي للفيديو (بي في دي) معيار بث الفيديو الرقمي فضائيا، بالاشتراك مع رمز داخلي ملتف، ولكن يتم استخدام رموز بي سي إتش مع إل دي بي سي  [لغات أخرى]‏ في خليفته، معيار بي في دي-إس2.

في عام 1986، تم تطوير فك تشفير المخطط الأصلي المعروف باسم خوارزمية بيرليكامب-ويلش  [لغات أخرى]‏.

في عام 1996، تم تطوير أشكال مختلفة من أجهزة فك التشفير الأصلية والتي تسمى أجهزة فك التشفير القائمة أو أجهزة فك التشفير الناعمة بواسطة مادو سودان وآخرين، ويستمر العمل على هذه الأنواع من أجهزة فك التشفير (انظر خوارزمية فك تشفير القائمة جوروسوامي-سودان  [لغات أخرى]‏).

في عام 2002، تم تطوير فك تشفير مخطط أصلي آخر بواسطة شوهونج جاو، استنادًا إلى خوارزمية إقليدية ممتدة.[6]

التطبيقات

[عدل]

تخزين البيانات

[عدل]

يتم استخدام تشفير ريد–سولومون على نطاق واسع في أنظمة التخزين الشامل لتصحيح أخطاء الانفجار المرتبطة بعيوب الوسائط.

يعتبر تشفير ريد–سولومون أحد المكونات الأساسية للقرص المضغوط. كان هذا أول استخدام لترميز تصحيح الأخطاء القوي في منتج استهلاكي يتم إنتاجه بكميات كبيرة، وتستخدم دات ودي في دي مخططات مماثلة. في القرص المضغوط، يتم فصل طبقتين من ترميز ريد–سولومون بواسطة متداخل ملتف ذي 28 اتجاهًا مما ينتج عنه مخطط يسمى ترميز ريد–سولومون المتداخل المتقاطع (ترميز ريد–سولومون المتداخل  [لغات أخرى]‏). العنصر الأول في فك تشفير ترميز ريد–سولومون المتداخل هو رمز ريد–سولومون الداخلي الضعيف نسبيًا (32،28)، والذي تم اختصاره من رمز (255،251) برموز مكونة من 8 بت. يمكن لهذا الكود تصحيح أخطاء تصل إلى 2 بايت لكل كتلة مكونة من 32 بايت. والأمر الأكثر أهمية هو أنه يقوم بتمييز أي كتل غير قابلة للتصحيح على أنها محذوفة، أي الكتل التي تحتوي على أخطاء أكبر من 2 بايت. يتم بعد ذلك نشر الكتل المفكوكة المكونة من 28 بايتًا، مع مؤشرات المسح، بواسطة مزيل التداخل إلى كتل مختلفة من الكود الخارجي (28،24). بفضل إزالة التداخل، تصبح كتلة ممسوحة مكونة من 28 بايتًا من الكود الداخلي بايتًا ممسوحًا واحدًا في كل كتلة من كتل الكود الخارجية البالغ عددها 28 بايتًا. يقوم الكود الخارجي بتصحيح هذه المشكلة بسهولة، لأنه يمكنه التعامل مع ما يصل إلى 4 عمليات مسح من هذا القبيل لكل كتلة.

النتيجة هي ترميز ريد–سولومون المتداخل الذي يمكنه تصحيح أخطاء تصل إلى 4000 بت، أو حوالي 2.5 ملم على سطح القرص. هذا الكود قوي جدًا لدرجة أن معظم أخطاء تشغيل الأقراص المضغوطة ناجمة على الأرجح عن أخطاء التتبع التي تتسبب في خروج الليزر عن المسار، وليس عن طريق انفجارات الأخطاء غير القابلة للتصحيح.[7]

تستخدم أقراص دي في دي مخططًا مشابهًا، ولكن مع كتل أكبر بكثير، وكود داخلي (208,192)، وكود خارجي (182,172).

يتم استخدام تصحيح خطأ ريد–سولومون أيضًا في ملفات بارشيف والتي يتم نشرها عادةً مع ملفات الوسائط المتعددة على يوزنت. كما استخدمت خدمة التخزين عبر الإنترنت الموزعة ووالا (التي تم إيقافها في عام 2015) أيضًا ريد–سولومون عند تقسيم الملفات.

الرمز الشريطي

[عدل]

تستخدم جميع الرموز الشريطية ثنائية الأبعاد تقريبًا مثل بي دي إف-417 وماكسي كود  [لغات أخرى]‏ ورمز مصفوفي ورمز استجابة سريعة وشفرة الأزتك  [لغات أخرى]وهان إكس في الكود  [لغات أخرى]‏ تصحيح خطأ ريد–سولومون للسماح بالقراءة الصحيحة حتى في حالة تلف جزء من الرمز الشريطي. عندما لا يتمكن ماسح الباركود من التعرف على رمز الباركود، فسوف يعامله على أنه مسح.

يعد ترميز ريد–سولومون أقل شيوعًا في الرموز الشريطية أحادية البعد، ولكن يتم استخدامه بواسطة رمزية بوست بار  [لغات أخرى]‏.

نقل البيانات

[عدل]

يمكن استخدام الأشكال المتخصصة من رموز ريد–سولومون، وتحديدًا كوشي-آر إس و فاندرموند-آر إس، للتغلب على الطبيعة غير الموثوقة لنقل البيانات عبر قنوات المسح. تفترض عملية الترميز رمز آر إس (N، K) مما يؤدي إلى إنشاء N كلمة رمزية بطول N رمز، كل منها يخزن K رمزًا من البيانات، والتي يتم إرسالها بعد ذلك عبر قناة مسح.

إن أي مجموعة من الكلمات الرمزية (K) التي تم تلقيها في الطرف الآخر تكون كافية لإعادة بناء كل الكلمات الرمزية (N). يتم عادةً ضبط معدل الترميز على 1/2 ما لم يكن من الممكن نمذجة احتمالية محو القناة بشكل مناسب ورؤيتها أقل. في الختام، يكون N عادةً 2 K، مما يعني أنه يجب استلام نصف جميع كلمات المرور المرسلة على الأقل من أجل إعادة بناء جميع كلمات المرور المرسلة.

تُستخدم أكواد ريد–سولومون أيضًا في أنظمة الخط المشترك الرقمي ومواصفات بروتوكول الاتصالات الفضائية  [لغات أخرى]‏ الخاصة بـ سي سي إس دي إس كشكل من أشكال تصحيح الأخطاء الأمامية.

النقل الفضائي

[عدل]
نظام ترميز متسلسل في الفضاء العميق.[8] التدوين: آر إس (255، 223) + سي سي («طول القيد» = 7، معدل الترميز = 1/2).

كان أحد التطبيقات المهمة لتشفير ريد–سولومون هو تشفير الصور الرقمية التي أرسلها برنامج فوييجر.

قدمت مركبة فوييجر تشفير ريد–سولومون المترابط مع الأكواد التلافيفية  [لغات أخرى]‏، وهي ممارسة أصبحت منذ ذلك الحين منتشرة على نطاق واسع في الفضاء العميق والاتصالات عبر الأقمار الصناعية (على سبيل المثال، البث الرقمي المباشر).

تميل أجهزة فك تشفير فيتربي  [لغات أخرى]‏ إلى إنتاج أخطاء في دفعات قصيرة. إن تصحيح أخطاء الانفجار هذه هو المهمة التي يمكن إنجازها على أفضل وجه باستخدام أكواد ريد–سولومون القصيرة أو المبسطة.

كانت الإصدارات الحديثة من الترميز التلافيفي المتسلسل المفكوك بواسطة ريد–سولومون/فيتربي تُستخدم ولا تزال تُستخدم في بعثات مارس باثفايندر، وجاليليو، ومركبة استكشاف المريخ، وكاسيني، حيث تعمل ضمن حوالي 1-1.5 ديسيبل من الحد الأقصى، وهو سعة شانون.

يتم الآن استبدال هذه الرموز المتسلسلة برموز توربو  [لغات أخرى]‏ أكثر قوة:

مخططات ترميز القنوات المستخدمة في بعثات ناسا[9]
الأعوام الترميز المهمة(المهام)
1958–الآن غير مشفر المستكشف، البحار، والعديد من الآخرين
1968–1978 الرموز التلافيفية (سي سي) (25، 1/2) رائد، فينوس
1969–1975 رمز ريد-مولر (32، 6) بحار، فايكنج
1977–الآن كود جولاي الثنائي  [لغات أخرى] مسافر
1977–الآن آر إس(255، 223) + سي سي(7، 1/2) فوييجر، جاليليو، والعديد من الآخرين
1989–2003 آر إس(255، 223) + سي سي(7، 1/3) مسافر
1989–2003 آر إس(255، 223) + سي سي(14، 1/4) جاليليو
1996–الآن آر إس + سي سي (15، 1/6) كاسيني، مارس باثفايندر، وغيرها
2004–الآن أكواد التوربو[nb 1] رسول، ستيريو، إم آر أو، إم إس إل، وغيرها
est. 2009 رموز إل دي بي سي كوكبة، إم 2020، مافن

الإنشاءات (الترميز)

[عدل]

إن شفرة ريد–سولومون هي في الواقع عائلة من الشفرات، حيث يتميز كل شفرة بثلاثة معلمات: حجم الأبجدية q، وطول الكتلة n، وطول الرسالة k، مع . يتم تفسير مجموعة رموز الأبجدية على أنها الحقل المحدود من أجل ، وبالتالي، يجب أن تكون قوة رئيسية. في أكثر معلمات كود ريد–سولومون فائدة، يكون طول الكتلة عادةً مضاعفًا ثابتًا لطول الرسالة، أي المعدل هو ثابت ما، وعلاوة على ذلك، فإن طول الكتلة إما أن يكون مساويًا لحجم الأبجدية أو أقل منه بواحد، أي، أو .[بحاجة لمصدر]

وجهة النظر الأصلية لريد وسولومون: الكلمة الرمزية كسلسلة من القيم

[عدل]

توجد إجراءات ترميز مختلفة لرمز ريد–سولومون، وبالتالي، توجد طرق مختلفة لوصف مجموعة كل الكلمات الرمزية. في العرض الأصلي لريد وسولومون، كل كلمة رمزية من رمز ريد–سولومون هي عبارة عن تسلسل من قيم الدالة لكثيرة حدود من الدرجة الأقل من .[1] من أجل الحصول على كلمة رمزية لرمز ريد–سولومون، يتم التعامل مع رموز الرسائل (كل منها ضمن الأبجدية بحجم q) كمعاملات لكثيرة حدود من الدرجة أقل من ، فوق المجال المحدود مع عناصر. وبدوره، فإن كثيرة الحدود يتم تقييمه في نقاط مميزة من الميدان ، وتسلسل القيم هو الكلمة الرمزية المقابلة. تتضمن الاختيارات الشائعة لمجموعة من نقاط التقييم ما يلي: ، ، أو ل ، ،...، أين هو عنصر بدائي  [لغات أخرى]‏ من .

رسميا، المجموعة يتم تعريف كلمات رمز ريد–سولومون على النحو التالي: نظرًا لأن أي حدودين مختلفتين بدرجة أقل من أتفق على الأكثر النقاط، وهذا يعني أن أي كلمتين رمزيتين من قانون ريد–سولومون تختلفان في ما لا يقل عن المواقف. علاوة على ذلك، هناك حدوديتان متفقتان في النقاط ولكنها ليست متساوية، وبالتالي فإن مسافة قانون ريد–سولومون هي بالضبط . ثم المسافة النسبية هي ، أين هو المعدل. إن هذه المقايضة بين المسافة النسبية والمعدل مثالية بشكل مقارب، حيث أن كل كود يلبي الحد الأقصى للسنجلتون  [لغات أخرى]. باعتباره رمزًا يحقق هذه المقايضة المثلى، فإن رمز ريد–سولومون ينتمي إلى فئة الرموز القابلة للفصل عند أقصى مسافة.

في حين أن عدد كثيرات الحدود المختلفة من الدرجة الأقل من k وعدد الرسائل المختلفة متساويان وبالتالي، يمكن تعيين كل رسالة بشكل فريد لمثل هذه الحدود، وهناك طرق مختلفة للقيام بهذا الترميز. يفسر البناء الأصلي لريد-سولومون الرسالة x باعتبارها معاملات كثيرة الحدود p، بينما تفسر البناءات اللاحقة الرسالة باعتبارها قيم كثيرة الحدود عند أول k نقطة ويمكن الحصول على كثيرة الحدود p باستيفاء هذه القيم بكثيرة حدود بدرجة أقل من k. تتميز عملية الترميز الأخيرة، وإن كانت أقل كفاءةً بعض الشيء، بميزة أنها تُنتج شفرةً منهجية  [لغات أخرى]‏، أي أن الرسالة الأصلية تُدرج دائمًا كتسلسل فرعي للكلمة المفتاحية.[1]

إجراء ترميز بسيط: الرسالة كسلسلة من المعاملات

[عدل]

في البناء الأصلي لريد وسليمان، الرسالة يتم تعيينه إلى كثير الحدود مع كلمة السر لـ يتم الحصول عليها عن طريق التقييم في نقاط مختلفة من الميدان . [10] وبالتالي فإن وظيفة الترميز الكلاسيكية بالنسبة لقانون ريد–سولومون، يتم تعريفه على النحو التالي: هذه الوظيفة هو رسم تخطيطي خطي، أي أنه يلبي لما يلي -مصفوفة مع عناصر من  :

هذه المصفوفة هي مصفوفة فاندرموند . بعبارة أخرى، فإن شفرة ريد–سولومون هي شفرة خطية، وفي إجراء الترميز الكلاسيكي، تكون مصفوفة المولد الخاصة بها .

إجراء الترميز المنهجي: الرسالة كتسلسل أولي من القيم

[عدل]

هناك إجراءات ترميز بديلة تعمل على إنتاج رمز ريد–سولومون المنهجي. تستخدم إحدى الطرق استيفاء لاغرانج لحساب كثيرات الحدود مثل ذلك ثم يتم تقييمه في النقاط الأخرى .

هذه الوظيفة هي عبارة عن رسم خطي. لتوليد مصفوفة الترميز النظامية المقابلة G، اضرب مصفوفة Vandermonde A في معكوس مصفوفة المربع الأيسر الفرعية A.

لما يلي -مصفوفة مع عناصر من  :

تحويل فورييه المتقطع وعكسه

[عدل]

تحويل فورييه المنفصل هو في الأساس نفس إجراء الترميز؛ فهو يستخدم متعدد الحدود المولد لربط مجموعة من نقاط التقييم بقيم الرسائل كما هو موضح أعلاه:

يمكن استخدام تحويل فورييه العكسي لتحويل مجموعة خالية من الأخطاء من قيم الرسائل n < q مرة أخرى إلى متعددة الحدود المشفرة لمعاملات k، مع القيد الذي ينص على أنه لكي يعمل هذا، يجب أن تكون مجموعة نقاط التقييم المستخدمة لتشفير الرسالة عبارة عن مجموعة من القوى المتزايدة لـ α :

ومع ذلك، فإن استيفاء لاغرانج يؤدي نفس التحويل دون قيود على مجموعة نقاط التقييم أو متطلبات مجموعة خالية من الأخطاء من قيم الرسائل ويُستخدم للترميز المنهجي، وفي إحدى خطوات فك تشفير جاو.

وجهة نظر بي سي إتش: الكلمة الرمزية كسلسلة من المعاملات

[عدل]

في هذا العرض، يتم تفسير الرسالة كمعاملات متعددة الحدود . يقوم المرسل بحساب كثير الحدود ذي الصلة من الدرجة أين ويرسل الحدود المتعددة . كثيرة الحدود يتم إنشاؤها عن طريق ضرب حدود الرسالة ، والتي لديها درجة ، مع مولد متعدد الحدود من الدرجة وهذا معروف لدى المرسل والمستقبل.مولد الحدود متعدد الحدود يتم تعريفه على أنه متعدد الحدود الذي تكون جذوره عبارة عن قوى متسلسلة لبدائية مجال جالوا

بالنسبة لـ«رمز المعنى الضيق»، .

إجراء الترميز المنهجي

[عدل]

يمكن تعديل إجراء الترميز لعرض بي سي إتش لرموز ريد–سولومون لإنتاج إجراء ترميز منهجي، حيث تحتوي كل كلمة رمزية على الرسالة كبادئة، وتضيف ببساطة رموز تصحيح الأخطاء كلاحقة. هنا، بدلا من الإرسال يقوم المشفر بإنشاء الحدود المنقولة بحيث تكون معاملات أكبر أحاديات الحدود تساوي المعاملات المقابلة لـ ، ومعاملات الدرجة الأدنى لـ يتم اختيارهم بالضبط بهذه الطريقة يصبح قابلا للقسمة على . ثم معاملات هي تسلسل جزئي لمعاملات . للحصول على كود منهجي بشكل عام، نقوم بإنشاء رسالة متعددة الحدود من خلال تفسير الرسالة على أنها تسلسل معاملاتها.

رسميًا، يتم البناء عن طريق الضرب بواسطة لإفساح المجال ل رموز التحقق، وتقسيم هذا المنتج على لإيجاد الباقي، ثم تعويض هذا الباقي عن طريق طرحه. ال يتم إنشاء رموز التحقق عن طريق حساب الباقي  :

الباقي حاصل على درجة علمية على الأكثر ، في حين أن معاملات في كثير الحدود هي صفر. لذلك، التعريف التالي للكلمة الرمزية لديه الخاصية التي هي الأولى المعاملات متطابقة مع معاملات  : ونتيجة لذلك، فإن الكلمات المشفرة هي في الواقع عناصر من أي أنها قابلة للقسمة على متعددة الحدود المولدة  :[11] هذه الوظيفة هي عبارة عن رسم خطي. لتوليد مصفوفة الترميز النظامية المقابلة G، قم بتعيين المصفوفة الفرعية المربعة اليسرى لـ G إلى مصفوفة الهوية ثم قم بترميز كل صف:

مع تجاهل الأصفار الأولية، الصف الأخير = .

لما يلي -مصفوفة مع عناصر من  :

الخصائص

[عدل]

رمز ريد–سولومون هو رمز [ n، k، nk + 1]؛ بمعنى آخر، هو رمز كتلة خطي بطول n (على F) مع البعد k ومسافة هامينج الدنيا يعتبر كود ريد–سولومون مثاليًا بمعنى أن الحد الأدنى للمسافة له أقصى قيمة ممكنة لكود خطي بحجم (n، ك)؛ وهذا ما يُعرف باسم حدود سينجلتون  [لغات أخرى]‏. يُطلق على هذا الرمز أيضًا اسم رمز المسافة القصوى القابلة للفصل (إم دي إس)  [لغات أخرى]‏.

يتم تحديد قدرة تصحيح الخطأ لرمز ريد–سولومون من خلال المسافة الدنيا، أو على نحو مكافئ، من خلال ، مقياس التكرار في الكتلة. إذا لم تكن مواقع رموز الخطأ معروفة مسبقًا، فيمكن لكود ريد–سولومون تصحيح ما يصل إلى الرموز الخاطئة، أي أنه يمكنه تصحيح نصف عدد الأخطاء التي تحتوي على رموز زائدة تمت إضافتها إلى الكتلة. في بعض الأحيان تكون مواقع الأخطاء معروفة مسبقًا (على سبيل المثال، «المعلومات الجانبية» في نسبة الإشارة إلى الضوضاء في جهاز إزالة التعديل) - وتسمى هذه بالمحو. يمكن لرمز ريد–سولومون (مثل أي رمز إم دي إس) تصحيح ضعف عدد المحو مقارنة بالأخطاء، ويمكن تصحيح أي مجموعة من الأخطاء والمحو طالما تم استيفاء العلاقة 2E + Snk، حيث هو عدد الأخطاء و هو عدد المحو في الكتلة.

الأداء النظري لمعدل البتات لرمز ريد–سولومون (إن=255، كيه=233، كيو بي إس كي، أوجن). خاصية تشبه الخطوة.

يمكن وصف حد الخطأ النظري من خلال الصيغة التالية لقناة أوجن لإبدال بإزاحة التردد:[12] ولخطط التعديل الأخرى: أين ، ، ، هو معدل خطأ الرمز في حالة أوجن غير المشفرة و هو ترتيب التعديل.

بالنسبة للاستخدامات العملية لرموز ريد–سولومون، من الشائع استخدام حقل محدود مع عناصر. في هذه الحالة، يمكن تمثيل كل رمز على أنه قيمة البت. يرسل المرسل نقاط البيانات ككتل مشفرة، وعدد الرموز في الكتلة المشفرة هو . وبالتالي، فإن كود ريد–سولومون الذي يعمل على رموز مكونة من 8 بتات لديه الرموز لكل كتلة. (هذه قيمة شائعة جدًا نظرًا لانتشار أنظمة الكمبيوتر الموجهة للبايتات.) الرقم ، مع ، عدد رموز البيانات في الكتلة هو معلمة تصميم. الكود المستخدم بشكل شائع يشفر رموز بيانات مكونة من ثمانية بتات بالإضافة إلى 32 رمز تكافؤ مكون من ثمانية بتات في - كتلة الرمز؛ يُشار إليها باسم الكود، وهو قادر على تصحيح ما يصل إلى 16 خطأ رمزي لكل كتلة.

إن خصائص كود ريد–سولومون التي تمت مناقشتها أعلاه تجعلها مناسبة بشكل خاص للتطبيقات التي تحدث فيها أخطاء في الانفجارات. يرجع ذلك إلى أنه لا يهم بالنسبة للكود عدد البتات الموجودة في الرمز التي تحتوي على أخطاء - إذا كانت بتات متعددة في رمز تالفة، فإن هذا يعد خطأ واحدًا فقط. وعلى العكس من ذلك، إذا لم يكن تدفق البيانات يتميز بتفجر الأخطاء أو الانقطاعات ولكن بأخطاء بت واحدة عشوائية، فإن رمز ريد–سولومون عادة ما يكون خيارًا سيئًا مقارنة بالرمز الثنائي.

إن شفرة ريد–سولومون، مثل الشفرة التلافيفية  [لغات أخرى]‏، هي شفرة شفافة. وهذا يعني أنه إذا تم عكس رموز القناة في مكان ما على طول الخط، فسوف تستمر أجهزة فك التشفير في العمل. وستكون النتيجة عكس البيانات الأصلية. ومع ذلك، يفقد كود ريد–سولومون شفافيته عندما يتم اختصار الكود (انظر الملاحظات في نهاية هذا القسم). يجب ملء البتات «المفقودة» في الكود المختصر إما بالأصفار أو الواحدات، اعتمادًا على ما إذا كانت البيانات مكملة أم لا. (بعبارة أخرى، إذا تم عكس الرموز، فيجب عكس التعبئة الصفرية إلى تعبئة واحدة.) لهذا السبب، من الضروري حل معنى البيانات (أي، صحيحة أو متممة) قبل فك تشفير ريد–سولومون.

إن كون قانون ريد–سولومون دوريًا أم لا يعتمد على التفاصيل الدقيقة للبناء. في وجهة النظر الأصلية لريد وسولومون، حيث تكون الكلمات الرمزية هي قيم كثيرة الحدود، يمكن للمرء اختيار تسلسل نقاط التقييم بطريقة تجعل الكود دوريًا. وعلى وجه الخصوص، إذا هو جذر بدائي  [لغات أخرى]‏ للحقل ، إذن حسب التعريف فإن جميع العناصر غير الصفرية لـ خذ النموذج ل ، أين . كل كثيرة حدود زيادة يؤدي إلى ظهور كلمة مرور . منذ الوظيفة هي أيضًا كثيرة حدود من نفس الدرجة، هذه الدالة تؤدي إلى كلمة رمزية ؛ منذ صحيح أن هذه الكلمة الرمزية هي التحول الدوري إلى اليسار للكلمة الرمزية الأصلية المشتقة من . وبالتالي فإن اختيار تسلسل من قوى الجذر البدائية كنقط تقييم يجعل العرض الأصلي لرمز ريد–سولومون دوريًا. تكون رموز ريد–سولومون في عرض بي سي إتش دورية دائمًا لأن رموز بي سي إتش دورية.

الملاحظات

[عدل]

لا يُطلب من المصممين استخدام الأحجام «الطبيعية» لكتل كود ريد–سولومون. يمكن لتقنية تُعرف باسم «الاختصار» إنتاج كود أصغر بأي حجم مرغوب من كود أكبر. على سبيل المثال، يمكن تحويل الكود المستخدم على نطاق واسع (255,223) إلى كود (160,128) عن طريق تعبئة الجزء غير المستخدم من كتلة المصدر بـ 95 صفرًا ثنائيًا وعدم إرسالها. في جهاز فك التشفير، يتم تحميل نفس الجزء من الكتلة محليًا باستخدام الأصفار الثنائية.

يستخدم رمز الاستجابة السريعة، الإصدار 3 (29×29) كتلًا متداخلة. تتكون الرسالة من 26 بايت بيانات ويتم تشفيرها باستخدام كتلتين من رموز ريد-سولومون. كل كتلة عبارة عن رمز (255,233) ريد سولومون مختصر إلى رمز (35,13).

توضح نظرية ديلسارت-جوثالز-سايدل[13] مثالاً لتطبيق رموز ريد–سولومون المختصرة. وبالتوازي مع الاختصار، هناك تقنية تُعرف بالثقب تسمح بحذف بعض رموز التكافؤ المشفرة.

فك تشفير عرض بي سي إتش

[عدل]

تستخدم أجهزة فك التشفير الموصوفة في هذا القسم عرض بي سي إتش لكلمة رمزية كسلسلة من المعاملات. وتستخدم متعددة حدود مولدة ثابتة معروفة لكلٍّ من جهاز التشفير وجهاز فك التشفير.

وحدة فك ترميز بيترسون-جورنشتاين-زيرلر

[عدل]

قام دانييل جورنشتاين ونيل زيرلر بتطوير جهاز فك تشفير تم وصفه في تقرير صادر عن مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا بواسطة زيرلر في يناير 1960 وفي وقت لاحق في ورقة بحثية في يونيو 1961.[14][15] تم وصف فك تشفير جورنشتاين-زيرلر والعمل المرتبط به على رموز بي سي إتش في كتاب رموز تصحيح الأخطاء بقلم و. ويزلي بيترسون (1961).[3][بحاجة لرقم الصفحة]

التركيبة

[عدل]

الرسالة المرسلة ، يُنظر إليها على أنها معاملات متعددة الحدود

نتيجة لإجراء ترميز ريد–سولومون، فإن s (x) قابلة للقسمة على متعددة الحدود المولدة حيث α هو عنصر بدائي.

نظرًا لأن s (x) مضاعف للمولد g (x)، فمن الطبيعي أن «يرث» كل جذوره: لذلك،

يتم إتلاف الحدود المنقولة أثناء النقل بسبب خطأ الحدود لإنتاج الحدود المستلمة

سيكون المعامل e i صفرًا إذا لم يكن هناك خطأ عند تلك القوة لـ x، وغير صفر إذا كان هناك خطأ. إذا كانت هناك أخطاء ν عند قوى مميزة i k لـ x، إذن

الهدف من فك التشفير هو العثور على عدد الأخطاء (ν)، ومواضع الأخطاء (i k)، وقيم الأخطاء في تلك المواضع (e i k). ومن تلك القيم، يمكن حساب e (x) وطرحه من r (x) للحصول على الرسالة المرسلة في الأصل s (x).

فك تشفير المتلازمة

[عدل]

يبدأ فك التشفير بتقييم الحدود الواردة في النقاط . نحن نطلق على نتائج هذا التقييم اسم «المتلازمات» S j. يتم تعريفهم على أنهم لاحظ أن لأن له جذور في كما هو موضح في القسم السابق.

ميزة النظر إلى المتلازمات هي أن متعدد حدود الرسالة يختفي. بمعنى آخر، تتعلق المتلازمات بالخطأ فقط ولا تتأثر بالمحتوى الفعلي للرسالة المرسلة. إذا كانت جميع المتلازمات صفرًا، تتوقف الخوارزمية عند هذا الحد وتُبلغ عن عدم تلف الرسالة أثناء النقل.

محددات الأخطاء وقيم الأخطاء

[عدل]

من أجل الراحة، قم بتحديد مواقع الأخطاء X k وقيم الأخطاء Y k على النحو التالي

ومن ثم يمكن كتابة المتلازمات من حيث مواقع الأخطاء وقيم الأخطاء هذه على النحو التالي:

هذا التعريف لقيم المتلازمة يعادل التعريف السابق منذ .

تعطي المتلازمات نظامًا من معادلات nk ≥ 2ν في مجهولين 2 ν، ولكن نظام المعادلات هذا غير خطي في X k وليس له حل واضح. ومع ذلك، إذا كانت قيمة X k معروفة (انظر أدناه)، فإن معادلات المتلازمة توفر نظامًا خطيًا من المعادلات والتي يمكن حلها بسهولة لقيم خطأ Y k.

وبالتالي، فإن المشكلة تكمن في إيجاد Xk، لأنه عندها ستكون المصفوفة الموجودة في أقصى اليسار معروفة، ويمكن ضرب كلا جانبي المعادلة في معكوسها، مما ينتج عنه Yk.

في متغير هذه الخوارزمية حيث تكون مواقع الأخطاء معروفة بالفعل (عندما يتم استخدامها كرمز مسح  [لغات أخرى]‏)، فهذه هي النهاية. إن مواقع الخطأ (X k) معروفة بالفعل من خلال بعض الطرق الأخرى (على سبيل المثال، في إرسال FM، يمكن تحديد الأقسام التي كان فيها تدفق البتات غير واضح أو تم التغلب عليه بالتداخل بشكل احتمالي من تحليل التردد). في هذا السيناريو، ما يصل إلى يمكن تصحيح الأخطاء.

يعمل باقي الخوارزمية على تحديد الأخطاء وسيتطلب قيم متلازمة تصل إلى ، بدلا من مجرد المستخدمة حتى الآن. لهذا السبب، هناك حاجة إلى إضافة عدد مضاعف من رموز تصحيح الأخطاء مقارنة بالعدد الذي يمكن تصحيحه دون معرفة مواقعها.

متعدد الحدود لتحديد الخطأ

[عدل]

هناك علاقة تكرار خطية تُنتج نظامًا من المعادلات الخطية. حل هذه المعادلات يُحدد مواقع الخطأ Xk.

قم بتعريف متعددة حدود تحديد الخطأ Λ(x) على أنها

أصفار Λ(x) هي مقلوبات . يتبع هذا من بناء تدوين المنتج أعلاه، لأنه إذا ، ثم يصبح أحد الحدود المضروبة صفرًا، ، مما يجعل تقييم متعدد الحدود بأكمله يساوي الصفر:

يترك يكون أي عدد صحيح بحيث . اضرب كلا الطرفين في ، وسيظل صفرًا:

المجموع لـ k = 1 إلى ν، وسيظل صفرًا:

اجمع كل مصطلح في مجموع خاص به:

استخرج القيم الثابتة لـ التي لا تتأثر بالمجموع:

أصبحت هذه المجاميع الآن تعادل قيم المتلازمة، والتي نعرفها ويمكننا استبدالها. وهذا يقلل بالتالي إلى

الطرح من كلا الجانبين العائدات

تذكر أن j تم اختياره ليكون أي عدد صحيح بين 1 و v شاملًا، وهذا التكافؤ صحيح لجميع هذه القيم. وبالتالي، لدينا معادلة خطية، وليس معادلة واحدة فقط. وبالتالي، يمكن حل نظام المعادلات الخطية هذا لمعاملات Λ i لمتعددة حدود موقع الخطأ: يفترض ما سبق أن فك التشفير يعرف عدد الأخطاء ν، ولكن هذا العدد لم يتم تحديده بعد. لا يقوم فك التشفير PGZ بتحديد ν بشكل مباشر، بل يبحث عنه عن طريق تجربة القيم المتعاقبة. يفترض فك التشفير أولاً أكبر قيمة للتجربة ν ويقوم بإعداد النظام الخطي لتلك القيمة. إذا كان من الممكن حل المعادلات (أي أن محدد المصفوفة ليس صفرًا)، فإن قيمة التجربة هي عدد الأخطاء. إذا لم يكن من الممكن حل النظام الخطي، يتم تقليل التجربة ν بمقدار واحد ويتم فحص النظام الأصغر التالي. [16]

إيجاد جذور متعددة حدود تحديد الخطأ

[عدل]

استخدم المعاملات Λ التي وجدتها في الخطوة الأخيرة لبناء متعدد حدود موقع الخطأ. يمكن العثور على جذور متعددة الحدود الخاصة بموقع الخطأ من خلال البحث الشامل. محددات الخطأ X k هي مقلوبات تلك الجذور. يمكن عكس ترتيب معاملات كثيرة الحدود لموقع الخطأ، وفي هذه الحالة تكون جذور كثيرة الحدود المعكوسة هي محددات الخطأ (ليس متبادلهما ). يعد البحث شين  [لغات أخرى]‏ تنفيذًا فعالًا لهذه الخطوة.

حساب قيم الخطأ

[عدل]

بمجرد معرفة مواقع الخطأ X k، يمكن تحديد قيم الخطأ. يمكن القيام بذلك عن طريق الحل المباشر لـ Y k في مصفوفة معادلات الخطأ المذكورة أعلاه، أو باستخدام خوارزمية فورني  [لغات أخرى]‏.

حساب مواقع الخطأ

[عدل]

احسب i k عن طريق أخذ قاعدة اللوغاريتم من X ك. يتم ذلك عادةً باستخدام جدول بحث محسوب مسبقًا.

إصلاح الأخطاء

[عدل]

أخيرًا، يتم إنشاء e (x) من i k و e i k ثم يتم طرحه من r (x) للحصول على الرسالة المرسلة في الأصل s (x)، مع تصحيح الأخطاء.

الأمثلة

[عدل]

خذ بعين الاعتبار رمز ريد–سولومون المحدد في GF(929) مع α = 3 و t = 4 (يستخدم هذا في رموز بي دي إف 417  [لغات أخرى]‏) لكود آر إس (7,3). الحدود المولدة هي إذا كانت متعددة حدود الرسالة هي p(x) = 3 x2 + 2 x + 1، فسيتم ترميز كلمة رمزية منهجية على النحو التالي: قد تؤدي الأخطاء في الإرسال إلى استلام هذا بدلاً من ذلك: يتم حساب المتلازمات عن طريق تقييم r عند قوى α : إنتاج النظام

باستخدام الإزالة الغاوسية، لذا مع الجذور x 1 = 757 = 3 −3 و x 2 = 562 = 3 −4. يمكن عكس المعاملات: لإنتاج الجذور 27 = 3 3 و 81 = 3 4 مع أسس موجبة، ولكن عادةً لا يتم استخدام ذلك. يتوافق لوغاريتم الجذور المقلوبة مع مواقع الخطأ (من اليمين إلى اليسار، الموقع 0 هو المصطلح الأخير في الكلمة الرمزية).

لحساب قيم الخطأ، قم بتطبيق خوارزمية فورني  [لغات أخرى]‏ :

الطرح من متعددة الحدود المستلمة r (x) تعيد إنتاج كلمة المرور الأصلية s.

فك تشفير بيرليكامب-ماسي

[عدل]

خوارزمية بيرليكامب-ماسي  [لغات أخرى]‏ هي إجراء تكراري بديل للعثور على متعدد الحدود لتحديد الخطأ. أثناء كل تكرار، يقوم بحساب التناقض بناءً على حالة حالية من Λ(x) مع عدد مفترض من الأخطاء e : ثم يقوم بتعديل Λ(x) و e بحيث يصبح Δ المعاد حسابه صفرًا. تحتوي المقالة «خوارزمية بيرليكامب-ماسي  [لغات أخرى]‏» على وصف تفصيلي للإجراء. في المثال التالي، يتم استخدام C (x) لتمثيل Λ(x).

الأمثلة

[عدل]

باستخدام نفس البيانات المستخدمة في مثال بيترسون جورنشتاين زيرلر أعلاه:

ن إسإن +1 د ج ب ب م
0 732 732 197 x + 1 1 732 1
1 637 846 173 x + 1 1 732 2
2 762 412 634 x2 + 173 x + 1 173 x + 1 412 1
3 925 576 329 x2 + 821 x + 1 173 x + 1 412 2

القيمة النهائية لـ C هي متعددة حدود تحديد الخطأ، Λ(x).

فك تشفير سوجياما

[عدل]

تعتمد طريقة تكرارية أخرى لحساب كل من متعدد حدود تحديد الخطأ ومتعدد حدود قيمة الخطأ على تكييف سوجياما لخوارزمية إقليدية ممتدة.

عرف S (x)، Λ(x)، وΩ(x) لمتلازمات t وأخطاء e :

المعادلة الأساسية هي:

بالنسبة إلى t = 6 و e = 3:

الحدود الوسطى هي صفر بسبب العلاقة بين Λ والمتلازمات.

يمكن لخوارزمية إقليدية ممتدة العثور على سلسلة من كثيرات الحدود من النموذج

Ai(x) S(x) + Bi(x) xt = Ri(x)

حيث تقل درجة R مع زيادة i. بمجرد أن تصبح درجة R i (x) < t /2، فإن

Ai(x) = Λ(x)
Bi(x) = −Q(x)
Ri(x) = Ω(x).

لا يلزم حفظ B (x) و Q (x)، لذا تصبح الخوارزمية:

R−1 := xt
R0  := S(x)
A−1 := 0
A0  := 1
i := 0
while degree of Rit/2
  i := i + 1
  Q := Ri-2 / Ri-1
  Ri := Ri-2 - Q Ri-1
  Ai := Ai-2 - Q Ai-1

لتعيين الحد الأدنى من الترتيب لـ Λ(x) إلى 1، قسّم Λ(x) وΩ(x) على A i (0):

Λ(x) = Ai / Ai(0)
Ω(x) = Ri / Ai(0)

A i (0) هو الحد الثابت (من الدرجة المنخفضة) لـ A i.

الأمثلة

[عدل]

باستخدام نفس البيانات المستخدمة في مثال بيترسون-جورينشتاين-زيرلر أعلاه:

آي آر اي إيه i
−1 001 x4 + 000 x3 + 000 x2 + 000 x + 000 000
0 925 x3 + 762 x2 + 637 x + 732 001
1 683 x2 + 676 x + 024 697 x + 396
2 673 x + 596 608 x2 + 704 x + 544
Λ(x) = A2 / 544 = 329 x2 + 821 x + 001
Ω(x) = R2 / 544 = 546 x + 732

فك التشفير باستخدام تحويل فورييه المنفصل

[عدل]

يمكن استخدام تحويل فورييه المنفصل لفك التشفير.[17] لتجنب التعارض مع أسماء المتلازمات، دع c (x) = s (x) هي الكلمة المشفرة. r (x) و e (x) هما نفس الشيء المذكور أعلاه. عرف C (x)، و E (x)، و R (x) على أنها تحويلات فورييه المنفصلة لـ c (x)، و e (x)، و r (x). نظرًا لأن r (x) = c (x) + e (x)، ونظرًا لأن تحويل فورييه المنفصل هو عامل خطي، فإن R (x) = C (x) + E (x).

قم بتحويل r (x) إلى R (x) باستخدام تحويل فورييه المنفصل. نظرًا لأن حساب تحويل فورييه المنفصل هو نفس حساب المتلازمات، فإن معاملات t لـ R (x) و E (x) هي نفس المتلازمات:

يستخدم خلال كمتلازمات (إنها نفس الشيء) وتوليد متعدد الحدود لتحديد الخطأ باستخدام الأساليب من أي من أجهزة فك التشفير المذكورة أعلاه.

ليكن v = عدد الأخطاء. توليد E (x) باستخدام المعاملات المعروفة ل ، متعدد الحدود لتحديد الخطأ، وهذه الصيغ

ثم احسب C (x) = R (x) − E (x) واستخدم التحويل العكسي (الاستيفاء متعدد الحدود) لـ C (x) لإنتاج c (x).

فك التشفير خارج حدود تصحيح الخطأ

[عدل]

تنص حدود سينجلتون  [لغات أخرى]‏ على أن الحد الأدنى للمسافة d لكتلة رمزية خطية بحجم (n، k) يحدها الحد العلوي n - k + 1. كان من المفهوم عادةً أن المسافة d تحد من قدرة تصحيح الخطأ إلى ⌊(d - 1) / 2⌋. يحقق كود ريد–سولومون هذا الحد بالمساواة، وبالتالي يمكنه تصحيح ما يصل إلى ⌊(n - k) / 2⌋ أخطاء. ومع ذلك، فإن حد تصحيح الخطأ هذا ليس دقيقًا.

في عام 1999، نشر مادو سودان وفينكاتيسان جوروسوامي  [لغات أخرى]‏ في معهد ماساتشوستس للتكنولوجيا «تحسين فك رموز ريد–سولومون والرموز الجبرية الهندسية» حيث قدموا خوارزمية سمحت بتصحيح الأخطاء التي تتجاوز نصف المسافة الدنيا للرمز.[18] وهذا ينطبق على رموز ريد–سولومون وبشكل عام على الرموز الهندسية الجبرية. تنتج هذه الخوارزمية قائمة من الكلمات المشفرة (وهي خوارزمية فك تشفير القائمة) وتعتمد على الاستيفاء والتحليل إلى عوامل متعددة الحدود على GF(2m) وامتداداتها.

في عام 2023، بناءً على ثلاثة أحداث مثيرة،[19][20][21] أظهر منظرو الترميز أن أكواد ريد–سولومون المحددة عبر نقاط تقييم عشوائية يمكنها في الواقع تحقيق قدرة فك تشفير القائمة  [لغات أخرى]‏ (ما يصل إلى n - k أخطاء) عبر أبجديات ذات حجم خطي باحتمالية عالية. ومع ذلك، فإن هذه النتيجة تركيبية وليست خوارزمية.[بحاجة لمصدر]

فك التشفير الناعم

[عدل]

إن طرق فك التشفير الجبري الموصوفة أعلاه هي طرق اتخاذ قرار صعب، مما يعني أنه بالنسبة لكل رمز يتم اتخاذ قرار صعب حول قيمته. على سبيل المثال، يمكن لجهاز فك التشفير أن يربط مع كل رمز قيمة إضافية تتوافق مع ثقة جهاز فك تشفير القناة في صحة الرمز. لقد أدى ظهور إل دي بي سي  [لغات أخرى]ورموز التوربو  [لغات أخرى]‏، التي تستخدم أساليب فك تشفير انتشار الاعتقاد بقرار ناعم متكرر لتحقيق أداء تصحيح الخطأ بالقرب من الحد النظري، إلى تحفيز الاهتمام بتطبيق فك تشفير القرار الناعم على الرموز الجبرية التقليدية. في عام 2003، قدم رالف كويتر وألكسندر فاردي خوارزمية فك تشفير القائمة الجبرية ذات القرار الناعم في زمن متعدد الحدود لرموز ريد–سولومون، والتي كانت تعتمد على العمل الذي قام به سودان وجورو سوامي.[22] في عام 2016، نشر ستيفن جيه فرانك وجوزيف إتش تايلور فك تشفير القرار الناعم الجديد.[23]

مثال ماتلاب

[عدل]

مُشفِّر

[عدل]

نقدم هنا تنفيذ ماتلاب بسيطًا للمُشفِّر.

function encoded = rsEncoder(msg, m, prim_poly, n, k)
    % RSENCODER Encode message with the Reed-Solomon algorithm
    % m is the number of bits per symbol
    % prim_poly: Primitive polynomial p(x). Ie for DM is 301
    % k is the size of the message
    % n is the total size (k+redundant)
    % Example: msg = uint8('Test')
    % enc_msg = rsEncoder(msg, 8, 301, 12, numel(msg));

    % Get the alpha
    alpha = gf(2, m, prim_poly);

    % Get the Reed-Solomon generating polynomial g(x)
    g_x = genpoly(k, n, alpha);

    % Multiply the information by X^(n-k), or just pad with zeros at the end to
    % get space to add the redundant information
    msg_padded = gf([msg zeros(1, n - k)], m, prim_poly);

    % Get the remainder of the division of the extended message by the
    % Reed-Solomon generating polynomial g(x)
    [~, remainder] = deconv(msg_padded, g_x);

    % Now return the message with the redundant information
    encoded = msg_padded - remainder;

end

% Find the Reed-Solomon generating polynomial g(x), by the way this is the
% same as the rsgenpoly function on matlab
function g = genpoly(k, n, alpha)
    g = 1;
    % A multiplication on the galois field is just a convolution
    for k = mod(1 : n - k, n)
        g = conv(g, [1 alpha .^ (k)]);
    end
end

فك التشفير

[عدل]

الآن الجزء المتعلق بفك التشفير:

function [decoded, error_pos, error_mag, g, S] = rsDecoder(encoded, m, prim_poly, n, k)
    % RSDECODER Decode a Reed-Solomon encoded message
    %   Example:
    % [dec, ~, ~, ~, ~] = rsDecoder(enc_msg, 8, 301, 12, numel(msg))
    max_errors = floor((n - k) / 2);
    orig_vals = encoded.x;
    % Initialize the error vector
    errors = zeros(1, n);
    g = []؛
    S = []؛

    % Get the alpha
    alpha = gf(2, m, prim_poly);

    % Find the syndromes (Check if dividing the message by the generator
    % polynomial the result is zero)
    Synd = polyval(encoded, alpha .^ (1:n - k));
    Syndromes = trim(Synd);

    % If all syndromes are zeros (perfectly divisible) there are no errors
    if isempty(Syndromes.x)
        decoded = orig_vals(1:k);
        error_pos = []؛
        error_mag = []؛
        g = []؛
        S = Synd;
        return;
    end

    % Prepare for the euclidean algorithm (Used to find the error locating
    % polynomials)
    r0 = [1, zeros(1, 2 * max_errors)]؛ r0 = gf(r0, m, prim_poly); r0 = trim(r0);
    size_r0 = length(r0);
    r1 = Syndromes;
    f0 = gf([zeros(1, size_r0 - 1) 1], m, prim_poly);
    f1 = gf(zeros(1, size_r0), m, prim_poly);
    g0 = f1; g1 = f0;

    % Do the euclidean algorithm on the polynomials r0(x) and Syndromes(x) in
    % order to find the error locating polynomial
    while true
        % Do a long division
        [quotient, remainder] = deconv(r0, r1);
        % Add some zeros
        quotient = pad(quotient, length(g1));

        % Find quotient*g1 and pad
        c = conv(quotient, g1);
        c = trim(c);
        c = pad(c, length(g0));

        % Update g as g0-quotient*g1
        g = g0 - c;

        % Check if the degree of remainder(x) is less than max_errors
        if all(remainder(1:end - max_errors) == 0)
            break;
        end

        % Update r0, r1, g0, g1 and remove leading zeros
        r0 = trim(r1); r1 = trim(remainder);
        g0 = g1; g1 = g;
    end

    % Remove leading zeros
    g = trim(g);

    % Find the zeros of the error polynomial on this galois field
    evalPoly = polyval(g, alpha .^ (n - 1 : - 1 : 0));
    error_pos = gf(find(evalPoly == 0), m);

    % If no error position is found we return the received work, because
    % basically is nothing that we could do and we return the received message
    if isempty(error_pos)
        decoded = orig_vals(1:k);
        error_mag = []؛
        return;
    end

    % Prepare a linear system to solve the error polynomial and find the error
    % magnitudes
    size_error = length(error_pos);
    Syndrome_Vals = Syndromes.x;
    b(:, 1) = Syndrome_Vals(1:size_error);
    for idx = 1 : size_error
        e = alpha .^ (idx * (n - error_pos.x));
        err = e.x;
        er(idx, :) = err;
    end

    % Solve the linear system
    error_mag = (gf(er, m, prim_poly) \ gf(b, m, prim_poly))';
    % Put the error magnitude on the error vector
    errors(error_pos.x) = error_mag.x;
    % Bring this vector to the galois field
    errors_gf = gf(errors, m, prim_poly);

    % Now to fix the errors just add with the encoded code
    decoded_gf = encoded(1:k) + errors_gf(1:k);
    decoded = decoded_gf.x;

end

% Remove leading zeros from Galois array
function gt = trim(g)
    gx = g.x;
    gt = gf(gx(find(gx, 1) : end), g.m, g.prim_poly);
end

% Add leading zeros
function xpad = pad(x, k)
    len = length(x);
    if len < k
        xpad = [zeros(1, k - len) x]؛
    end
end

فك تشفير العرض الأصلي لريد سولومون

[عدل]

تستخدم أجهزة فك التشفير الموصوفة في هذا القسم مفهوم ريد سولومون الأصلي للكلمة الرمزية كتسلسل من قيم متعددة الحدود، حيث تعتمد متعددة الحدود على الرسالة المراد تشفيرها. تستخدم كل من وحدة التشفير ووحدة فك التشفير نفس مجموعة القيم الثابتة، وتستعيد وحدة فك التشفير متعددة حدود التشفير (واختياريًا متعددة حدود تحديد موقع الخطأ) من الرسالة المستلمة.

فك التشفير النظري

[عدل]

وصف ريد وسولومون فك تشفير نظري يصحح الأخطاء من خلال العثور على متعدد الحدود للرسالة الأكثر شيوعًا.[1] لا يعرف المُفكك سوى مجموعة القيم ل وأي طريقة ترميز تم استخدامها لتوليد تسلسل قيم الكلمة الرمزية. الرسالة الأصلية، والمتعددة الحدود، وأي أخطاء غير معروفة. يمكن لإجراء فك التشفير استخدام طريقة مثل استيفاء لاغرانج على مجموعات فرعية مختلفة من قيم كلمة المرور n المأخوذة k في كل مرة لإنتاج كثيرات الحدود المحتملة بشكل متكرر، حتى يتم إنتاج عدد كافٍ من كثيرات الحدود المطابقة للقضاء بشكل معقول على أي أخطاء في كلمة المرور المستلمة. بمجرد تحديد كثير الحدود، يمكن تصحيح أي أخطاء في كلمة الرمز، عن طريق إعادة حساب قيم كلمة الرمز المقابلة. لسوء الحظ، في جميع الحالات، باستثناء أبسطها، هناك عدد كبير جدًا من المجموعات الفرعية، وبالتالي فإن الخوارزمية غير عملية. عدد المجموعات الفرعية هو المعامل الثنائي، ، وعدد المجموعات الفرعية غير ممكن حتى بالنسبة للرموز المتواضعة. بالنسبة لكود (255,249) الذي يمكنه تصحيح 3 أخطاء، فإن فك التشفير النظري الساذج سوف يفحص 359 مليار مجموعة فرعية.[بحاجة لمصدر]

فك تشفير بيرليكامب ويلش

[عدل]

في عام 1986، تم تطوير فك تشفير معروف باسم خوارزمية بيرليكامب-ويلش كفك  [لغات أخرى]‏ تشفير قادر على استعادة متعددة الحدود الأصلية للرسالة بالإضافة إلى متعددة حدود «محدد» الخطأ التي تنتج أصفارًا لقيم الإدخال التي تتوافق مع الأخطاء، مع تعقيد زمني O(n3)، حيث n هو عدد القيم في الرسالة. يتم بعد ذلك استخدام الحدود المستردة لاستعادة (إعادة الحساب حسب الحاجة) الرسالة الأصلية.

الأمثلة

[عدل]

باستخدام آر إس (7,3)، وجي إف (929)، ومجموعة نقاط التقييم ai = i − 1

a = {0, 1, 2, 3, 4, 5, 6}

إذا كانت الرسالة متعددة الحدود هي

p(x) = 003x2 + 002x + 001

كلمة المرور هي

c = {001, 006, 017, 034, 057, 086, 121}

قد يؤدي حدوث أخطاء في الإرسال إلى استلام هذا بدلاً من ذلك.

b = c + e = {001, 006, 123, 456, 057, 086, 121}

المعادلة الأساسية هي:

biE(ai) - Q(ai) = 0

افترض الحد الأقصى لعدد الأخطاء: e = 2. المعادلة الأساسية تصبح:

bi(e0 + e1ai) - (q0 + q1ai + q2 a2
i
+ q3a3
i
+ q4a4
i
) = - bia2
i

استخدام الإزالة الغاوسية :

Q(x) = 003x4 + 916x3 + 009x2 + 007x + 006
E(x) = 001x2 + 924x + 006
Q(x)/E(x) = P(x) = 003x2 + 002x + 001

Recalculate P(x) where E(x) = 0 : {2, 3}

 to correct b resulting in the corrected codeword:
c = {001, 006, 017, 034, 057, 086, 121}
}}

فك تشفير جاو

[عدل]

في عام 2002، تم تطوير فك تشفير محسن بواسطة شوهونج جاو، استنادًا إلى خوارزمية إقليدس الموسعة.[24]

الأمثلة

[عدل]
  • استيفاء لاغرانج لـ ل ل
  • يولد و حتى درجة ، على سبيل المثال
آي آر i

إيه i

−1 001x7 + 908x6 + 175x5 + 194x4 + 695x3 + 094x2 + 720x + 000 000
0 055x6 + 440x5 + 497x4 + 904x3 + 424x2 + 472x + 001 001
1 702x5 + 845x4 + 691x3 + 461x2 + 327x + 237 152 x + 237
2 266x4 + 086x3 + 798x2 + 311x + 532 708x2 + 176x + 532
Q(x) = R2 = 266x4 + 086x3 + 798x2 + 311x + 532
E(x) = A2 = 708x2 + 176x + 532

لمضاعفة كثيرات الحدود التي أنشأها ويلش بيرليكامب، قسّم Q (x) و E (x) على المعامل الأكثر أهمية لـ E (x) = 708.

Q(x) = 003x4 + 916x3 + 009x2 + 007x + 006
E(x) = 001x2 + 924x + 006
Q(x)/E(x) = P(x) = 003x2 + 002x + 001

Recalculate P(x) where E(x) = 0 : {2, 3}

 to correct b resulting in the corrected codeword:
c = {001, 006, 017, 034, 057, 086, 121}

انظر أيضًا

[عدل]

الملاحظات

[عدل]
  1. ^ يقدم المؤلفون في Andrews et al. (2007) نتائج محاكاة تظهر أنه بالنسبة لنفس معدل الكود (1/6) فإن أكواد التوربو تتفوق على أكواد ريد سولومون المتسلسلة حتى 2 ديسيبل (معدل خطأ البت).[9]

المراجع

[عدل]
  1. ^ ا ب ج د ه Reed، Irving S.؛ Solomon، Gustave (1960). "Polynomial Codes over Certain Finite Fields" (PDF). Journal of the Society for Industrial and Applied Mathematics. ج. 8 ع. 2: 300–304. DOI:10.1137/0108018. مؤرشف من الأصل (PDF) في 2024-12-02.
  2. ^ Gorenstein، D.؛ Zierler، N. (يونيو 1961). "A class of cyclic linear error-correcting codes in pm symbols". J. SIAM. ج. 9 ع. 2: 207–214. DOI:10.1137/0109020. JSTOR:2098821.
  3. ^ ا ب Peterson، W. Wesley (1961). Error-Correcting Codes. MIT Press. ISBN:978-0262160063. OCLC:859669631.
  4. ^ Peterson، W. Wesley؛ Weldon، E. J. (1996) [1972]. [[[:قالب:GBurl]] Error Correcting Codes] (ط. 2nd). MIT Press. ISBN:978-0-585-30709-1. OCLC:45727875. {{استشهاد بكتاب}}: تحقق من قيمة |مسار= (مساعدة)
  5. ^ Sugiyama، Y.؛ Kasahara، M.؛ Hirasawa، S.؛ Namekawa، T. (1975). "A method for solving key equation for decoding Goppa codes". Information and Control. ج. 27 ع. 1: 87–99. DOI:10.1016/S0019-9958(75)90090-X.
  6. ^ Gao، Shuhong (يناير 2002)، New Algorithm For Decoding Reed-Solomon Codes (PDF)، Clemson، مؤرشف من الأصل (PDF) في 2025-05-05.
  7. ^ Immink، K. A. S. (1994)، "Reed–Solomon Codes and the Compact Disc"، في Wicker، Stephen B.؛ Bhargava، Vijay K. (المحررون)، Reed–Solomon Codes and Their Applications، معهد مهندسي الكهرباء والإلكترونيات، ISBN:978-0-7803-1025-4
  8. ^ Hagenauer، J.؛ Offer، E.؛ Papke، L. (1994). "11. Matching Viterbi Decoders and Reed-Solomon Decoders in a Concatenated System". Reed Solomon Codes and Their Applications. IEEE Press. ص. 433. ISBN:9780470546345. OCLC:557445046.
  9. ^ ا ب Andrews، K.S.؛ Divsalar، D.؛ Dolinar، S.؛ Hamkins، J.؛ Jones، C.R.؛ Pollara، F. (2007). "The development of turbo and LDPC codes for deep-space applications" (PDF). Proceedings of the IEEE. ج. 95 ع. 11: 2142–56. DOI:10.1109/JPROC.2007.905132. S2CID:9289140.
  10. ^ Reed، Irving S.؛ Solomon، Gustave (1960). "Polynomial Codes over Certain Finite Fields" (PDF). Journal of the Society for Industrial and Applied Mathematics. ج. 8 ع. 2: 300–304. DOI:10.1137/0108018. مؤرشف من الأصل (PDF) في 2024-12-02.
  11. ^ Lin، Shu؛ Costello، Daniel J. (1983). Error control coding: fundamentals and applications (ط. Nachdr.). Englewood Cliffs, NJ: Prentice-Hall. ص. 171. ISBN:978-0-13-283796-5.
  12. ^ "Analytical Expressions Used in bercoding and BERTool". مؤرشف من الأصل في 2019-02-01. اطلع عليه بتاريخ 2019-02-01.
  13. ^ Pfender، Florian؛ Ziegler، Günter M. (سبتمبر 2004)، "Kissing Numbers, Sphere Packings, and Some Unexpected Proofs" (PDF)، Notices of the American Mathematical Society، ج. 51، ص. 873–883، مؤرشف (PDF) من الأصل في 2008-05-09، اطلع عليه بتاريخ 2009-09-28. Explains the Delsarte-Goethals-Seidel theorem as used in the context of the error correcting code for قرص مضغوط.
  14. ^ Peterson، W. (سبتمبر 1960). "Encoding and error-correction procedures for the Bose-Chaudhuri codes". IEEE Transactions on Information Theory. ج. 6 ع. 4: 459–470. DOI:10.1109/TIT.1960.1057586.
  15. ^ Gorenstein، Daniel؛ Zierler، Neal (يونيو 1961). "A Class of Error-Correcting Codes in $p^m $ Symbols". Journal of the Society for Industrial and Applied Mathematics. ج. 9 ع. 2: 207–214. DOI:10.1137/0109020.
  16. ^ Gill، John (n.d.). "EE387 Notes #7, Handout #28" (PDF). Stanford University. مؤرشف من الأصل (PDF) في 2014-06-30. اطلع عليه بتاريخ 2010-04-21.
  17. ^ Lin، Shu؛ Costello، Daniel J. (2004). Error control coding: fundamentals and applications (ط. 2.). Upper Saddle River, NJ: Pearson/Prentice Hall. ص. 255–262. ISBN:978-0130426727.
  18. ^ Guruswami، V.؛ Sudan، M. (سبتمبر 1999)، "Improved decoding of Reed–Solomon codes and algebraic geometry codes"، IEEE Transactions on Information Theory، ج. 45، ص. 1757–1767، CiteSeerX:10.1.1.115.292، DOI:10.1109/18.782097
  19. ^ Brakensiek، Joshua؛ Gopi، Sivakanth؛ Makam، Visu (2 يونيو 2023). "Generic Reed-Solomon Codes Achieve List-Decoding Capacity". Proceedings of the 55th Annual ACM Symposium on Theory of Computing. STOC 2023. New York, NY, USA: Association for Computing Machinery. ص. 1488–1501. arXiv:2206.05256. DOI:10.1145/3564246.3585128. ISBN:978-1-4503-9913-5.
  20. ^ Guo، Zeyu؛ Zhang، Zihan (2023). "Randomly Punctured Reed-Solomon Codes Achieve the List Decoding Capacity over Polynomial-Size Alphabets". 2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS). FOCS 2023, Santa Cruz, CA, USA, 2023. ص. 164–176. arXiv:2304.01403. DOI:10.1109/FOCS57990.2023.00019. ISBN:979-8-3503-1894-4.
  21. ^ Alrabiah، Omar؛ Guruswami، Venkatesan؛ Li، Ray (18 أغسطس 2023)، Randomly punctured Reed--Solomon codes achieve list-decoding capacity over linear-sized fields، arXiv:2304.09445
  22. ^ Koetter، Ralf؛ Vardy، Alexander (2003). "Algebraic soft-decision decoding of Reed–Solomon codes". IEEE Transactions on Information Theory. ج. 49 ع. 11: 2809–2825. CiteSeerX:10.1.1.13.2021. DOI:10.1109/TIT.2003.819332.
  23. ^ Franke، Steven J.؛ Taylor، Joseph H. (2016). "Open Source Soft-Decision Decoder for the JT65 (63,12) Reed–Solomon Code" (PDF). QEX ع. May/June: 8–17. مؤرشف (PDF) من الأصل في 2017-03-09. اطلع عليه بتاريخ 2017-06-07.
  24. ^ https://www.math.clemson.edu/~sgao/papers/RS.pdf نسخة محفوظة 2025-05-05 على موقع واي باك مشين.

وصلات خارجية

[عدل]

المعلومات والدروس التعليمية

[عدل]

التنفيذات

[عدل]