הנקודה השקרית בהנחת היסוד היא כי קומפוזיציה של שערים חד-קיוביים ושני קווביטים יוצגו על ידי הרכב כלשהו של מטריצות 2 × 2 ו -4 × 4. למעשה, אם שער של קוביט יחיד (עבור שתי קוביות זה דומה) פועל על הקובית $ i $ מתוך $ n $, יש להטיל את המטריצה ל
$$ (Id_2) ^ {\ זמני (i-1)} \ זמן A \ זמן (Id_2) ^ {\ זמן (n-i)}, $$
כאשר $ A $ הוא המטריצה המקורית של $ 2 × 2 $, על מנת לתאר את פעולתו במצב $ n $ -qubit. זו מטריצה של מידות $ 2 ^ n × 2 ^ n $ ללא קשר לסוג השער.
בעוד שמוצר הטנסור עם הזהויות נראה טריוויאלי, בואו נזכור מה המשמעות של יישום על וקטור מצב באמצעות האלגוריתם הכי פשוט:
לכל אינדקס u, 0 ≤ u < 2 ^ n:
הגדר u_i = ערך סיביות של סיבית i-th של u
הגדר v = u XOR 2 ^ i
אם u_i = 0:
חדש (psi [u], psi [v]) = a * psi [u] + b * psi [v]
אַחֵר:
חדש (psi [u], psi [v]) = d * psi [u] + c * psi [v]
כן, בליבת האלגוריתם הפסאודו הזה יש רק כפל דו ממדי. אבל זה נעשה $ 2 ^ n $ פעמים.
עוד לפני שמגיעים ל לבצע את הסימולציה הקלאסית בפועל, אפשר לאזול את הזיכרון הזמין אפילו ב אחסון המדינה בכל רגע מסוים. קח $ n = 100 $ qubits, זה $ 2 ^ {100} $ משרעות מורכבות של דיוק כפול (128 ביט כל אחת). אני מקבל הערכה העולה על קיבולת אחסון הנתונים של כל המחשבים בכדור הארץ בכ- 14 סדרי גודל, כך שלא נראה את זה בקרוב. בינתיים, מחשב קוונטי עם 100 סיביות היה מתחיל להיות מעניין ליישומים, בתיאוריה זה לא נדיר לראות הרבה יותר מזה החזוי.