Shorův algoritmus
Odhadované využití: Tři sekundy na procesoru Eagle r3 (POZNÁMKA: Jedná se pouze o odhad. Skutečná doba běhu se může lišit.)
Shorův algoritmus, vyvinutý Peterem Shorem v roce 1994, je průlomový kvantový algoritmus pro faktorizaci celých čísel v polynomiálním čase. Jeho význam spočívá ve schopnosti faktorizovat velká celá čísla exponenciálně rychleji než jakýkoli známý klasický algoritmus, čímž ohrožuje bezpečnost široce používaných kryptografických systémů, jako je RSA, které se spoléhají na obtížnost faktorizace velkých čísel. Efektivním řešením tohoto problému na dostatečně výkonném kvantovém počítači by Shorův algoritmus mohl revolucionizovat oblasti jako kryptografie, kybernetická bezpečnost a výpočetní matematika, což podtrhuje transformativní sílu kvantové výpočetní techniky.
Tento tutoriál se zaměřuje na demonstraci Shorova algoritmu faktorizací čísla 15 na kvantovém počítači.
Nejprve definujeme problém hledání řádu a konstruujeme odpovídající Circuit z protokolu kvantového odhadování fáze. Dále spustíme Circuit pro hledání řádu na reálném hardwaru s využitím co nejkratších Circuit, které dokážeme transpilovat. Poslední část dokončuje Shorův algoritmus propojením problému hledání řádu s faktorizací celých čísel.
Tutoriál zakončíme diskusí o dalších demonstracích Shorova algoritmu na reálném hardwaru se zaměřením jak na obecné implementace, tak na ty přizpůsobené faktorizaci konkrétních čísel, jako jsou 15 a 21. Poznámka: Tento tutoriál se více zaměřuje na implementaci a demonstraci Circuit týkajících se Shorova algoritmu. Pro podrobný vzdělávací zdroj k tomuto tématu se prosím podívej na kurz Fundamentals of quantum algorithms od Dr. Johna Watrouse a na články v sekci Odkazy.
Požadavky
Před zahájením tohoto tutoriálu se ujisti, že máš nainstalováno:
- Qiskit SDK v2.0 nebo novější, s podporou vizualizace
- Qiskit Runtime v0.40 nebo novější (
pip install qiskit-ibm-runtime)
Nastavení
# 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
Krok 1: Mapování klasických vstupů na kvantový problém
Pozadí
Shorův algoritmus pro faktorizaci celých čísel využívá pomocný problém označovaný jako hledání řádu. V této části ukážeme, jak řešit problém hledání řádu pomocí kvantového odhadování fáze.
Problém odhadování fáze
V problému odhadování fáze máme dán kvantový stav o Qubitech spolu s unitárním kvantovým Circuit, který působí na Qubitech. Je zaručeno, že je vlastním vektorem unitární matice popisující akci Circuit, a naším cílem je vypočítat nebo přiblížit vlastní hodnotu , které odpovídá. Jinými slovy, Circuit by měl vydat aproximaci čísla splňující
Cílem Circuit pro odhadování fáze je přiblížit na bitů. Matematicky řečeno, chceme najít tak, aby , kde . Následující obrázek ukazuje kvantový Circuit, který odhaduje na bitů provedením měření na Qubitech.
Ve výše uvedeném Circuit je horních Qubitů inicializováno ve stavu a spodních Qubitů ve stavu , který je zaručen jako vlastní vektor . Prvním prvkem Circuit pro odhadování fáze jsou kontrolované unitární operace, které jsou zodpovědné za provádění phase kickback na příslušný řídicí Qubit. Tyto kontrolované unitární operace jsou umocňovány podle pozice řídicího Qubitu, od nejméně významného bitu po nejvýznamnější. Protože je vlastním vektorem , stav spodních Qubitů touto operací není ovlivněn, ale fázová informace vlastní hodnoty se propaguje na horních Qubitů.
Ukázalo se, že po operaci phase kickback prostřednictvím kontrolovaných unitárních operací jsou všechny možné stavy horních Qubitů navzájem ortonormální pro každý vlastní vektor unitárního . Tyto stavy jsou tedy dokonale rozlišitelné a můžeme otočit bázi, kterou tvoří, zpět do výpočetní báze pro měření. Matematická analýza ukazuje, že tato rotační matice odpovídá inverzní kvantové Fourierově transformaci (QFT) v -dimenzionálním Hilbertově prostoru. Intuice za tím je, že periodická struktura operátorů modulárního umocňování je zakódována v kvantovém stavu a QFT převádí tuto periodicitu na měřitelné vrcholy ve frekvenční doméně.
Pro hlubší pochopení toho, proč je Circuit QFT v Shorově algoritmu využíván, odkazujeme čtenáře na kurz Fundamentals of quantum algorithms. Nyní jsme připraveni použít Circuit pro odhadování fáze k hledání řádu.
Problém hledání řádu
Pro definování problému hledání řádu začneme s několika koncepty z teorie čísel. Nejprve pro libovolné kladné celé číslo definujeme množinu jako Veškeré aritmetické operace v se provádějí modulo . Zejména všechny prvky , které jsou nesoudělné s , jsou speciální a tvoří jako Pro prvek je nejmenší kladné celé číslo takové, že definováno jako řád modulo . Jak uvidíme později, nalezení řádu nám umožní faktorizovat . Pro sestavení Circuit pro hledání řádu z Circuit pro odhadování fáze potřebujeme dvě věci. Zaprvé musíme definovat unitární operátor , který nám umožní najít řád , a zadruhé musíme definovat vlastní vektor operátoru pro přípravu počátečního stavu Circuit pro odhadování fáze.
Pro propojení problému hledání řádu s odhadováním fáze uvažujeme operaci definovanou na systému, jehož klasické stavy odpovídají , kde násobíme pevným prvkem . Konkrétně definujeme tento operátor násobení tak, že