מחשבים קוונטיים [1]. כולנו שמענו את המושג הזה כבר. בכל דיון אינטרנטי בנושא עולות אגדות והפחדות על איך קופסאות הפלא המסתוריות האלו יוכלו לבצע במהירות חישובים שאנחנו לא יכולים לחלום עליהם, לשבור את כל הצפנות העולם, ובאופן כללי להביא אותנו לעידן חדש ומופלא של מחשוב. אבל כמה מזה בעצם נכון, ומה הם בעצם מחשבים קוונטיים?
בפוסט זה אסביר את העקרונות הבסיסיים מאחורי חישוב קוונטי, ואספר קצת על החשיבות שלו, ועל מה מחשבים קוונטיים מסוגלים ואינם מסוגלים לעשות. בפוסטים עתידיים אנסה להסביר קצת יותר לעומק על הדרך בה עובדים אלגוריתמים קוונטיים שונים, על נסיונות נוכחיים לבנות מחשבים קוונטיים, תורת החישוביות הקוונטית, אבטחת מידע קוונטית (ועל כמה מעט אמת יש מאחורי הטענה שעם מחשב קוונטי אפשר לפרוץ את כל הצפנות העולם), כסף קוונטי, ועוד שלל נושאים שאני מת לספר לכם עליהם.
לפני שנקפוץ ללב העניין, כדאי לזכור שיש סיבה לכך שמחשבים קוונטיים, כמו כל דבר קוונטי, עטופים בהילה של בלבול ומסתורין. האבולוציה לא אבזרה אותנו באינטואיציה הדרושה כדי להבין את תורת הקוונטים. התופעות הקוונטיות מתרחשות בסקלות שניתן לחקור רק בעזרת מיטב הטכנולוגיה של עשרות השנים האחרונות, ונראה שהן נוגדות את השכל הישר [2]. בעולם הקוונטי מושגים כמו "בלתי אפשרי" או "סיבה ותוצאה" מקבלים משמעות הרבה יותר גמישה מאשר בתפיסת היקום המקורבת שהחושים שלנו מספקים לנו בחיי היום יום [3].
אז מהם בעצם מחשבים קוונטיים? במשפט אחד, אלו מחשבים שמשתמשים בתופעות קוונטיות מסויימות כדי לבצע חישובים. זה משפט די מפוצץ, ושאר הפוסט מוקדש להסביר קצת יותר טוב מה הוא בעצם אומר.
בשביל לענות על השאלה הזאת נדבר קודם כל דווקא על מחשבים קלאסיים. ברמה המתמטית, מחשב מורכב משני מרכיבים: ביטים [4], ושערים לוגיים [5] שמשנים את הביטים האלו בצורה מסויימת (למשל, שער AND, אשר מקבל שני ביטים ומחזיר 1 אם ורק אם שניהם 1). אנחנו חושבים על ביט בתור קופסה שמכילה את הערך 0 או 1, וחשוב לשים לב שהביט הוא הקופסה עצמה, לא הערך שבתוכה. ביטים הם בעצם הזכרון, או היכולת שלנו לשמור ערך לאורך זמן. לערך שבתוך הקופסה אנחנו קוראים המצב של הביט. בעזרת ביטים, וכמות יחסית קטנה של סוגים שונים של שערים לוגיים, ניתן לבצע את כל סוגי החישוב הידועים לנו.
מחשב קוונטי מוגדר באופן זהה לחלוטין, רק שאת תפקיד הביט מחליף יצור מוזר (שתכף ננסה לעמוד על טיבו) בשם "קיוביט", ואת השערים הלוגיים מחליפים שערים קוונטיים, כלומר, שערים שיודעים לעשות מניפולציות על קיוביטים. על כן, הקיוביט הוא יחידת הידע הבסיסית ביותר שמבדילה בין מחשוב קלאסי למחשוב קוונטי.
כמו הביט, גם הקיוביט [6] הוא קופסה (מטאפורית) אשר מכילה ערך מסוים. דוגמה טובה לקיוביט היא אלקטרון. לאלקטרונים יש תכונה מיוחדת הנקראת ספין [7] אשר, בניגוד לתכונות רציפות כמו מהירות, יכולה לקבל רק שני ערכים: למעלה או למטה. כדי לשמור על האנלוגיה לביטים נהוג לקרוא לערכים האלו אפס ואחד. עכשיו מגיע תורן של התופעות הקוונטיות לבוא לידי ביטוי: למרות שהאלקטרון יכול להיות רק באחד משני מצבי הספין כאשר אנחנו מודדים אותו, כל עוד לא עשינו כן הוא עשוי להיות במצב מיוחד שנקרא "סופרפוזיציה קוונטית" [8] של שני המצבים האלו.
יש הרבה הסברים פופולריים למשמעותה של סופרפוזיציה. יש שיאמרו שהחלקיק לא החליט מה מצב הספין שלו וכשאנחנו מודדים אותו הוא נאלץ לבחור. יש שיגידו שבכל מדידה היקום בעצם מתפצל לשני יקומים - אחד בו נמדד ספין למעלה והשני בו נמדד ספין למטה. הסברים נוספים עשויים לכלול קופסאות וחתולים. כל ההסברים האלו יפים ומסקרנים, אבל הם אינם הסברים פיזיקליים אלא פרשנויות פילוסופיות שלא ידוע לנו על שום ניסוי שיוכל להכריע אם מי מהן נכונה יותר מהאחרת (בתאורו הציורי של הפיסיקאי האגדי וולפגנג פאולי את הפרשנויות האלו תבע את המונח Not even wrong [[9), אולם בשביל להבין מחשוב קוואנטי כדאי לחשוב על התופעה הזו בצורה יותר מתמטית ומדוייקת. מבחינתנו, המשמעות של סופר פוזיציה היא שאם ננסה למדוד את הקיוביט אז יש הסתברות מסויימת שנמדוד אפס, והסתברות מסויימת שנמדוד אחד, ולאחר המדידה הקיוביט יקרוס למצב שמדדנו וישאר בו כל עוד הוא לא בא באינטראקציה עם דברים שמשנים את המצב שלו.
הדברים נהיים יותר מעניינים (והרבה יותר מסובכים!) כשחושבים על מערכת שיש בה יותר מקיוביט אחד. שם באה לידי ביטוי תופעה מעניינת בשם "שזירה קוואנטית" [10]. בשביל להבין אותה, נראה דוגמה מאוד פשוטה שלה. כמו שמערכת עם קיוביט אחד היא בסופר פוזיציה בין אפס ואחד, מערכת עם שני קיוביטים היא בסופר פוזיציה בין ארבע אפשרויות שונות: 00, 01, 10, 11. נניח שאנחנו מייצרים שני קיוביטים אשר נמצאים בסופר פוזיציה אחידה בין שני המצבים 00 ו-11 (כלומר, אם נמדוד את המערכת, יש סיכוי של חצי לקבל 00 וסיכוי של חצי לקבל 11). נניח שעתה אנחנו נותנים לאליס את אחד הקיוביטים והיא טסה איתו לצד השני של הגלקסיה, ורק אחרי שהיא הגיעה מדדנו את הקיוביט שנשאר אצלנו וגילינו שהוא 0. כשאליס לקחה את הקיוביט השני למסע הבין הכוכבי הוא היה במצב שבו אם נמדוד אותו יש הסתברות של חצי לראות 0 והסתברות של חצי לראות 1. אבל עכשיו הוא לא. בעצם כך שמדדנו את הקיוביט שאצלנו והוא קרס ל-0 גרמנו לכך שהקיוביט שאצל אליס גם קרס ל-0, שהרי אנחנו יודעים בוודאות שהמערכת חייבת לקרוס למצב שבו שני הקיוביטים זהים!
זו התבטאות שזירות קוואנטית. וזו תופעה מסקרנת שאין לה אח ורע בעולם הקלאסי. אין לנו שום דרך לגרום לכך שמניפולציה על ביט תגרום לשינוי מיידי בביט אחר שנמצא בצד השני של הגלקסיה.
חלקכם בטח שואלים את עצמכם עכשיו: "רגע רגע רגע, שינוי מיידי בקיוביט שנמצא בצד השני של הגלקסיה? זה לא נוגד את זה שדברים לא קורים יותר מהר ממהירות האור או משהו?". אז זהו, שלא. הנקודה היא ששום *אינפורמציה* לא עברה מהר יותר ממהירות האור. גם אם אליס יודעת בטרם צאתה למסע שכשהיא תגיע לצד השני של הגלקסיה נמדוד את הקיוביט, היא לא יכולה להסיק מזה שום דבר לגבי הקיוביט שלה. היא יודעת שהוא קרס ל0 או ל1, אבל מבחינתה, כל עוד לא סיפרנו לה מה ערך המדידה עדיין יש את אותה ההסתברות של חצי שהוא ב-0 או ב-1. כמובן, שאנחנו יכולים לספר לה מה יצאה המדידה שלנו, וכך היא תדע בוודאות מה המצב של הקיוביט שלה. אבל את האינפורמציה הזאת אין לנו דרך להעביר לה יותר מהר ממהירות האור. שזירה קוונטית היא אולי מוזרה, אבל היא לא שוברת את הפיסיקה כפי שאנחנו מכירים אותה.
השזירה הקוונטית הזאת היא חלק מרכזי בדרך שבה אלגוריתמים קוונטיים רבים עובדים, וביחד עם תופעה נוספת בשם "התאבכות" מאפשרת לנו לבצע חישובים שאנחנו לא יודעים איך לבצע עם מחשבים קלאסיים, כאשר הדוגמה המפורסמת היא פירוק מהיר של מספרים לגורמים ראשוניים.
ראוי לציין שזו רק הסתכלות אחת על מחשוב קוונטי. יש תופעות קוונטיות מעניינות נוספות שאנחנו רק מתחילים להבין איך אפשר לתמרן לטובת ביצוע חישובים. עם זאת, חשוב לזכור שכאן נעוץ כל ההבדל בין מחשבים קוונטיים למחשבים קלאסיים. מדובר על מכונות שיודעות לתמרן את הטבע כדי לחשב באופן מהיר דברים מאוד מסויימים שאנחנו לא יודעים לחשב באותה המהירות עם מחשבים קלאסיים. זה מודל חישובי מאוד מעניין, אבל חשוב לזכור שהוא לא יותר מהמתואר לעיל. זו טעות נפוצה לחשוב שמחשב קוונטי הוא מחשב המסוגל למקבל חישובים באופן שמחשבים קלאסיים לא מסוגלים לו, או שאם נריץ חישוב כלשהו על מחשב קוונטי אז הוא אוטומטית יהיה מהיר יותר מאשר על מחשב קלאסי. האמת היא שאנחנו רחוקים מאוד מלהבין את הכוח של המחשבים האלו. למעשה, אף אחד עדיין לא יודע אם מחשבים קוונטיים הם באמת יותר מהירים. אף אחד לא יודע אם קיימת בעיה שאין שום דרך לחשב אותה על מחשב קלאסי באותה המהירות שבה אנחנו יודעים לחשב אותה על מחשב קוונטי, ולמעשה - זו אחת מהבעיות הפתוחות החשובות ביותר בתחום.