Criar e visualizar circuitos com o circuit editor

Esse circuit editor é um recurso no QDK (Quantum Development Kit) que fornece uma interface gráfica na qual você pode criar, editar e visualizar diagramas de circuito quântico dentro de seus Q# projetos. Você pode usar os circuitos que você cria diretamente em seus programas Q# como operações que podem ser chamadas.

Como acessar o circuit editor

Para começar com o circuit editor, siga estas etapas:

  1. Crie um novo Q# projeto no VS Code ou abra um projeto existente.
  2. Crie um novo arquivo de circuito com a extensão .qsc.
  3. Abra o arquivo de circuito no VS Code.

O circuit editor é a visualização padrão para arquivos .qsc.

circuit editor Características

Veja o que você pode fazer com:circuit editor

Característica Como usar
Expandir o painel visualizador de estado Clique em Visualização de Estado para expandir o painel Visualizador de Estado para exibir o estado quântico resultante da execução do circuito. O painel mostra a densidade e a fase de probabilidade para cada estado base. Você pode usar a Caixa de Ferramentas para editar o circuito e exibir as atualizações do painel ao vivo.
Inserir um elemento de circuito Clique e arraste o elemento da caixa de ferramentas para o diagrama do circuito.
Remover um elemento de circuito Clique e arraste o elemento para fora do diagrama do circuito. Ou clique com o botão direito do mouse no elemento e escolha Excluir no menu de contexto.
Mover um elemento de circuito Clique e arraste o elemento para um novo local no diagrama do circuito.
Copiar um elemento de circuito Mantenha pressionada a tecla Ctrl enquanto clica e arrasta o elemento para um novo local no diagrama do circuito.
Adicionar um qubit Coloque um elemento da caixa de ferramentas em uma nova conexão no diagrama de circuito. Ou mova um elemento existente para um novo fio no diagrama.
Remova um qubit Clique e arraste o ícone de qubit para fora do diagrama do circuito. O qubit inferior é excluído automaticamente quando você remove todos os elementos de circuito desse qubit.
Reorganizar a ordem do qubit Clique e arraste os ícones de qubit no diagrama do circuito.
Adicionar um controle a um portão Clique com o botão direito do mouse no ícone de portão, escolha Adicionar Controle no menu de contexto e escolha o fio do qubit de controle.
Remova um controle de uma porta Clique com o botão direito do mouse no ícone de portão, escolha Remover Controle no menu de contexto e selecione o ícone para o controle que você deseja remover. Você também pode clicar com o botão direito do mouse no ícone de controle diretamente e escolher Remover Controle ou arrastar o ícone de controle para fora do diagrama.
Converta uma porta em seu adjacente Clique com o botão direito no ícone de porta e selecione Alternar adjacente no menu de contexto.
Definir um argumento para um portão Quando você coloca um portão que requer um argumento, uma caixa de prompt é exibida. Insira um número ou expressão na caixa de prompt. Para atualizar o argumento, clique com o botão direito do mouse no portão e escolha Editar Argumento. Ou clique com o botão esquerdo do mouse no texto do argumento no ícone de portão.

Como usar os circuitos circuit editor em seus projetos Q#

Arquivos de circuito com a extensão .qsc definem operações que você pode referenciar no código Q# dentro do mesmo projeto Q#. Os circuitos dos arquivos .qsc aparecem como qualquer outra operação Q# e são compatíveis com o serviço de linguagem Q#, com recursos como conclusões, ajuda de assinatura e definição de meta.

O arquivo de circuito define um namespace que vem do nome do arquivo, semelhante ao funcionamento Q# dos arquivos. O circuito no arquivo .qsc define uma operação Q# que tem o mesmo nome do seu arquivo no mesmo namespace. Por exemplo, para fazer referência a um circuito do arquivo Foo.qsc em seu Q# código, use a seguinte instrução de importação: import Foo.Foo;.

O programa a seguir Q# importa um circuito do arquivo JointMeasurement.qsce, em seguida, chama a JointMeasurement() operação para aplicar o circuito a um sistema de qubits.

    import JointMeasurement.JointMeasurement;

    operation Main() : Result[] {
        use qs = Qubit[4];
        ApplyToEach(H, qs[0..2]);
        let results = JointMeasurement(qs);
        ResetAll(qs);
        results
}