Uma pergunta recente aqui perguntou como compilar o portão CCCZ de 4 qubit (Z controlado-controlado-controlado) em portas simples de 1 e 2 qubit, e a única resposta dada até agora requer 63 portas !
O primeiro passo foi usar a construção C U dada por Nielsen & Chuang:
Com isso significa 4 portas CCNOT e 3 portas simples (1 CNOT e 2 Hadamards são suficientes para fazer a CZ final no qubit de destino e no último qubit de trabalho).
O teorema 1 deste artigo diz que, em geral, o CCNOT requer 9 portas de um qubit e 6 de dois qubit (15 no total):
Isso significa:
(4 CCNOTs) x (15 portas por CCNOT) + (1 CNOT) + (2 Hadamards) = 63 portas totais .
Em um comentário , foi sugerido que os 63 portões possam ser posteriormente compilados usando um "procedimento automático", por exemplo, da teoria dos grupos automáticos .
Como essa "compilação automática" pode ser feita e quanto isso reduziria o número de portas de 1 e 2 qubit nesse caso?
Respostas:
Vamosg1⋯gM ser as portas básicas que você tem permissão para usar. Para os fins deste CNOT12 e CNOT13 etc, são tratados como separados. Então M é polinomialmente dependente de n , o número de qubits. A dependência preciso envolve detalhes dos tipos de portas que você usa e como k -local eles são. Por exemplo, se existem x portas de um qubit e y portas de 2 qubit que não dependem de ordem como CZ então .M=xn+(n2)y
Um circuito é então um produto desses geradores em alguma ordem. Mas existem vários circuitos que não fazem nada. Como . Então, aqueles dão relações ao grupo. Ou seja, é uma apresentação em grupo em que existem muitas relações que não conhecemos.CNOT12CNOT12=Id ⟨ g 1 ⋯ g M | R 1 ⋯ ⟩ ⟨g1⋯gM∣R1⋯⟩
O problema que queremos resolver recebe uma palavra nesse grupo, qual é a palavra mais curta que representa o mesmo elemento. Para apresentações em grupo, isso é inútil. O tipo de apresentação em grupo em que esse problema está acessível é chamado de automático.
Mas podemos considerar um problema mais simples. Se jogarmos fora alguns dos , as palavras de antes ficarão no formato onde cada um dos são palavras apenas nas letras restantes. Se conseguirmos torná-los mais curtos usando as relações que não envolvem o , teremos tornado o circuito inteiro mais curto. Isso é semelhante à otimização dos CNOTs por conta própria, feita na outra resposta.gi w1gi1w2gi2⋯wk wi gi
Por exemplo, se houver três geradores e a palavra for , mas não quisermos lidar com , encurtamos e para e . Em seguida, os reunimos como e isso é um encurtamento da palavra original.aababbacbbaba c w1=aababba w2=bbaba W 1 W 2 W 1 C w 2w^1 w^2 w^1cw^2
Portanto, WLOG (sem perda de generalidade), vamos supor que já estamos nesse problema onde agora usamos todos os portões especificados. Novamente, este provavelmente não é um grupo automático. Mas e se jogarmos fora algumas das relações. Depois, teremos outro grupo que possui um mapa de quociente para o que realmente queremos.⟨g1⋯gM∣R1⋯⟩
O grupo sem relações é um grupo livre , mas se você colocar como uma relação, obterá o produto gratuito e existe um mapa de quociente do anterior para o posterior, reduzindo o número de 's em cada módulo do segmento .⟨g1g2∣−⟩ g 2 1 = i d Z 2 ⋆ Z g 1 2g21=id Z2⋆Z g1 2
As relações que lançamos serão tais que a de cima (a fonte do mapa de quociente) será automática por design. Se usarmos apenas as relações que permanecem e encurtar a palavra, ainda será uma palavra mais curta para o grupo de quocientes. Apenas não será o ideal para o grupo de quocientes (o destino do mapa de quocientes), mas terá o comprimento do comprimento com o qual começou.≤
Essa foi a ideia geral, como podemos transformar isso em um algoritmo específico?
Como escolhemos o e as relações a serem descartadas para obter um grupo automático? É aqui que entra o conhecimento dos tipos de portões elementares que normalmente usamos. Existem muitas involuções, portanto, mantenha-as apenas. Preste muita atenção ao fato de que essas são apenas as involuções elementares; portanto, se o seu hardware tiver dificuldade em trocar qubits amplamente separados no seu chip, isso será gravado apenas naqueles que você pode fazer com facilidade e reduzindo essa palavra a seja o mais curto possível.gi
Por exemplo, suponha que você tenha a configuração da IBM . Então são os portões permitidos. Se você deseja fazer uma permutação geral, decomponha-a em fatores. Essa é uma palavra no grupo que queremos reduzir .s01,s02,s12,s23,s24,s34 si,i+1 ⟨s01,s02,s12,s23,s24,s34∣R1⋯⟩
Observe que essas não precisam ser as involuções padrão. Você pode inserir além de por exemplo. Pense no teorema de Gottesman-Knill , mas de uma maneira abstrata que significa que será mais fácil generalizar. Como usar a propriedade que, em sequências exatas curtas, se você possui sistemas de reescrita finitos e completos para os dois lados, obtém um para o grupo do meio. Esse comentário é desnecessário para o restante da resposta, mas mostra como você pode criar exemplos maiores e mais gerais a partir dos apresentados nesta resposta.R(θ)XR(θ)−1 X
As relações mantidas são apenas as da forma . Isso fornece um grupo Coxeter e é automático. De fato, nem precisamos começar do zero para codificar o algoritmo dessa estrutura automática. Ele já está implementado no Sage (baseado em Python) de propósito geral. Tudo o que você precisa fazer é especificar o e a implementação restante já foi feita. Você pode fazer algumas acelerações em cima disso.(gigj)mij=1 mij
Isso cuidava de todas as relações que envolviam apenas dois portões distintos (prova: exercício). As relações que envolveram ou mais foram descartadas. Agora, nós os colocamos de volta. Digamos que temos isso, para que possamos executar o algoritmo ganancioso de Dehn usando novas relações. Se houve uma mudança, ligamos de volta para percorrer o grupo Coxeter novamente. Isso se repete até que não haja alterações.3
Toda vez que a palavra está diminuindo ou mantendo o mesmo comprimento, estamos usando apenas algoritmos com comportamento linear ou quadrático. Este é um procedimento bastante barato, então é melhor fazê-lo e garantir que você não tenha feito nada estúpido.
Se você mesmo quiser testar, forneça o número de geradores como , o comprimento da palavra aleatória que você está tentando experimentar e a matriz de Coxeter como .N K m
Um exemplo comm
N=28
eK=20
, as duas primeiras linhas são a palavra não reduzida de entrada, as duas seguintes são a palavra reduzida. Espero não ter digitado um erro ao entrar na matriz .esses geradores como , apenas recolocamos relações como e que comuta com portões que não envolvem o qubit . Isso nos permite fazer a decomposição antes de ter o maior tempo possível. Queremos evitar situações como . (No Cliff + T, geralmente se busca minimizar a contagem de T). Para esta parte, o gráfico acíclico direcionado mostrando a dependência é crucial. Esse é um problema de encontrar um bom tipo topológico do DAG. Isso é feito alterando a precedência quando se pode escolher qual vértice usar a seguir. (Eu não perderia tempo otimizando muito essa parte.)Ti Tni=1 Ti i w1gi1w2gi2⋯wk wi X1T2X1T2X1T2X1
Se a palavra já estiver próxima do tamanho ideal, não há muito o que fazer e esse procedimento não ajudará. Mas, como o exemplo mais básico do que ele encontra, se você tiver várias unidades e esquecer que havia um no final de uma e um no início da próxima, ele se livrará desse par. Isso significa que você pode colocar rotinas comuns de caixa preta com mais confiança de que, quando reuni-las, todos os cancelamentos óbvios serão resolvidos. Faz outros que não são tão óbvios; aqueles que usam quando .Hi Hi mij≠1,2
fonte
Usando o procedimento descrito em https://arxiv.org/abs/quant-ph/0303063 1 , qualquer porta diagonal - qualquer uma em particular a porta CCCZ - pode ser decomposta em termos de, por exemplo, CNOTs e portas diagonais de um qubit, onde os CNOTs podem ser otimizados por conta própria, seguindo um procedimento clássico de otimização.
A referência fornece um circuito usando 16 CNOTs para portas diagonais arbitrárias de 4 qubit (Fig. 4).
Observação: Embora possa, em princípio, haver um circuito mais simples (o referido circuito foi otimizado com uma arquitetura de circuitos mais restrita), ele deve estar próximo do ideal - o circuito precisa criar todos os estados da forma para qualquer subconjunto não trivial , e há 15 deles para 4 qubits.⨁i∈Ixi I⊂{1,2,3,4}
Observe também que essa construção de forma alguma precisa ser ideal.
1 Nota: sou um autor
fonte