Como permutar (reorganizar) uma entrada de n bits?

13

Estou interessado em um algoritmo quântico que obtém como entrada uma sequência de n bits e que produz como saída uma versão embaralhada (permutada) dessa sequência de n bits.

Por exemplo, se a entrada for 0,0,1,1 (então n = 4 neste caso), então as respostas possíveis são:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Observe que apenas uma saída deve ser gerada e escolhida aleatoriamente entre todas as saídas válidas possíveis.

Como isso pode ser melhor implementado em um algoritmo quântico ?

Uma solução para isso já é proposta como parte de uma das respostas para Como criar um algoritmo quântico que produz sequências de 2 n bits com número igual de 1 bits? . Mas o problema com esta solução é que isso requer cerca de qubits de ajuda, que se tornam rapidamente enormes se n for grande.(n2)

Nota:

  • Por favor, não forneça um algoritmo clássico sem nenhuma explicação de como as etapas do algoritmo clássico podem ser mapeadas para um computador quântico universal.
  • para mim, existem 2 boas maneiras de interpretar "escolhidos aleatoriamente entre todos os possíveis bons resultados" : (1) cada bom resultado possível tem chances iguais de ser escolhido. (2) toda boa saída possível tem uma chance> 0 de ser escolhida.
JanVdA
fonte
1
A entrada é uma cadeia binária de comprimento onde dos bits são 1's, e a saída é uma das possíveis permutações dele? Isso pode ser feito em um computador clássico com 1 passo. Deseja todas as saídas possíveis? nk(nk)-1
precisa saber é o seguinte
Não, apenas uma saída deve ser gerada e escolhida aleatoriamente entre todas as saídas possíveis.
JanVdA
Um algoritmo clássico seria bom o suficiente? (Você ainda pode executá-lo em um computador quântico.) Ou precisa de sth. que supera o melhor algoritmo clássico?
Norbert Schuch
1
@JanVdA: Por que não escolher 1 e 0 e trocar os dois em um computador clássico?
user1271772
1
Como você não especificou a distribuição aleatória você quiser, eu vou deixá-los aqui: Dilbert e XKCD ;)
Ali

Respostas:

4

Isso poderia ser feito com qubits adicionais ao longo destas linhas:registron

  1. Transforme os qubits adicionais para que eles codifiquem um número escolhido uniformemente aleatoriamente.k{0 0,...,n-1}

  2. Desloque ciclicamente os qubits de entrada vezes.k

  3. Deixe o último dos qubits de entrada originais ser fixado como saída e recursar no restante deles.n-1

Este é um algoritmo clássico, mas você pode executá-lo em um computador quântico, é claro, como Norbert sugeriu em um comentário. (O aspecto da pergunta que é inflexível sobre o algoritmo ser quântico ainda não está claro para mim; portanto, se executar um algoritmo clássico como o que sugeri em um computador quântico não for suficiente, seria útil que a pergunta fosse seja esclarecido.)

Observe que, como a pergunta solicita uma saída aleatória, o algoritmo precisará gerar entropia em algum momento, presumivelmente através de medições ou executando outras operações não unitárias em qubits (como inicializá-las). No algoritmo acima, é a primeira etapa que gera entropia: independentemente do estado dos qubits adicionais antes da operação na etapa 1, eles devem ter o estado após a etapa 1 ser executada (com codificado em binário, digamos).

1nk=0 0n-1|kk|
k
John Watrous
fonte
obrigado pela resposta. Estou interessado em um algoritmo quântico real para o problema - se você pudesse mapear acima do algoritmo clássico para um programa quântico, ele também funcionaria bem, mas não tenho idéia de como fazer isso.
JanVdA
2
Acho que agora a questão está entrando em foco: você não está realmente procurando por um algoritmo, está procurando por código. O que eu descrevi é um algoritmo, e a tarefa que resta é implementar esse algoritmo (ou um diferente) como código em alguma linguagem ou como a descrição de baixo nível de um circuito quântico. Sugiro que você reveja a pergunta para deixar isso mais claro - mas lembre-se de que está pedindo a alguém que faça um trabalho tedioso e conceitualmente desinteressante para você. A alternativa de aprender a fazer isso sozinha pode parecer assustadora, mas pode acabar sendo a melhor solução a longo prazo.
precisa
Eu adicionei uma nota à pergunta. Penso que interpretamos o conceito de algoritmo quântico de maneira diferente. Para mim, um algoritmo clássico não é um algoritmo quântico, mas pode ser mapeado para um algoritmo quântico .
JanVdA
@JanVdA: O que você quer dizer com algoritmo quântico? Por exemplo, você exige que isso envolva pelo menos um portão ? Ou que requer pelo menos um portão ? Ou que requer algum outro conjunto de portas específico? Qual conjunto de portas você deseja que este algoritmo use? YHY
user1271772
Um algoritmo quântico é um algoritmo que pode ser mapeado (no nível da etapa) para um programa para um computador quântico universal. A entrada e saída das etapas do algoritmo quântico são qubits (ou podem ser mapeadas para uma série de qubits). A última etapa do algoritmo quântico = ler (observar) os valores dos qubits (para que os qubits sejam mapeados para bits reais) Não há restrições no conjunto de portas. A idéia é que o algoritmo completo possa ser executado em um computador quântico universal.
JanVdA
3

Nota: esta resposta assume que você deseja que a permutação seja coerente , ou seja, você deseja em vez de um 1/3 possibilidade de001, um 1/3 possibilidade de010, e um 1/3 possibilidade de100.13(|001+|010+|100)001010100

Tenha cuidado ao especificar essa tarefa, pois ela pode ser facilmente impossível devido a restrições de reversibilidade. Por exemplo, para a entrada pretende reproduzir o estado GHZ | 3|001. Mas se você também deseja gerar o estado GHZ para a entrada| 010e| 100, que não vai funcionar. Você não pode enviar vários estados de entrada para o mesmo estado de saída (sem decoerência). Contanto que você diga "Eu só me importo com entradas ascendentes classificadas como 0000111, mas não 1110000 ou 0010110; você pode fazer o que quiser com elas", tudo ficará bem.|31=13(|001+|010+|100)|010|100

Um truque para produzir uma permutação quântica de uma entrada classificada é primeiro preparar um "estado de permutação" aplicando uma rede de classificação a uma lista de valores de sementes, cada um em uma superposição uniforme. A rede de classificação produzirá qubits com as sementes classificadas, mas também qubits com as comparações da rede de classificação. O estado de permutação é apenas os qubits de comparação. Para aplicá-lo à sua entrada, basta executar a entrada pela rede de classificação ao contrário. Observe que existem alguns detalhes complicados aqui; veja o artigo " Técnicas Aprimoradas para a Preparação de Eigenstates de Hamiltonianos Fermiônicos ". Você precisaria generalizar essa técnica para trabalhar com entradas com valores repetidos, em vez de apenas valores únicos.

|nknk

|000114|41|0011|4216

Craig Gidney
fonte
13(|001+|010+|100)|00113(|001-|010+Eu.|100)
1
@JanVdA Correto, pode-se usar as fases para tornar ortogonais as várias saídas. Minha leitura da sua pergunta foi que você queria a mesma fase em todos os casos.
Craig Gidney
0

Um computador quântico pode fazer cálculos clássicos. O algoritmo ideal seria:

  1. Escolha qualquer bit (o mais rápido que você pode acessar).
  2. Encontre um bit com o valor oposto (se na etapa 1 você obteve um 0, encontre um 1)
  3. Troque-os (0 se torna 1 e 1 se torna 0).

NO(N)nºO(N)

user1271772
fonte
Obrigado, mas o algoritmo trocaria apenas 2 bits (para não gerar todas as permutações) e ainda é um algoritmo clássico, enquanto eu gostaria de ver um algoritmo quântico.
JanVdA