פענוח רשימה

בתורת הקודים, קוד לתיקון שגיאות נקרא ניתן לפענוח רשימה (List Decodable) אם בהינתן מילת קוד מורעשת, ניתן לשחזר ממנה רשימה קצרה של מילות קוד אפשריות כך שמובטח שאחת מהן היא מילת הקוד המקורית. זאת בהשוואה למובן הרגיל של פענוח, פענוח יחיד (Unique Decoding), בו משוחזרת מילת קוד אחת שחייבת להיות מילת הקוד המקורית. פענוח רשימה מאפשר פענוח גם בהינתן מספר גדול יותר של שגיאות מאשר שפענוח יחיד היה מאפשר, שיכול להגיע כמעט עד למרחק הקוד ממש. לפענוח רשימה שימושים רבים במדעי המחשב התאורטיים ובקריפטוגרפיה.

המושג הוצג לראשונה בידי פיטר אליאס ב-1957.

השימוש הראשון של פענוח רשימה בתיאוריה של מדעי המחשב נמצא בידי עודד גולדרייך ולאוניד לוין ב-1989, כשבנו אלגוריתם לפענוח רשימה של קוד האדאמרד , והשתמשו בו כדי לבנות מכל פונקציה חד-כיוונית, פונקציה חד-כיוונית עם סיבית קשה. מאז נמצאו שימושים רבים לפענוח רשימה בבניית מערכות הוכחה הסתברותיות, בדרנדומיזציה ועוד.

הגדרה 
נאמר ש, קוד  מעל אלפבית  בגודל  הוא -ניתן-לפענוח-רשימה אם לכל  מתקיים שמספר מילות הקוד הקרובות אל  עד כדי מרחק , הוא לכל היותר , כלומר: , כאשר  הוא מרחק המינג (Hamming Distance) בין  ו.

לדוגמה, כל קוד  הוא -ניתן-לפענוח-רשימה.

חסם ג'ונסון 
ראינו אם כן שניתן להפוך כל קוד עם מרחק יחסי  לקוד הניתן-לפענוח-רשימה עם אורך רשימה קצר (אורך הרשימה היה אחד, למעשה), אך מספר השגיאות שיכולנו לתקן היה רק . חסם ג'ונסון (Johnson Bound) מבטיח חסם טוב יותר על מספר השגיאות, בעוד משמר את אורך הרשימה קטן (פולינומי ב).

טענה (חסם ג'ונסון). בהינתן קוד  עם מרחק יחסי ,  הוא -ניתן-לפענוח-רשימה עבור  ו.

שימו לב שהחסם המובטח על מספר השגיאות אותן ניתן לתקן תמיד גדול יותר מהחסם הטריוויאלי של .

חסם ג'ונסון אינו מבטיח את החסם הטוב ביותר. למשל, תוצאה מיידית של האלגוריתם של גולדרייך-לוין (שהוזכר מעלה) היא שניתן לקבל פענוח רשימה לקוד האדאמרד אפילו כמעט עד כדי המרחק של הקוד (שהוא ). ובמדויק, לכל פולינום , קוד האדאמרד הוא -ניתן-לפענוח-רשימה.

ראו גם 
 קוד לתיקון שגיאות
 סיבית קשה

קישורים חיצוניים
 מאמר סקירה על פענוח רשימה
 הוכחה של חסם ג'ונסון
 עוד על הקשר בין פענוח רשימה ודרנדומיזציה

הערות שוליים 

קודים לאיתור שגיאות ולתיקונן