Pular para o conteúdo principal

IBM Quantum Composer

O que é?

O IBM Quantum® Composer é uma ferramenta gráfica de programação quântica que permite arrastar e soltar operações para construir circuitos quânticos e executá-los em hardware quântico.

O que ele faz?

Visualize estados de qubits

Veja como as alterações no seu circuito afetam o estado dos qubits, exibidos como uma q-sphere interativa ou histogramas mostrando probabilidades de medição ou simulações do vetor de estados.

Execute em hardware quântico

Execute seus circuitos em hardware quântico real para entender os efeitos do ruído do dispositivo.

Gere código automaticamente

Em vez de escrever código manualmente, gere automaticamente código OpenQASM ou Python com o mesmo comportamento do circuito que você criou no Composer.

Tour pela interface

O IBM Quantum Composer possui um conjunto personalizável de ferramentas que permitem construir, visualizar e executar circuitos quânticos em unidades de processamento quântico (QPUs). Use o menu "Mais opções" em cada janela para acessar ferramentas e ações adicionais.

Janela do IBM Quantum Composer.

  1. Catálogo de operações — São os blocos de construção dos circuitos quânticos. Arraste e solte gates e outras operações no editor gráfico de circuitos. Diferentes tipos de gates são agrupados por cor. Por exemplo, gates clássicos são azul escuro, gates de fase são azul claro e operações não unitárias são cinza.

    Para aprender sobre os gates e operações disponíveis, clique com o botão direito em uma operação e selecione Info para ler sua definição.

  2. Editor de código — Use o menu View para abrir ou fechar o editor de código, que permite visualizar o código OpenQASM ou Qiskit do circuito. Você pode editar o código OpenQASM; o código Qiskit é somente leitura.

  3. Editor gráfico de circuitos — É aqui que você constrói um circuito. Arraste gates e outras operações para os "fios" horizontais dos qubits que compõem seu registrador quântico.

    Para remover um gate de um fio, selecione o gate e clique no ícone da lixeira.

    Para editar os parâmetros e configurações de gates que suportam edição, selecione o gate no editor gráfico e clique em Edit.

  4. Barra de ferramentas — Acesse ferramentas de uso frequente para desfazer e refazer ações, alterar o alinhamento dos gates e alternar para o modo de inspeção. Com o modo de inspeção, você vê uma visão passo a passo dos estados dos qubits à medida que a computação do circuito evolui. Para saber mais, consulte Inspecione seu circuito, passo a passo.

  5. Discos de fase — A fase do vetor de estado do qubit no plano complexo é indicada pela linha que se estende do centro do diagrama até a borda do disco cinza (que gira no sentido anti-horário em torno do ponto central).

    Use o menu View para mostrar ou ocultar os discos de fase.

  6. Visualizações — As visualizações caracterizam seu circuito à medida que você o constrói. Elas usam um simulador de vetor de estados de disparo único, que é diferente da QPU especificada nas configurações de "Run circuit". Note que as visualizações ignoram quaisquer operações de medição que você adicionar. Faça login e clique em Run circuit para obter resultados do backend especificado.

    Saiba mais na seção Visualizações.

Construa, edite e inspecione circuitos quânticos

Baixe os arquivos do seu circuito antes de sair do Composer

Se você quiser continuar trabalhando com um circuito posteriormente, certifique-se de baixar o arquivo do circuito e armazená-lo localmente antes de encerrar sua sessão atual no Composer. Use o link "Save file" no canto superior direito, ou vá ao menu File e escolha "Save file". Quando estiver pronto para trabalhar com o circuito novamente, vá ao menu File e escolha "Upload .qasm file", navegue até o arquivo do circuito no seu disco local e clique em Open.

1. Abra o IBM Quantum Composer

  1. (Opcional) Se você não estiver conectado ao IBM Quantum, selecione Sign in no canto superior direito. Em seguida, você pode fazer login ou Criar uma conta IBM Cloud.
nota

Se você não fizer login, as visualizações mostrarão automaticamente resultados simulados para até quatro qubits. Se você quiser executar seu circuito em um computador quântico, ou se quiser visualizar um circuito com mais de quatro qubits, é necessário fazer login.

  1. Abra o IBM Quantum Composer clicando no link na navegação da página Learning. O espaço de trabalho exibe um circuito vazio sem título. Você pode criar um novo circuito ou carregar um arquivo .qasm para continuar trabalhando com um circuito já criado.

  2. Nomeie seu circuito clicando nas palavras Untitled circuit e digitando um nome. Clique na marca de verificação para salvar o nome.

  3. (Opcional) Personalize seu espaço de trabalho:

    • Use o menu View para mudar do tema padrão para um tema monocromático. Você também pode selecionar quais painéis incluir no espaço de trabalho e usar o menu no canto direito de qualquer painel para acessar opções de personalização adicionais. As opções para mostrar ou ocultar discos de fase, escolher o alinhamento dos qubits no seu circuito e redefinir o espaço de trabalho para o padrão também estão no menu View.
    • Alterne entre os temas claro e escuro do espaço de trabalho no canto inferior direito do rodapé.

Para construir um circuito, você pode arrastar e soltar operações ou inserir código OpenQASM no editor de código.

2. Construa seu circuito com arrastar e soltar

Catálogo de operações

Arraste e solte operações do catálogo de operações para os registradores quânticos e clássicos. Clique no ícone de pesquisa e insira um termo na barra de busca para encontrar uma operação rapidamente.

Recolha e expanda o catálogo de operações clicando no ícone no canto superior direito do painel de operações. Clique no ícone ao lado para alternar entre a visualização em grade e em lista do catálogo.

Clique com o botão direito em um ícone de operação e selecione Info para ver a definição de uma operação, junto com sua referência QASM.

Para desfazer ou refazer, use as setas curvas na barra de ferramentas.

Alinhamento

Escolha o alinhamento Freeform para posicionar operações em qualquer lugar no circuito. Para uma visualização mais compacta do seu circuito, escolha o alinhamento Left. Para ver a ordem em que as operações serão executadas, escolha o alinhamento Layers, que aplicará o alinhamento à esquerda e adicionará delimitadores de coluna indicando a ordem de execução, da esquerda para a direita e de cima para baixo.

Depois que as operações forem colocadas no seu circuito, você pode continuar arrastando-as e soltando-as em novas posições.

Copiar e colar

Clique em uma operação e use os ícones no menu contextual para copiá-la e colá-la.

Selecionar múltiplas operações

Você pode selecionar várias operações para copiá-las e colá-las, arrastá-las para um novo local ou agrupá-las em uma operação unitária personalizada que aparece no catálogo de operações e funciona como um único gate.

Para selecionar mais de uma operação, posicione o cursor logo fora de uma das operações, depois clique e arraste pela área para selecionar. Clique com Shift em operações individuais para selecioná-las ou desmarcá-las. Uma linha tracejada contorna o conjunto de operações que você está selecionando, e cada operação que faz parte da seleção fica contornada em azul.

Por exemplo, na imagem a seguir, o gate Hadamard em q1 e o gate CX estão selecionados. O gate Hadamard em q0 não está selecionado.

Um conjunto de operações selecionadas.

Selecione Copy no menu contextual para copiar o grupo.

Para colar o grupo de operações, clique com o botão direito no circuito e selecione Paste.

Crie uma operação personalizada usando o recurso de agrupamento

Para agrupar várias operações e salvá-las como uma operação personalizada, primeiro selecione as operações conforme descrito acima e, em seguida, selecione Group no menu contextual. Você será solicitado a dar um nome à operação personalizada ou pode aceitar o nome padrão. Clique em OK e a operação personalizada será representada por uma única caixa, tanto no circuito quanto no catálogo de operações.

Agora você pode arrastar e soltar a nova operação em qualquer parte do seu circuito. Note que a operação é salva neste circuito, mas não aparece no catálogo de operações de outros circuitos.

Você também pode construir uma operação personalizada diretamente no editor de código OpenQASM; consulte Criar uma operação personalizada em OpenQASM para mais informações.

Desagrupar uma operação personalizada ou predefinida

Para desagrupar os gates dentro de uma operação personalizada ou predefinida, clique na operação no Composer e selecione Ungroup no menu contextual. Agora você pode mover as operações separadas individualmente. Ao desagrupar uma operação, cada elemento do grupo anterior é executado de forma independente, o que pode significar que eles serão executados em uma ordem diferente de quando estavam agrupados.

Expanda a definição de uma operação

Para visualizar as operações que constituem uma operação personalizada ou predefinida sem desagrupá-las, clique em Expand definition no menu contextual para ver os gates que a definem. Clique no ícone novamente para recolher a definição.

Renomear ou excluir uma operação personalizada

Para renomear ou excluir uma operação personalizada, clique com o botão direito na operação no catálogo de operações e selecione Rename ou Delete. Excluir uma operação personalizada do catálogo de operações também exclui todas as instâncias dela no seu circuito.

Excluir uma operação personalizada do próprio circuito não a remove do catálogo de operações; você só pode excluir uma operação personalizada do catálogo clicando com o botão direito e selecionando Delete.

Adicionar ou remover registradores

Para adicionar ou remover registradores quânticos ou clássicos, clique em Edit → Manage registers. Você pode aumentar ou diminuir o número de qubits ou bits no seu circuito e renomear os registradores. Clique em Ok para aplicar as alterações. Você também pode simplesmente clicar no nome do registrador (por exemplo, q[0]) e usar as opções no menu contextual para adicionar ou excluir rapidamente registradores ou qubits.

Adicionar um condicional

Para adicionar um condicional a um gate, arraste a operação if para o gate e defina os parâmetros no painel Edit operation que abre automaticamente. Você também pode dar um duplo clique no gate para acessar o painel Edit operation e definir os parâmetros condicionais dessa forma.

Adicionar um modificador de controle

Um modificador de controle produz um gate cuja operação original passa a depender do estado do qubit de controle. Para mais detalhes, clique com o botão direito no símbolo do modificador de controle no catálogo de operações e, em seguida, clique em Info.

Arraste o modificador de controle para um gate para adicionar um controle a ele. Um ponto aparece no qubit de controle e uma linha o conecta ao qubit alvo. Para editar qual qubit é o controle ou o alvo, clique no gate e selecione o ícone Edit operation (ou dê um duplo clique no gate) para abrir o painel Edit operation e especifique seus parâmetros. No painel Edit operation, você também pode remover um controle de um qubit clicando no x ao lado do nome do qubit.

Visualize com discos de fase ao longo do seu circuito

Para visualizar o estado de todos os qubits em qualquer ponto do seu circuito, arraste o ícone de disco de fase do catálogo de operações e coloque-o em qualquer lugar no circuito. Uma coluna de operações de barreira e uma coluna de discos de fase são adicionadas (uma operação de barreira e um disco de fase por qubit). Passe o cursor sobre cada disco de fase para ler o estado do qubit naquele ponto do circuito. Note que adicionar os discos de fase não altera seu circuito; eles são apenas uma ferramenta de visualização.

Leia mais sobre a visualização de disco de fase aqui.

Exportar uma imagem do circuito

Para exportar uma imagem do seu circuito, selecione File → Export circuit image. A janela Export options abre, onde você pode escolher um tema (claro, escuro, branco sobre preto ou preto sobre branco), um formato (.svg ou .png) e se deseja aplicar uma quebra de linha. Após escolher suas opções, clique em Export.

3. Construa seu circuito com código OpenQASM

nota

O IBM Quantum Composer atualmente suporta OpenQASM 2.0.

DeclaraçãoDescriçãoExemplo
OPENQASM 2.0;Indica um arquivo no formato OpenQASM (veja [a])OPENQASM 2.0;
qreg name[size];Declara um registrador nomeado de qubitsqreg q[5];
creg name[size];Declara um registrador nomeado de bitscreg c[5];
include "filename";Abre e analisa outro arquivo fonteinclude "qelib1.inc";
gate name(params) qargsDeclara um gate unitário(veja o texto do artigo)
opaque name(params) qargs;Declara um gate opaco(veja o texto do artigo)
// comment textComenta uma linha de texto// oops!
U(theta,phi,lambda) qubit|qreg;Aplica gate(s) de qubit único embutido(s) (veja [b])U(pi/2,2*pi/3,0) q[0];
CX qubit|qreg,qubit|qreg;Aplica gate(s) CNOT embutido(s)CX q[0],q[1];
measure qubit|qreg -> bit|creg;Realiza medição(ões) na base ZZmeasure q -> c;
reset qubit|qreg;Prepara qubit(s) no estado 0\vert 0\ranglereset q[0];
gatename(params) qargs;Aplica um gate unitário definido pelo usuáriocrz(pi/2) q[1],q[0];
if(creg==int) qop;Aplica condicionalmente uma operação quânticaif(c==5) CX q[0],q[1];
barrier qargs;Impede transformações além desta linha fontebarrier q[0],q[1];

[a] Isso deve aparecer como a primeira linha que não seja comentário no arquivo.

[b] Os parâmetros theta, phi e lambda são fornecidos por expressões de parâmetros; para mais informações, veja a página 5 do artigo e o Apêndice A.

Criar uma operação personalizada em OpenQASM

Você pode definir novas operações unitárias no editor de código (veja a figura abaixo para um exemplo). As operações são aplicadas usando a declaração name(params) qargs;, assim como as operações embutidas. Os parênteses são opcionais se não houver parâmetros.

Para definir uma operação personalizada, insira-a no editor de código OpenQASM usando este formato: gatename(params) qargs;. Se você clicar em +Add na lista de operações, será solicitado que você insira um nome para sua operação personalizada, que você pode então construir no editor de código.

Depois de definir sua operação personalizada, arraste-a para o editor gráfico e use o ícone de edição para ajustar os parâmetros com precisão.

Exemplo de uma operação personalizada
Os gates a serem incluídos na operação personalizada:Gates na operação personalizada
O código para a nova operação:Nova operação personalizada
A nova operação no editor gráfico:Nova operação

4. Inspecione seu circuito, passo a passo

O modo de inspeção desmistifica o funcionamento interno dos circuitos que você cria. Ele percorre uma simulação do seu circuito, uma camada por vez, para que você possa ver o estado dos qubits à medida que a computação evolui.

  • No menu View, selecione os painéis para as visualizações que você deseja usar.

  • Clique no botão de alternância Inspect na barra de ferramentas. Note que, uma vez ativado o modo de inspeção, você não pode adicionar mais operações até que ele seja desativado novamente.

  • Se você construiu seu circuito com o alinhamento Freeform ativado, note que o modo de inspeção ativa automaticamente o alinhamento Left.

  • Para avançar passo a passo pelas visualizações dos componentes do seu circuito, use os botões de avançar e retroceder.

Controles para avançar e retroceder, e para pular para o início ou fim de um circuito.

  • Para inspecionar apenas algumas operações, clique nas operações que deseja inspecionar; uma sobreposição colorida aparece sobre cada uma indicando que elas serão incluídas quando você executar no modo de inspeção. Para desmarcar uma operação, clique nela novamente e a sobreposição desaparece.

  • Para saber mais sobre como interpretar as visualizações, consulte o tópico Visualizações.

  • Para sair do modo de inspeção e retornar à edição do circuito, clique no botão de alternância Inspect na barra de ferramentas.

Aleatoriedade no simulador

O simulador cria aleatoriedade gerando resultados com base em uma semente. A semente é o valor inicial introduzido no algoritmo que gera números pseudoaleatórios. Você pode ver o número da semente selecionando "Visualizations seed" no menu Edit. Você também pode definir a semente manualmente alterando o valor na caixa.

Execute circuitos e veja os resultados

Siga os passos abaixo para executar circuitos quânticos em QPUs e visualizar os resultados.

Escolha as configurações do seu job

Clique em Run circuit no canto superior direito. Na janela que abre, selecione uma QPU disponível. Você também pode escolher uma instância, que está associada a um plano (como os planos Open, Flex ou Premium). A instância escolhida afeta quais QPUs estão disponíveis para você. Clique no link "View details" na tabela de QPUs para ver mais informações sobre cada QPU.

Em seguida, você pode definir o número de shots (execuções) do seu circuito que o backend realizará.

Opcionalmente, você pode nomear o job e adicionar tags neste painel. Isso não alterará o nome do circuito. Uma tag "Composer" pré-preenchida facilita a filtragem da tabela de Workloads por jobs do Composer. Você pode remover essa tag.

Janela exibindo as opções do job.

nota

Quando você executa um circuito, ele é enviado automaticamente para a QPU menos ocupada, a menos que você especifique uma QPU nas configurações de execução. Se você executar o mesmo circuito novamente, a janela de seleção de QPU usará como padrão sua escolha anterior.

Clique em "Run on (nome da QPU)"

Você pode acompanhar o progresso do job clicando no botão "View jobs" no canto superior direito, que abrirá a página Workloads no IBM Quantum Platform.

Veja os resultados

Quando seu job for concluído, os detalhes são atualizados na tabela Workloads no IBM Quantum Platform.

A página de resultados de Jobs exibe detalhes da execução, diagramas do circuito original e do circuito transpilado, um histograma dos resultados e abas OpenQASM e Qiskit para visualizar os circuitos original e transpilado em OpenQASM ou Qiskit.

Você pode baixar os circuitos e o histograma clicando no menu no canto superior direito de cada diagrama e selecionando um formato para o download (PNG, PDF ou SVG; adicionalmente, você pode exportar o histograma como um arquivo CSV). Você pode abrir os circuitos OpenQASM diretamente no Composer.

Visualizações

As visualizações ao vivo no IBM Quantum Composer mostram diferentes visões de como os circuitos quânticos afetam o estado de uma coleção de qubits. Cada tipo de visualização ao vivo é explicado em detalhes abaixo.

Aleatoriedade no simulador

As visualizações ao vivo provêm de um simulador de vetor de estados de disparo único, que é diferente da QPU especificada nas configurações de execução, que pode ter múltiplos shots. O simulador cria aleatoriedade gerando resultados com base em uma semente. A semente é o valor inicial introduzido no algoritmo que gera números pseudoaleatórios. Você pode ver o número da semente selecionando "Visualizations seed" no menu Edit. Você também pode definir a semente manualmente alterando o valor na caixa.

Ver visualizações

As visualizações ao vivo são exibidas em janelas na parte inferior do espaço de trabalho do Composer (exceto o disco de fase, que aparece no final de cada fio de qubit). Você pode escolher qualquer combinação de visualizações de vetor de estados, probabilidades e q-sphere para aparecer na parte inferior do espaço de trabalho. Selecione ou desmarque visualizações no menu View.

Baixar visualizações

Baixe uma das visualizações na parte inferior do espaço de trabalho do Composer clicando no menu "More options" na janela de visualização. Você pode baixar visualizações como SVG, PNG ou CSV dos dados subjacentes. Você também pode baixar as imagens de visualização das probabilidades de medição e histogramas do vetor de estados como PDF.

Disco de fase

Um estado de qubit único pode ser representado como

ψ=1p0+ejφp1,\begin{split}\vert\psi\rangle = \sqrt{1-p}\vert0\rangle + e^{j\varphi} \sqrt{p} \vert1\rangle,\end{split}

onde pp é a probabilidade de o qubit estar no estado 1|1\rangle, e φ\varphi é a fase quântica. pp é fortemente análogo a um bit probabilístico clássico. Para p=0p=0, o qubit está no estado 0|0\rangle; para p=1p=1, o qubit está no estado 1|1\rangle; e para p=1/2p=1/2, o qubit é uma mistura 50/50. Chamamos isso de superposição, pois, ao contrário dos bits clássicos, essa mistura pode ter uma fase quântica. O disco de fase visualiza esse estado.

O disco de fase no final de cada qubit no IBM Quantum Composer fornece o estado local de cada qubit ao final da computação. Os componentes do disco de fase são descritos abaixo.

Probabilidade de o qubit estar no estado 1|1\rangle

A probabilidade de o qubit estar no estado 1|1\rangle é representada pelo preenchimento azul do disco.

probabilidade de o qubit estar no estado 1

Fase quântica

A fase quântica do estado do qubit é indicada pela linha que se estende do centro do diagrama até a borda do disco cinza (que gira no sentido anti-horário em torno do ponto central).

fase do estado local do qubit

Exemplo: discos de fase para dois qubits diferentes

exemplos de discos de fase

Dois exemplos da visualização de disco de fase. O primeiro exemplo é um estado 1|1\rangle e o segundo mostra o estado (01)/2(|0\rangle-|1\rangle)/\sqrt{2} com uma fase relativa não nula.

Conexão com a esfera de Bloch

O disco de fase, que contém todas as informações da esfera de Bloch, é uma representação bidimensional de um qubit. Para converter para a representação da esfera de Bloch: x=2p(1p)Re[ejφ]x=2\sqrt{p(1-p)}\mathrm{Re}[e^{j\varphi} ], y=2p(1p)Im[ejφ]y=2\sqrt{p(1-p)}\mathrm{Im}[e^{j\varphi} ] e z=12pz=1-2p.

Estados de N qubits: máximo de 15 qubits

Um estado quântico de N qubits tem a forma

ψ=1p0...0+k=12N1ejφkpkk,\begin{split}\vert\psi\rangle = \sqrt{1-p}\vert0...0\rangle + \sum_{k=1}^{2^N-1}e^{j\varphi_k} \sqrt{p_k} \vert k\rangle,\end{split}

onde pkp_k é a probabilidade de os qubits estarem no estado k|k\rangle com fase quântica φk\varphi_k em relação ao estado 0...0|0...0\rangle. p=k0pkp=\sum_{k\neq0}p_k é a probabilidade de os qubits não estarem no estado fundamental 0...0|0...0\rangle. Aqui é simples ver que para um estado quântico de N qubits há 2N12^N-1 probabilidades e 2N12^N-1 fases. O disco de fase não consegue representar esse estado, pois discos de fase de N qubits conteriam apenas NN probabilidades e NN fases; isso ocorre porque a maioria dos estados é entrelaçada e não é separável em estados quânticos de qubit único independentes. Para representar que as informações completas não estão contidas nessa visualização, introduzimos a pureza reduzida como um componente no disco de fase.

Pureza reduzida do estado do qubit

O raio do anel preto representa a pureza reduzida do estado do qubit, que para o qubit jj em um estado ψ|\psi\rangle de NN qubits é dada por Tr[Trij[ψψ]2]\mathrm{Tr}\left[\mathrm{Tr}_{i\neq j}[\left|\psi\rangle\langle\psi\right|\right]^{2}]. A pureza reduzida de um único qubit está na faixa [0.5,1][0.5, 1]; um valor de um indica que o qubit não está entrelaçado com nenhuma outra parte. Por outro lado, uma pureza reduzida de 0.50.5 mostra que o qubit está em um estado completamente misto e possui algum nível de entrelaçamento com os N1N-1 qubits restantes, e possivelmente também com o ambiente.

pureza do estado do qubit

Visualização de probabilidades

Limite de 8 qubits

Esta visualização representa as probabilidades do estado quântico como um gráfico de barras. O eixo horizontal identifica os estados da base computacional. O eixo vertical mede as probabilidades em porcentagens. Nesta visualização, as fases quânticas não são representadas, sendo, portanto, uma representação incompleta. No entanto, é útil para prever os resultados caso cada qubit seja medido e o valor armazenado em seu próprio bit clássico.

Considere o seguinte circuito quântico e sua visualização de probabilidades:

um circuito quântico

visualização das probabilidades de medição

O circuito coloca os dois qubits no estado ψ=(00+01+1011)/2.|\psi\rangle = (|00\rangle + |01\rangle+ |10\rangle-|11\rangle) / 2. Os estados da base computacional são 00,10,01,|00\rangle, |10\rangle, |01\rangle, e 11.|11\rangle. As probabilidades para cada um dos estados computacionais é 1/4.

Visualização Q-sphere

Limite de 5 qubits

A q-sphere representa o estado de um sistema de um ou mais qubits associando cada estado da base computacional a um ponto na superfície de uma esfera. Um nó é visível em cada ponto. O raio de cada nó é proporcional à probabilidade (pkp_k) do seu estado de base, enquanto a cor do nó indica a fase quântica (φk\varphi_k).

Os nós são distribuídos na q-sphere de modo que o estado de base com todos os zeros (por exemplo, 000|000\rangle) fique no polo norte, e o estado de base com todos os uns (por exemplo, 111|111\rangle) fique no polo sul. Estados de base com o mesmo número de zeros (ou uns) ficam na mesma latitude da q-sphere (por exemplo, 001,010,100|001\rangle, |010\rangle, |100\rangle). Começando no polo norte da q-sphere e progredindo para o sul, cada latitude sucessiva tem estados de base com um número maior de uns; a latitude de um estado de base é determinada por sua distância de Hamming em relação ao estado zero. A q-sphere contém informações completas sobre o estado quântico em uma representação compacta.

Considere o seguinte circuito quântico e sua q-sphere, que representa o estado criado pelo circuito:

um circuito quântico

visualização q-sphere

Você pode clicar, segurar e arrastar para girar a q-sphere. Para retornar a q-sphere à sua orientação padrão, selecione o botão de seta de retrocesso no canto superior direito da q-sphere.

Qual é a diferença entre a esfera de Bloch e a q-sphere?

É importante destacar que a q-sphere não é o mesmo que a esfera de Bloch, mesmo para um único qubit. De fato, assim como o disco de fase, a esfera de Bloch oferece uma visão local do estado quântico, onde cada qubit é observado individualmente. Ao tentar entender como registradores de qubits (estados de múltiplos qubits) se comportam com a aplicação de circuitos quânticos, é mais esclarecedor adotar uma visão global e observar o estado quântico em sua totalidade. A q-sphere fornece uma representação visual do estado quântico e, portanto, esse ponto de vista global. Por isso, ao explorar aplicações e algoritmos quânticos com um pequeno número de qubits, a q-sphere deve ser o método de visualização principal.

Visualização do vetor de estados

Limite de 6 qubits

É comum chamar pkeiφk\sqrt{p_k}e^{i\varphi_k} de amplitude quântica. Esta visualização representa as amplitudes quânticas como um gráfico de barras. O eixo horizontal identifica os estados da base computacional. O eixo vertical mede a magnitude das amplitudes (pk\sqrt{p_k}) associadas a cada estado da base computacional. A cor de cada barra representa a fase quântica (φk{\varphi_k}).

Considere o seguinte circuito quântico e sua visualização do vetor de estados:

um circuito quântico

visualização do vetor de estados

O circuito coloca os dois qubits no estado ψ=(00+01+1011)/2|\psi\rangle = (|00\rangle + |01\rangle+ |10\rangle-|11\rangle) / 2. Os estados da base computacional são 00|00\rangle, 10|10\rangle, 01|01\rangle e 11|11\rangle. As magnitudes das amplitudes são 1/21/2, e as fases quânticas em relação ao estado fundamental são 00 para 01|01\rangle e 10|10\rangle, e π\pi para 11|11\rangle.

Glossário de operações do Composer

Esta página é uma referência que define as diversas operações clássicas e quânticas que você pode usar para manipular qubits em um circuito quântico. As operações quânticas incluem gates quânticos, como o gate Hadamard, bem como operações que não são gates quânticos, como a operação de medição.

Cada entrada abaixo fornece detalhes e a referência OpenQASM de cada operação. Consulte o tópico sobre Construir seu circuito com código OpenQASM para mais informações.

A imagem da q-sphere em cada entrada de gate mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}|i\rangle, onde nn é o número de qubits necessário para suportar o gate. Consulte o tópico q-sphere para mais informações sobre essa visualização.

Você pode definir uma operação personalizada para usar no IBM Quantum Composer. Para instruções, consulte o tópico Criar uma operação personalizada em OpenQASM.

Cores dos gates

As cores dos gates são ligeiramente diferentes nos temas claro e escuro. As cores do tema claro são mostradas aqui.

Clique em uma operação quântica abaixo para ver sua definição.

Gates clássicos

Gate NOT

O gate NOT, também conhecido como gate Pauli X, inverte o estado 0\left|0\right\rangle para 1\left|1\right\rangle, e vice-versa. O gate NOT é equivalente a RX para o ângulo π\pi ou a 'HZH'.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
x_gatex q[0];image19A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate CNOT

O gate NOT controlado, também conhecido como gate X controlado (CX), atua sobre um par de qubits, com um funcionando como 'controle' e o outro como 'alvo'. Ele aplica um NOT no alvo sempre que o qubit de controle estiver no estado 1\left|1\right\rangle. Se o qubit de controle estiver em superposição, esse gate cria entrelaçamento.

Todos os circuitos unitários podem ser decompostos em gates de qubit único e gates CNOT. Como o gate CNOT de dois qubits custa muito mais tempo para ser executado em hardware real do que os gates de qubit único, o custo de um circuito às vezes é medido pelo número de gates CNOT.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
CX-Gatecx q[0], q[1];image19A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate Toffoli

O gate Toffoli, também conhecido como gate NOT duplamente controlado (CCX), possui dois qubits de controle e um alvo. Ele aplica um NOT no alvo somente quando ambos os controles estão no estado 1\left|1\right\rangle.

O gate Toffoli combinado com o gate Hadamard forma um conjunto de gates universal para computação quântica.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
ccx-gateccx q[0], q[1], q[2];ccx_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate SWAP

O gate SWAP troca os estados de dois qubits.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
SWAP gateswap q[0], q[1];swap_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate identidade

O gate identidade (às vezes chamado de Id ou gate I) é, na prática, a ausência de um gate. Ele garante que nada seja aplicado a um qubit durante uma unidade de tempo de gate.

Referência no ComposerReferência Qasm
Identity gateid q[0];

Gates de fase

Gate T

O gate T é equivalente a RZ para o ângulo π/4\pi/4. Computadores quânticos tolerantes a falhas compilarão todos os programas quânticos reduzindo-os apenas ao gate T e seu inverso, bem como aos gates de Clifford.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
t_gatet q[0];image29A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate S

O gate S aplica uma fase ii ao estado 1\left|1\right\rangle. É equivalente a RZ para o ângulo π/2\pi/2. Note que S=P(π/2\pi/2).

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
s_gates q[0];image25A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate Z

O gate Pauli Z age como identidade no estado 0\left|0\right\rangle e multiplica o sinal do estado 1\left|1\right\rangle por -1. Por isso, ele inverte os estados +\left|+\right\rangle e \left|-\right\rangle. Na base +/-, ele desempenha o mesmo papel que o gate NOT na base 0\left|0\right\rangle/1\left|1\right\rangle.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
z_gatez q[0];image23A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate TT^{\dagger}

Também conhecido como gate Tdg ou T-dagger.

O inverso do gate T.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
T-dagger gatetdg q[0];image31A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate SS^{\dagger}

Também conhecido como gate Sdg ou S-dagger.

O inverso do gate S.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
S-dagger gatesdg q[0];image27A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate de fase

O gate de fase (anteriormente chamado de gate U1) aplica uma fase eiθe^{i\theta} ao estado 1\left|1\right\rangle. Para certos valores de θ\theta, ele é equivalente a outros gates. Por exemplo, P(π\pi)=Z, P(π\pi/22)=S e P(π/4\pi/4)=T. A menos de uma fase global eiθ/2e^{i\theta/2}, ele é equivalente a RZ(θ\theta).

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
p_gatep(theta) q[0];p_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para theta é π/2\pi/2.

Gate RZ

O gate RZ implementa exp(iθ2Z)exp(-i\frac{\theta}{2}Z). Na esfera de Bloch, esse gate corresponde a rotacionar o estado do qubit em torno do eixo z pelo ângulo fornecido.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rz_gaterz(angle) q[0];image17A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2. Por isso, esse é o ângulo utilizado na visualização da q-sphere.

Operadores não unitários e modificadores

Operação de reset

A operação de reset retorna um qubit ao estado 0\left|0\right\rangle, independentemente de seu estado anterior à aplicação da operação. Não é uma operação reversível.

Referência no ComposerReferência OpenQASM
0-operareset q[0];

Medição

Medição na base padrão, também conhecida como base z ou base computacional. Pode ser usada para implementar qualquer tipo de medição quando combinada com gates. Não é uma operação reversível.

Referência no ComposerReferência OpenQASM
Measurement in the standard or z basismeasure q[0];

Modificador de controle

Um modificador de controle produz um gate cuja operação original passa a depender do estado do qubit de controle. Quando o controle está no estado 1|1\rangle, o(s) qubit(s) alvo sofrem a evolução unitária especificada. Em contrapartida, nenhuma operação é realizada se o controle estiver no estado 0|0\rangle. Se o controle estiver em superposição, a operação resultante decorre da linearidade.

Arraste o modificador de controle até um gate para adicionar um controle a ele. Pontos aparecerão acima e abaixo do gate, nos fios de qubit que podem ser alvos do controle; clique em um ou mais pontos para atribuir o alvo a um ou mais qubits. Você também pode atribuir um controle clicando com o botão direito em um gate.

Para remover um controle, clique com o botão direito no gate e selecione a opção de remover controle.

Referência no ComposerReferência OpenQASM
Control modifierc

Operação de barreira

Para tornar seu programa quântico mais eficiente, o compilador tentará combinar gates. A barreira é uma instrução ao compilador para impedir que essas combinações sejam feitas. Além disso, ela é útil para visualizações.

Referência no ComposerReferência OpenQASM
barrierbarrier q;

Gate Hadamard

Gate H

O gate H, ou Hadamard, rotaciona os estados 0\left|0\right\rangle e 1\left|1\right\rangle para +\left|+\right\rangle e \left|-\right\rangle, respectivamente. É muito útil para criar superposições. Se você tiver um conjunto de gates universal em um computador clássico e adicionar o gate Hadamard, ele se torna um conjunto de gates universal em um computador quântico.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
h-gateh q[0];image1A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gates quânticos

Gate X\sqrt{X}

Também conhecido como gate raiz quadrada do NOT.

Esse gate implementa a raiz quadrada de X, X\sqrt{X}. Aplicá-lo duas vezes consecutivas produz o gate Pauli-X padrão (gate NOT). Assim como o gate Hadamard, o X\sqrt{X} cria um estado de superposição igual quando o qubit está no estado 0|0\rangle, mas com uma fase relativa diferente. Em alguns hardwares, é um gate nativo que pode ser implementado com um pulso π/2\pi/2 ou X90.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
sx_gatesx q[0];sx_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate X\sqrt{X}^{\dagger}

Também conhecido como gate SXdg ou raiz quadrada do NOT-dagger.

Este é o inverso do gate X\sqrt{X}. Aplicá-lo duas vezes consecutivas produz o gate Pauli-X (gate NOT), uma vez que o gate NOT é seu próprio inverso. Assim como o gate X\sqrt{X}, esse gate pode ser usado para criar um estado de superposição igual e também é implementado nativamente em alguns hardwares usando um pulso X90.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
sxdg_gatesxdg q[0];sxdg_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate Y

O gate Pauli Y é equivalente a Ry para o ângulo π\pi. É equivalente a aplicar X e Z, exceto por um fator de fase global.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
y_gatey q[0];image21A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate RX

O gate RX implementa exp(iθ2X)exp(-i\frac{\theta}{2}X). Na esfera de Bloch, esse gate corresponde a rotacionar o estado do qubit em torno do eixo x pelo ângulo fornecido.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rx_gaterx(angle) q[0];image13A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2. Por isso, esse é o ângulo utilizado na visualização da q-sphere.

Gate RY

O gate RY implementa exp(iθ2Y)exp(-i\frac{\theta}{2}Y). Na esfera de Bloch, esse gate corresponde a rotacionar o estado do qubit em torno do eixo y pelo ângulo fornecido e não introduz amplitudes complexas.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
ry_gatery(angle) q[0];image15A representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2. Por isso, esse é o ângulo utilizado na visualização da q-sphere abaixo.

Gate RXX

O gate RXX implementa exp(iθ/2XX)\exp(-i \theta/2 X \otimes X). O gate de Mølmer–Sørensen, o gate nativo em sistemas de íons aprisionados, pode ser expresso como uma soma de gates RXX.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rxx-gaterxx(angle) q[0], q[1];rxx_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2.

Gate RZZ

O gate RZZ requer um único parâmetro: um ângulo expresso em radianos. Esse gate é simétrico; trocar os dois qubits sobre os quais ele atua não muda nada.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rzz_gaterzz(angle) q[0], q[1];rzz_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2.

Gate U

(Anteriormente chamado de gate U3) Os três parâmetros permitem construir qualquer gate de qubit único. Tem duração de uma unidade de tempo de gate.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
u_gateu(theta, phi, lam) q[0];u3_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

No IBM Quantum Composer, o valor padrão para angle é π/2\pi/2.

Gate RCCX

O gate Toffoli simplificado, também conhecido como gate de Margolus.

O gate Toffoli simplificado implementa o gate Toffoli com fases relativas. Essa implementação requer três gates CX, que é o mínimo possível, como demonstrado em https://arxiv.org/abs/quant-ph/0312225. Note que o Toffoli simplificado não é equivalente ao Toffoli, mas pode ser usado em situações onde o gate Toffoli é descomputado novamente.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rccx-gaterccx a, b, c;rccx_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.

Gate RC3X

O gate Toffoli simplificado com 3 controles.

O gate Toffoli simplificado implementa o gate Toffoli com fases relativas. Note que o Toffoli simplificado não é equivalente ao Toffoli, mas pode ser usado em situações onde o gate Toffoli é descomputado novamente.

Referência no ComposerReferência OpenQASMQ-sphereObservação sobre representações na q-sphere
rc3x-gaterc3x a, b, c, d;rc3x_qsphA representação na q-sphere mostra o estado após o gate operar sobre o estado inicial de superposição igual 12ni=02n1i,\frac{1}{\sqrt{2^{n}}}\sum_{i=0}^{2^{n}-1}\vert i\rangle, onde nn é o número de qubits necessário para suportar o gate.