אלגוריתם שור
הערכת שימוש: שלוש שניות על מעבד Eagle r3 (הערה: זוהי הערכה בלבד. זמן הריצה שלך עשוי להשתנות.)
אלגוריתם שור, שפותח על ידי פיטר שור בשנת 1994, הוא אלגוריתם קוונטי פורץ דרך לפירוק גורמים של מספרים שלמים בזמן פולינומי. משמעותו טמונה ביכולתו לפרק גורמים של מספרים שלמים גדולים במהירות אקספוננציאלית לעומת כל אלגוריתם קלאסי ידוע, תוך איום על אבטחת מערכות קריפטוגרפיות בשימוש נרחב כמו RSA, המסתמכות על הקושי של פירוק גורמים של מספרים גדולים. באמצעות פתרון יעיל של בעיה זו על מחשב קוונטי חזק מספיק, אלגוריתם שור עשוי לחולל מהפכה בתחומים כגון קריפטוגרפיה, אבטחת סייבר ומתמטיקה חישובית, תוך הדגשת הכוח הטרנספורמטיבי של חישוב קוונטי.
מדריך זה מתמקד בהדגמת אלגוריתם שור באמצעות פירוק הגורמים של 15 במחשב קוונטי.
ראשית, אנחנו מגדירים את בעיית מציאת הסדר ובונים מעגלים תואמים מפרוטוקול הערכת הפאזה הקוונטי. לאחר מכן, אנחנו מריצים את מעגלי מציאת הסדר על חומרה אמיתית תוך שימוש במעגלים בעומק הקצר ביותר שאנו יכולים לתרגם. החלק האחרון משלים את אלגוריתם שור על ידי חיבור בעיית מציאת הסדר לפירוק גורמים של מספרים שלמים.
אנחנו מסיימים את המדריך בדיון על הדגמות אחרות של אלגוריתם שור על חומרה אמיתית, תוך התמקדות הן ביישומים גנריים והן באלו המותאמים לפירוק גורמים של מספרים שלמים ספציפיים כגון 15 ו-21. הערה: מדריך זה מתמקד יותר ביישום ובהדגמה של המעגלים הנוגעים לאלגוריתם שור. למשאב חינוכי מעמיק על החומר, ראה בקורס יסודות האלגוריתמים הקוונטיים מאת ד"ר ג'ון ווטרוס, ומאמרים בסעיף הפניות.
דרישות
לפני תחילת מדריך זה, ודא שיש לך את הדברים הבאים מותקנים:
- Qiskit SDK v2.0 ומעלה, עם תמיכה ב-ויזואליזציה
- Qiskit Runtime v0.40 ומעלה (
pip install qiskit-ibm-runtime)
הכנה
# Added by doQumentation — required packages for this notebook
!pip install -q numpy pandas qiskit qiskit-ibm-runtime
import numpy as np
import pandas as pd
from fractions import Fraction
from math import floor, gcd, log
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.circuit.library import QFT, UnitaryGate
from qiskit.transpiler import CouplingMap, generate_preset_pass_manager
from qiskit.visualization import plot_histogram
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
שלב 1: מיפוי קלט קלאסי לבעיה קוונטית
רקע
אלגוריתם שור לפירוק גורמים של מספרים שלמים משתמש בבעיה מתווכת המכונה בעיית מציאת הסדר. בחלק זה, אנחנו מדגימים כיצד לפתור את בעיית מציאת הסדר באמצעות הערכת פאזה קוונטית.
בעיית הערכת פאזה
בבעיית הערכת הפאזה, ניתן לנו מצב קוונטי של קיוביטים, יחד עם מעגל קוונטי יוניטרי הפועל על קיוביטים. ניתנת לנו ההבטחה ש-