Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Kwantumcircuitdiagrammen zijn een visuele weergave van kwantumbewerkingen. Circuitdiagrammen tonen de stroom van qubits via het kwantumprogramma, inclusief de poorten en metingen die het programma toepast op de qubits.
In dit artikel leert u hoe u kwantumalgoritmen visueel kunt vertegenwoordigen met kwantumcircuitdiagrammen in de Azure Quantum Development Kit () met behulp van QDK (Visual Studio Code) en VS CodeJupyter Notebook.
Zie Kwantumcircuitconventies voor meer informatie over kwantumcircuitdiagrammen.
Vereisten
De nieuwste versie van VS Code, of open VS Code voor het web.
De nieuwste versie van de QDK extensie, Python-extensie en Jupyter extensie die is geïnstalleerd in VS Code.
De nieuwste versie van de
qdkPython-bibliotheek met de optionelejupyterextra.python -m pip install --upgrade "qdk[jupyter]"
Kwantumcircuits visualiseren in VS Code
Voer de volgende stappen uit om kwantumcircuits van Q#-programma's in VS Codete visualiseren.
Circuitdiagrammen voor een Q#-programma weergeven
Open een Q#-bestand in VS Codeof laad een van de kwantumvoorbeelden.
Kies de Circuit-opdracht uit de code lens die aan de bewerking van het toegangspunt voorafgaat.
Het Q#-circuitvenster wordt weergegeven en geeft het circuitdiagram voor uw programma weer. Het volgende circuit komt bijvoorbeeld overeen met een bewerking die een qubit in een superpositiestatus plaatst en vervolgens de qubit meet. In het circuitdiagram ziet u één qubitregister dat is geïnitialiseerd naar de status $\ket{0}$. Vervolgens wordt een Hadamard-poort toegepast op de qubit, gevolgd door een meetbewerking, die wordt vertegenwoordigd door een metersymbool. In dit geval is het meetresultaat nul.
Aanbeveling
Selecteer in Q#- en OpenQASM-bestanden een element in het circuitdiagram om de code te markeren waarmee het circuitelement wordt gemaakt.
Circuitdiagrammen voor afzonderlijke bewerkingen weergeven
Als u het kwantumcircuit voor een afzonderlijke bewerking in een Q#-bestand wilt visualiseren, kiest u de Circuit-opdracht in de codelens die voor de bewerking staat.
Circuitdiagrammen weergeven wanneer u foutopsporing uitvoert
Wanneer u het VS Code foutopsporingsprogramma in een Q#-programma gebruikt, kunt u het kwantumcircuit visualiseren op basis van de status van het programma op het huidige onderbrekingspunt van het foutopsporingsprogramma.
- Kies de opdracht debuggen uit de codelens die voorafgaat aan de bewerking van het invoerpunt.
- Vouw in het deelvenster Uitvoeren en foutopsporing de vervolgkeuzelijst Quantum Circuit uit in het menu VARIABELEN . Het QDK circuitvenster wordt geopend, waarin het circuit wordt weergegeven terwijl u het programma doorloopt.
- Stel onderbrekingspunten in en doorloop uw code om te zien hoe het circuit wordt bijgewerkt terwijl uw programma wordt uitgevoerd.
Kwantumcircuits in Jupyter Notebook
In Jupyter Notebookkunt u kwantumcircuits visualiseren met de qdk.qsharp en qdk.widgets Python-modules. De widgets module biedt een widget waarmee een kwantumcircuitdiagram wordt weergegeven als een SVG-afbeelding.
Circuitdiagrammen weergeven voor een invoeruitdrukking
Open VS Codehet menu Beeld en kies Opdrachtpalet.
Voer in en kies Maken: NieuwJupyter Notebook.
Voer in de eerste cel van het notebook de volgende code uit om het
qsharppakket te importeren.from qdk import qsharpMaak een nieuwe cel en voer uw Q#-code in. Met de volgende code wordt bijvoorbeeld een Bell-toestand voorbereid:
%%qsharp // Prepare a Bell State. operation BellState() : Unit { use register = Qubit[2]; H(register[0]); CNOT(register[0], register[1]); }Als u een eenvoudig kwantumcircuit wilt weergeven op basis van de huidige status van uw programma, geeft u een ingangspuntexpressie door aan de
qsharp.circuitfunctie. In het circuitdiagram van de voorgaande code ziet u bijvoorbeeld twee qubitregisters die zijn geïnitialiseerd naar de status $\ket{0}$. Vervolgens wordt een Hadamard-poort toegepast op de eerste qubit. Ten slotte wordt een CNOT-poort toegepast waarbij de eerste qubit het besturingselement is, vertegenwoordigd door een punt en de tweede qubit het doel is, vertegenwoordigd door een X.qsharp.circuit("BellState()")q_0 ── H ──── ● ── q_1 ───────── X ──Als u een kwantumcircuit als een SVG-afbeelding wilt visualiseren, gebruikt u de
widgetsmodule. Maak een nieuwe cel en voer vervolgens de volgende code uit om het circuit te visualiseren dat u in de vorige cel hebt gemaakt.from qdk.widgets import Circuit Circuit(qsharp.circuit("BellState()"))
Circuitdiagrammen weergeven voor bewerkingen met qubits
U kunt circuitdiagrammen genereren van bewerkingen die qubits of reeksen van qubits als invoer gebruiken. In het diagram ziet u een draad voor elke invoer-qubit, samen met draden voor extra qubits die u in de bewerking toewijst. Wanneer de bewerking een matrix van qubits (Qubit[])gebruikt, toont het circuit de matrix als een register van 2 qubits.
Voeg een nieuwe cel toe en kopieer en voer de volgende Q#-code uit. Met deze code wordt een cat-status voorbereid.
%%qsharp operation PrepareCatState(register : Qubit[]) : Unit { H(register[0]); ApplyToEach(CNOT(register[0], _), register[1...]); }Voeg een nieuwe cel toe en voer de volgende code uit om het circuit van de
PrepareCatStatebewerking te visualiseren.Circuit(qsharp.circuit(operation="PrepareCatState"))
Circuitdiagrammen voor dynamische circuits
Circuitdiagrammen worden gegenereerd door de klassieke logica in een Q#-programma uit te voeren en alle toegewezen en toegepaste poorten bij te houden. Lussen en voorwaarden worden ondersteund wanneer ze alleen omgaan met klassieke waarden.
Programma's die lussen en voorwaardelijke expressies bevatten die qubitmetingsresultaten gebruiken, zijn echter lastiger om te vertegenwoordigen met een circuitdiagram. Denk bijvoorbeeld aan de volgende expressie:
if (M(q) == One) {
X(q)
}
Deze expressie kan niet worden weergegeven met een eenvoudig circuitdiagram omdat de poorten afhankelijk zijn van een meetresultaat. Circuits met poorten die afhankelijk zijn van meetresultaten worden dynamische circuits genoemd.
U kunt diagrammen genereren voor dynamische circuits door het programma uit te voeren in de kwantumsimulator en de poorten te traceren terwijl ze worden toegepast. Dit wordt de traceringsmodus genoemd omdat de qubits en poorten worden getraceerd terwijl de simulatie wordt uitgevoerd.
Het nadeel van getraceerde circuits is dat ze alleen het meetresultaat en de consequente poorttoepassingen voor één simulatie vastleggen. Als in het bovenstaande voorbeeld het resultaat van de meting is Zero, bevindt de X poort zich niet in het diagram. Als u de simulatie opnieuw uitvoert, krijgt u mogelijk een ander circuit.