Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os diagramas de circuitos quânticos são uma representação visual das operações quânticas. Os diagramas de circuito mostram o fluxo de qubits por meio do programa quântico, incluindo as portas e as medidas que o programa aplica aos qubits.
Neste artigo, você aprenderá a representar visualmente algoritmos quânticos com diagramas de circuito quântico no Azure Quantum Development Kit (QDK) usando Visual Studio Code (VS Code) e Jupyter Notebook.
Para obter mais informações sobre diagramas de circuito quântico, consulte as convenções de circuito quântico.
Pré-requisitos
A versão mais recente de VS Code, ou abrir VS Code para a Web.
A versão mais recente da QDK extensão, extensão Python e Jupyter extensão instalada em VS Code.
A versão mais recente da biblioteca Python
qdkcom ojupyterextra opcional.python -m pip install --upgrade "qdk[jupyter]"
Visualizar circuitos quânticos em VS Code
Para visualizar circuitos quânticos de programas Q# em VS Code, conclua as etapas a seguir.
Exibir diagramas de circuito para um programa Q#
Abra um arquivo Q# ou VS Codecarregue um dos exemplos quânticos.
Escolha o comando Circuito na lente de código que precede a operação do ponto de entrada.
A janela do circuito Q# é exibida e exibe o diagrama de circuito do programa. Por exemplo, o circuito a seguir corresponde a uma operação que coloca um qubit em um estado de superposição e, em seguida, mede o qubit. O diagrama do circuito mostra um registro de qubit inicializado para o estado $\ket{0}$. Em seguida, uma porta Hadamard é aplicada ao qubit, seguida por uma operação de medida, que é representada por um símbolo de medição. Nesse caso, o resultado da medida é zero.
Dica
Em arquivos Q# e OpenQASM, selecione um elemento no diagrama do circuito para realçar o código que cria o elemento de circuito.
Exibir diagramas de circuito para operações individuais
Para visualizar o circuito quântico para uma operação individual em um arquivo Q#, escolha o comando Circuito na lente de código que precede a operação.
Exibir diagramas de circuito ao depurar
Ao usar o depurador VS Code em um programa Q#, é possível visualizar o circuito quântico com base no estado do programa no ponto atual de interrupção do depurador.
- Escolha o comando Depurar na lente de código que precede a operação do ponto de entrada.
- No painel Executar e Depurar , expanda a lista suspensa Circuito Quântico no menu VARIÁVEIS . O QDK painel Circuito é aberto, que mostra o circuito enquanto você percorre o programa.
- Defina pontos de interrupção e percorra seu código para ver como o circuito é atualizado conforme o programa é executado.
Circuitos quânticos em Jupyter Notebook
Em Jupyter Notebook, você pode visualizar circuitos quânticos com os módulos Python qdk.qsharp e qdk.widgets. O widgets módulo fornece um widget que renderiza um diagrama de circuito quântico como uma imagem SVG.
Exibir diagramas de circuito para uma expressão de entrada
In VS Code, abra o menu Exibir e escolha Paleta de Comandos.
Insira e selecione Criar: Novo Jupyter Notebook.
Na primeira célula do notebook, execute o código a seguir para importar o
qsharppacote.from qdk import qsharpCrie uma nova célula e insira seu código Q#. Por exemplo, o código a seguir prepara um Estado de Bell:
%%qsharp // Prepare a Bell State. operation BellState() : Unit { use register = Qubit[2]; H(register[0]); CNOT(register[0], register[1]); }Para exibir um circuito quântico simples com base no estado atual do programa, passe uma expressão de ponto de entrada para a
qsharp.circuitfunção. Por exemplo, o diagrama de circuito do código anterior mostra dois registros qubit inicializados para o estado $\ket{0}$. Em seguida, uma porta Hadamard é aplicada ao primeiro qubit. Por fim, uma porta CNOT é aplicada em que o primeiro qubit é o controle, representado por um ponto, e o segundo qubit é o destino, representado por um X.qsharp.circuit("BellState()")q_0 ── H ──── ● ── q_1 ───────── X ──Para visualizar um circuito quântico como uma imagem SVG, use o
widgetsmódulo. Crie uma nova célula e execute o código a seguir para visualizar o circuito que você criou na célula anterior.from qdk.widgets import Circuit Circuit(qsharp.circuit("BellState()"))
Exibir diagramas de circuito para operações com qubits
Você pode gerar diagramas de circuito de operações que tomam qubits ou matrizes de qubits como entrada. O diagrama mostra um fio para cada qubit de entrada, juntamente com fios para qubits adicionais que você aloca dentro da operação. Quando a operação usa uma matriz de qubits (Qubit[]), o circuito mostra a matriz como um registro de 2 qubits.
Adicione uma nova célula e copie e execute o seguinte código Q#. Esse código prepara um estado cat.
%%qsharp operation PrepareCatState(register : Qubit[]) : Unit { H(register[0]); ApplyToEach(CNOT(register[0], _), register[1...]); }Adicione uma nova célula e execute o código a seguir para visualizar o
PrepareCatStatecircuito da operação.Circuit(qsharp.circuit(operation="PrepareCatState"))
Diagramas de circuito para circuitos dinâmicos
Os diagramas de circuito são gerados executando a lógica clássica dentro de um programa Q# e acompanhando todas as portas alocadas e aplicadas. Há suporte para loops e condicionais quando lidam apenas com valores clássicos.
No entanto, os programas que contêm loops e expressões condicionais que usam resultados de medição de qubit são mais difíceis de representar com um diagrama de circuito. Por exemplo, considere a seguinte expressão:
if (M(q) == One) {
X(q)
}
Essa expressão não pode ser representada com um diagrama de circuito simples porque as portas são condicionais em um resultado de medida. Circuitos com portões que dependem dos resultados da medição são chamados de circuitos dinâmicos.
Você pode gerar diagramas para circuitos dinâmicos executando o programa no simulador quântico e rastreando as portas conforme elas são aplicadas. Isso é chamado de modo de rastreamento porque os qubits e os portões são rastreados à medida que a simulação é executada.
A desvantagem dos circuitos rastreados é que eles capturam apenas o resultado da medida e as aplicações de portas consequentes para uma única simulação. No exemplo acima, se o resultado da medida for Zero, a X porta não estará no diagrama. Se você executar a simulação novamente, poderá obter um circuito diferente.