23-03-2006, 17:13
|
|
|
חבר מתאריך: 07.01.05
הודעות: 5,971
|
|
האלגוריתם של שור
ניתן תחילה את האלגוריתם בלי הרבה הסברים, ואחרי כן נעזר בדוגמא כדי להבהיר כמה נקודות.
כתזכורת: המספר N הוא המספר הגדול שאנחנו רוצים למצוא שני מספרים שהוא מכפלתם.
1. נבחר מספר כלשהו קטן מ-N. נסמן את המספר הזה ב-a
2. נחשב מהו המחלק המשותף הגדול ביותר ל-a ו-N. זוהי אגב, פעולה פשוטה וזולה מבחינה חישובית.
3. אם התוצאה של שלב 2 איננה 1, אזי שיחק מזלנו - מצאנו מחלק של N. אם לא, נמשיך.
4. נמצא את המחזור של הפונקציה f(x)=a^x mod N כאשר x הוא מספר שלם. אנחנו מחפשים מספר שלם r כך ש f(x+r)=f(x)
5. אם r הוא מספר אי זוגי חוזרים לשלב 1.
6. אם המחזור הוא מספר זוגי, מחשבים את המספר z1=a^(r/2) +1 ואת z2=a^(r/2)-1 ומוצאים את המחלק המשותף הגדול ביותר ל-N ולכל אחד מהמספרים z1 ו-z2.
ועכשיו לדוגמא: נניח ש N=15.
1. נבחר a=7
2. האם יש מספר שמחלק את N ואת a ללא שארית? רק המספר 1. 7 מתחלק רק באחד ובעצמו ו-15 אינו כפולה של 7.
3. לא שיחק לנו מזלנו ולכן נמשיך.
4. נחשב עכשיו כמה ערכים של הפונקציה f עבור 0, 1, 2, 3 וכן הלאה. הפונקציה a mod b לוקחת את a מחלקת אותו ב-b ותוצאתה היא השארית של החלוקה.
f(0)=7^0 mod 15 = 1 mod 15 = 1
f(1)=7^1 mod 15 = 7 mod 15 = 7
f(2)=7^2 mod 15 = 49 mod 15 = 4
f(3)=7^3 mod 15 = 343 mod 15 = 13
f(4)=7^4 mod 15 = 2401 mod 15 = 1
אם תמשיכו, תגלו שהערכים הבאים הם 7, 4, 13, 1, 7, 4, 13, 1. כלומר יש לנו סדרה של ארבעה מספרים 1, 7, 4, 13 שחוזרים שוב ושוב. ולכן הפונקציה f היא מחזורית עם מחזור r=4. למשל, f(4)=f(0+4)=f(0)=1 .
5. המחזור, 4, אינו מספר אי זוגי ולכן נמשיך.
6. z1=7^2+1=50 וכן z2=7^2-1=48 . נמצא מחלקים משותפים של 15 עם המספרים האלה:
50 מתחלק ב- 2 וב-5. 15 אינו מתחלק ב-2 אבל הוא אכן מתחלק ב-5.
48 מתחלק ב-3, וב-2. 15 אינו מתחלק ב-2 אבל הוא אכן מתחלק ב-3.
מצאנו לפיכך ש-15 מתחלק ב-5 וב-3.
אין שום דבר קוונטי באלגוריתם הנ"ל, ואכן אפשר ליישם אותו על מחשב קלאסי. הצעד התובעני מבחינה חישובית הוא שלב 4 שבו מוצאים את המחזוריות של הפונקציה f . למעשה, בממוצע אם נחפש את המחזור של הפונקציה נצטרך לבצע את אותו מספר חישובים שהיינו נאלצים לעשות לו היינו מחפשים את המחלקים של N בדרך הנאיבית של ללכת מספר אחר מספר ולבדוק. כאן נחלץ לעזרתנו עקרון הסופרפוזיציה. במקום לחשב את הפונקציה f שוב ושוב, אנחנו מיישמים אותה במחשב קוונטי ומזינים אותה בו זמנית בכל השלמים הרלוונטים, או לפחות בהרבה כאלה. לו היינו צריכים את ערכי הפונקציה זה לא היה עוזר לנו מכיוון שאז היתה קורסת פונקציית הגל ונותנת לנו רק אחד מהערכים, אבל אנחנו צריכים את המחזור של הפונקציה, וזו שאלה אחרת לגמרי. במחשב קוונטי, אפשר לקבל את המחזור של הפונקציה בצעד מתמטי אחד (טרנספורם פורייה למתעניינים).
הנה השורה התחתונה למי ששרד עד כה: האלגוריתם של שור מנצל את עקרון הסופרפוזיציה כדי לחסוך מספר רב של חישובים שנעשים בזה אחר זה במחשב קלאסי, ולעשותם במקביל במחשב קוונטי. הירידה בעלות החישוב, או הסיבוכיות שלו היא דרמטית במידה כזו שהיא הופכת את שיטות ההצפנה המקובלות כיום לחסרות ערך כמעט.
לאחר פרסום האלגוריתם של שור היתה סברה שהלוגיקה הקוונטית תוריד את הסיבוכיות של כל החישובים, וכל הבעיות הלא פולינומיאליות יהפכו לפולינומיאליות ויהפכו לנגישות הרבה יותר לפתרון. עם הזמן הסתבר שזה לא נכון באופן כללי, אבל בכל זאת יש מספר לא מבוטל של בעיות, כמו בעיות חיפוש, שבהן המחשב הקוונטי מתעלה על המחשב הקלאסי ללא שום השוואה. עוד תחום שבו המחשב הקוונטי יהיה ללא ספק יעיל יותר מבחינה חישובית, הוא חישובים מדעיים הנוגעים במערכות קוונטיות. סימולציות של דינמיקה מולקולרית, חישוב מבנה של מולקולות וחישוב תהליכים כימיים למשל, יהיו ככל הנראה מהירים בהרבה ומדוייקים בהרבה לו יבוצעו על מחשבים קוונטיים.
המאמר של שור פרץ דרך בתחום המחשבים הקוונטיים ותורת האינפורמציה הקוונטית בכלל. היום זה תחום פעיל מאד מבחינה מדעית וההתקדמות בו היא עצומה. המחקר מתנהל בשני מישורים: התאורטי והנסיוני. התחום התאורטי, מן הסתם, מתקדם הרבה יותר וחוקרים עוסקים בפיתוח אלגוריתמים, בפיתוח קונספטים לרכיבי המחשב מלבד המעבד, כלומר זכרון, תקשורת וכו'. הנסיונאים בודקים מגוון רחב של מערכות פיזיקליות שמועמדות לתפקד כמעבד קוונטי. ועל כך נרחיב בהמשך.
נערך לאחרונה ע"י Sam Weller בתאריך 23-03-2006 בשעה 17:29.
|