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

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

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

הגדרה
-----

נאמר ש{\displaystyle C\subseteq \Sigma ^{n}}, קוד {\displaystyle [n,k]\_{q}} מעל אלפבית \Sigma  בגודל {\displaystyle q} הוא {\displaystyle (\rho ,L)}-ניתן-לפענוח-רשימה אם לכל {\displaystyle w\in \Sigma ^{n}} מתקיים שמספר מילות הקוד הקרובות אל w עד כדי מרחק {\displaystyle \rho n}, הוא לכל היותר L, כלומר: {\displaystyle \vert \{x\in C\;\vert \;d(x,w)\leq \rho n\}\vert \leq L}, כאשר {\displaystyle d(x,w)} הוא מרחק המינג (Hamming Distance) בין x וw.

לדוגמה, כל קוד {\displaystyle [n,k,\delta n]\_{q}} הוא {\displaystyle \left({\frac {\delta }{2}},1\right)}-ניתן-לפענוח-רשימה.

חסם ג'ונסון
-----------

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

**טענה (חסם ג'ונסון).** בהינתן קוד {\displaystyle C\subseteq \Sigma ^{n}} עם מרחק יחסי \delta, C הוא {\displaystyle (\rho ,L)}-ניתן-לפענוח-רשימה עבור {\displaystyle \rho =1-{\sqrt {1-\delta }}} ו{\displaystyle L=n}.

שימו לב שהחסם המובטח על מספר השגיאות אותן ניתן לתקן תמיד גדול יותר מהחסם הטריוויאלי של {\displaystyle {\frac {\delta }{2}}}.

חסם ג'ונסון אינו מבטיח את החסם הטוב ביותר. למשל, תוצאה מיידית של האלגוריתם של גולדרייך-לוין (שהוזכר מעלה) היא שניתן לקבל פענוח רשימה לקוד האדאמרד אפילו כמעט עד כדי המרחק של הקוד (שהוא {\displaystyle {\frac {1}{2}}}). ובמדויק, לכל פולינום p, קוד האדאמרד הוא {\displaystyle \left({\frac {1}{2}}-{\frac {1}{p(n)}},poly(n)\right)}-ניתן-לפענוח-רשימה.

ראו גם
------

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

קישורים חיצוניים
----------------

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

הערות שוליים
------------

1. ↑  Elias, Peter (1957). List Decoding for Noisy Channels.
2. ↑  O. Goldreich, L. Levin, "A hard-core predicate for all one-way functions", In Proceedings of the Twenty First Annual ACM Symposium on Theory of Computing (STOC), 1989
3. ↑  A. Akavia, S. Goldwasser and S. Safra, "Proving hard-core predicates using list decoding," 44th Annual IEEE Symposium on Foundations of Computer Science, 2003. Proceedings. Cambridge, MA, USA, 2003, pp. 146-157, doi: 10.1109/SFCS.2003.1238189.
4. ↑  R. Raz & S. Safra (1997). A Sub-Constant Error-Probability Low-Degree Test and a Sub-Constant Error-Probability PCP Characterization of NP. In Proc. 29th ACM Symp. on Theory of Computing, 475–484.
5. ↑  Impagliazzo, Russell & Jaiswal, Ragesh & Kabanets, Valentine. (2009). Approximate List-Decoding of Direct Product Codes and Uniform Hardness Amplification. SIAM J. Comput.. 39. 564-605. 10.1137/070683994.
6. ↑  Luca Trevisan. Extractors and pseudorandom generators.Journal of the ACM, 48(4):860–879,2001.