מיחשוב קוונטי (מבוא)

forum link

אחת הבעיות המאתגרות שעומדות בפני ממשלות ואירגוני פשע הוא פיצוח שיטת ההצפנה RSA, הידועה גם בשם "שיטת שני המפתחות". בשיטה זו, אם אנו רוצים להצפין מסמך, יש ליצור מפתח "נעילה" ומפתח "פתיחה". שני המפתחות כוללים מספר גדול מאוד N. המספר הזה הוא מכפלה של שני מספרים ראשוניים גדולים p,q שנבחרו אקראית. רק בעל הקוד יודע את שני המספרים p,q בנפרד, בעוד שהמכפלה N ידועה לכולם. אם אתה מסוגל לפרק את N לגורמיו הראשוניים הרי שפיצחת את הקוד.

נתון מספר באורך n=400 ביטים. כמה פעולות דרושות כדי לפרק אותו לגורמים? תשובה: מספר מאוד גדול מסדר גודל של 2^n. לשם השוואה מספר האטומים ביקום הוא מסדר גודל של 2^{300}. שימו לב: למספר 987 יש רק "3" ספרות, אבל נדרשות הרבה פעולות כדי למצוא במה הוא מתחלק. במחשב קוונטי ניתן להכין רגיסטר של n ביטים במצב סופרפוזיציה, לבצע את החישוב באופן "מקבילי" באמצעות יחידת עיבוד אחת. זה מה שמאפשר "לפרק" את המספר לגורמים "במכה אחת". לפרק את המספר = לפצח את הקוד!

פרוק לגורמים

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

 f(x) \ \ \equiv \ \ M^x \ \text{mod}(N)

באשר M מספר שרירותי. אנו מעונינים למצוא את המחזור r של f(x) עבורו מתקיים

f(x+r)=f(x)

אם N היה ראשוני אז המחזור של הפונקציה היה r=N-1. זה נקרא "המשפט הקטן של פרמה". לעומת זאת אם N=pq אז r<(N-1). אם המחזור r ידוע, אז אפשר לחשב בקלות את גורמיו הראשוניים של N. מה שהמחשב הקוונטי מאפשר זה למצוא את המחזור r. כדי להבין איך זה מתבצע, נגדיר להלן את המושג רגיסטר, ואת הפעולות שנקראות פוריה טרנספורם והדמרד טרנספורם.

רגיסטר

רגיסטר x הוא יחידת זכרון של מחשב, והוא מורכב מביטים (bits). כל ביט יכול להכיל את הערך 0 או 1.

x=(x_0,x_1,...,x_{n-1})

אופציונלית אפשר לפרש את התוכן של הרגיסטר כיצוג של מספר בינארי:
 
x \ \ = \ \ \sum_{i=0}^{n-1} x_i2^i

מכפלה סקלרית של ערכי רגיסטר מוגדרת בצורה הבאה:
 
 x^A \cdot x^B \ \ \equiv \ \ \sum_i x^A_i x^B_i
מכפלה אלגברית של ערכי רגיסטר מוגדרת בצורה הבאה:

 x^Ax^B \ \ \equiv \ \ \sum_{ij}x^A_i x^B_j 2^{i+j}
ברגיסטר קוונטי יש qbits במקום bits. בשפה של ספינים אפשר להגיד שכל qbit יכול להיות מקוטב up או down, וזה מיצג את הערכים 0 ו-1. בהתאם נסמן את מצב הרגיסטר בסימון |0\rangle או |1\rangle .  להלן נתיחס לשתי פעולות שלוקחות את הרגיסטר והופכות אותו לסופרפוזיציה של מצבים.

הדמרד טרנספורם

פעולת הדמרד (Hadamard) על qbit יחיד מוגדרת בצורה הבאה:

|0\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2}} \left(|0\rangle
      +|1\rangle\right)
|1\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2}} \left(|0\rangle
      -|1\rangle\right)

כלומר qbit מקוטב up יהפוך להיות מקוטב right, ולעומת זאת qbit מקוטב down יהפוך להיות מקוטב left. בשפה של ספינים זו למעשה פעולת סיבוב. שילוב שתי הנוסחאות ביחד נותן את צורת הרישום:
 
|x_0\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2}}
      \left(|0\rangle + (-1)^{x_0} |1\rangle\right)

או בצורה יותר קומפקטית:

|x_0\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2}} \sum_{k_0=0,1}
      (-1)^{k_0x_0} |k\rangle

באופן דומה, עבור רגיסטר בעל 2 qbits: 

|x_0,x_1\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2^2}}
      \sum_{k_0=0,1\\k_1=0,1} (-1)^{k_0x_0+k_1x_1} |k_0,k_1\rangle

באופן כללי נגדיר טרנספורם הדמרד שפועל על רגיסטר קוונטי בעל n ביטים:

|x\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{N}} \sum_{k} (-1)^{k
      \cdot x} |k\rangle
באשר

N=2^n

דוגמא לטרנספורם הדמרד על רגיסטר בעל 3 ביטים:

|000\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{2^3}} (|0\rangle
      +|1\rangle )(|0\rangle +|1\rangle )(|0\rangle +|1\rangle)

קיבלנו סופרפוזיציה של כל המצבים האפשריים:

\small |\Psi\rangle \ = \
      \frac{1}{\sqrt{2^3}}\left(|000\rangle+|100\rangle+|010\rangle+|001\rangle+|110\rangle+|011\rangle+|101\rangle
      +|111\rangle\right)

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

פוריה טרנספורם

טרנספורם פורייה (FT) נותן את רכיבי התדר של פונקציה. לדוגמא: את הצליל שיוצר כלי נגינה אפשר לתאר באמצעות פונקציה של הזמן. הפונקציה מאופינת על ידי ספקטרום תדרים. צליל "נקי" מאופין על ידי פונקציה מחזורית שיש לה תדר בסיסי ותדרים עיליים שהם כפולות שלמות של התדר הבסיסי. לעומת זאת צליל רועש מאופין ברצף של תדרים. מבחינה מתמטית התמרת פוריה מוגדרת באופו הבא:

F(\omega) \ \ = \ \ \text{FT}[f(t)] \ \ \equiv \ \
      \frac{1}{\sqrt{N}}\sum_{t}J^{\omega t}f(t)  
באשר

J=e^{i(2\pi/N)}

נשים לב שבמקרה של פונקציה מחזורית ההתמרה מחזירה  0, אלא אם כן \omega הוא התדר של הפונקציה, או כפולה של התדר הבסיסי.

טרנספורם פורייה קוונטי (QFT) מוגדר באנלוגיה מלאה לטרנספורם הדמרד:
 
|x\rangle \ \ \mapsto \ \ \frac{1}{\sqrt{N}}\sum_{k}J^{kx}
      |k\rangle