קודי חזרה
נפתח את השיעור בדיון על קודי חזרה. קודי חזרה אינם מגנים על מידע קוונטי מפני כל סוגי השגיאות שיכולות להתרחש ב-Qubit, אך הם מהווים את הבסיס לקוד Shor בן 9 Qubit שנראה בשיעור הבא, והם גם שימושיים להסבר יסודות תיקון השגיאות.
קידוד ופענוח קלאסיים
קודי חזרה הם דוגמאות בסיסיות ביותר לקודים מתקני שגיאות. הרעיון הוא שניתן להגן על סיביות מפני שגיאות פשוט על ידי חזרה על כל סיבית מספר קבוע של פעמים.
בפרט, נתחיל בקוד החזרה בן 3 הסיביות, רק בהקשר של מידע קלאסי. קוד זה מקודד סיבית אחת לשלוש על ידי חזרה על הסיבית שלוש פעמים, כך ש- מקודד כ- ו- מקודד כ-
אם הכל תקין, ניתן כמובן להבחין בין שתי האפשרויות לסיבית המקורית מתוך הקידודים שלהן. הנקודה היא שאם הייתה שגיאה ואחת משלוש הסיביות התהפכ ה — כלומר שה-0 הפך ל-1 או ה-1 הפך ל-0 — עדיין ניתן לגלות מה הייתה הסיבית המקורית על ידי קביעה איזו משתי הערכים הבינאריים מופיעה פעמיים. באופן שקול, ניתן לפענח על ידי חישוב ערך הרוב (כלומר, הערך הבינארי המופיע הכי הרבה פעמים).
כמובן, אם 2 או 3 סיביות מהקידוד יתהפכו, הפענוח לא יעבוד כראוי ותתקבל הסיבית השגויה, אך אם לכל היותר 1 מ-3 הסיביות יתהפך, הפענוח יהיה נכון. זוהי תכונה אופיינית של קודים מתקני שגיאות בכלל: הם עשויים לאפשר תיקון שגיאות, אך רק כל עוד אין יותר מדי מהן.
הפחתת רעש לערוץ הסימטרי הבינארי
לדוגמה של מצב שבו ניתן להפחית את הסיכוי לשגיאה באמצעות קוד חזרה, נניח שמטרתנו היא להעביר סיבית אחת למקבל היפותטי, ואנחנו יכולים לשלוח סיביות דרך מה שנקרא ערוץ סימטרי בינארי, אשר מהפך כל סיבית שעוברת דרכו באופן עצמאי עם הסתברות כלומר, עם הסתברות המקבל מקבל את הסיבית שנשלחה, אך עם הסתברות הסיבית מתהפכת והמקבל מקבל את הסיבית ההפוכה.
אז, אם נבחר לא להשתמש בקוד החזרה בן 3 הסיביות ופשוט נשלח את הסיבית הרצויה ישירות דרך הערוץ, המקבל יקבל סיבית שגויה עם הסתברות לעומת זאת, אם נקודד תחילה את הסיבית שנרצה לשלוח בקוד החזרה בן 3 הסיביות ואז נשלח כל אחת משלוש הסיביות של הקידוד דרך הערוץ, כל אחת מהן תתהפך באופן עצמאי עם הסתברות הסיכוי להיפוך סיבית גדול יותר כעת כי יש שלוש סיביות שעלולות להתהפך במקום אחת, אך אם לכל היותר סיבית אחת תתהפך, המקבל יפענח נכון. שגיאה תישאר לאחר הפענוח רק אם שתיים או יותר מהסיביות יתהפכו בזמן ההעברה.
ההסתברות שסיביתיים יתהפכו בזמן ההעברה היא שה יא לכל אחת משלוש האפשרויות לסיבית שלא תתהפך, בעוד ההסתברות שכל שלוש הסיביות יתהפכו היא ההסתברות הכוללת של שניים או שלושה היפוכי סיביות היא לכן
עבור ערכים של קטנים ממחצית, הדבר מביא לירידה בהסתברות שהמקבל יקבל סיבית שגויה. עדיין תהיה אפשרות לשגיאה במקרה זה, אך הקוד מפחית את הסבירות. (עבור ערכים של גדולים ממחצית, לעומת זאת, הקוד למעשה מגדיל את הסבירות שהמקבל יקבל סיבית שגויה.)
קידוד Qubit
קוד החזרה בן 3 הסיביות הוא קוד תיקון שגיאות קלאסי, אך ניתן לבחון מה יקרה אם ננסה להשתמש בו להגנה על Qubit מפני שגיאות. כפי שנראה, זה לא קוד תיקון שגיאות קוונטי מרשים במיוחד, כי הוא למעשה מגביר חלק מהשגיאות. עם זאת, הוא הצעד הראשון לקראת קוד Shor, ויסייע לנו היטב מבחינה פדגוגית.
להיות מדויקים, כשאנחנו מתייחסים לקוד החזרה בן 3 הסיביות המשמש ל-Qubit, אנחנו מתכוונים לקידוד של Qubit שבו מצבי הבסיס הסטנדרטי מחוזרים שלוש פעמים, כך שוקטור מצב של Qubit בודד מקודד כך:
קידוד זה מיושם בקלות על ידי ה-Circuit הקוונטי הבא, שמשתמש בשני Qubit מאותחלים כמרחב עבודה ובשני שערי NOT מבוקרים.
שים לב, בפרט, שקידוד זה אינו זהה לחזרה על המצב הקוונטי שלוש פעמים, כפי שבמצב Qubit נתון מקודד כ- קידוד כזה אינו ניתן ליישום עבור מצב קוונטי לא ידוע בגלל משפט אי-השכפול.