Teste de permutação

Na criptografia quântica e na computação quântica,[1][2][3][4] um teste de permutação ou teste SWAP (uma operação de troca controlada) é a principal técnica nestas áreas,[5][6] para determinar com certeza se dois estados desconhecidos são diferentes.[7][8] Basicamente, o teste SWAP envolve uma porta de Fredkin.[9] A porta de Fredkin é um portal multi-qubit representativo e possui um qubit de controle e dois qubits de destino para operação de troca entre si, resultantes do estado do qubit de controle.[10][11]
Computação quântica
Predefinição:Menu lateral ocultável Na computação quântica, o teste Swap é um procedimento que é usado para verificar o quanto dois estados quânticos diferem.[12][13]
Considere dois estados: e .O estado do sistema no início do protocolo é . Após a porta de Hadamard, o estado do sistema é . A porta SWAP controlada transforma o estado em . A segunda porta de Hadamard resulta em
A porta de medição no primeiro qubit garante que seja 0 com uma probabilidade de
quando medido. Se e são ortogonais , então a probabilidade de que 0 seja medido é . Se os estados forem iguais , então a probabilidade de que 0 seja medido é .[14]
Exemplo
Uma implementação do teste Swap em Cirq.[15]
"""Demonstra teste Swap.
=== EXEMPLO DE SAÍDA ===
0: ───H───@───H───M('Resultados')───
│
1: ───H───×──────────────────────
│
2: ───H───×──────────────────────
Os resultados são todos 0, porque os estados são iguais.
Resultados=0000000000
0: ───H───────@───H───M('Resultados')───
│
1: ───X───H───×──────────────────────
│
2: ───H───────×──────────────────────
Nem todos os resultados são 0 porque os estados não são iguais.
Resultados=1111000011
"""
import cirq
def swap_test(q0, q1, q2, circuit):
circuit.append(
[
cirq.H(q0),
cirq.CSWAP(q0, q1, q2),
cirq.H(q0),
cirq.measure(q0, key="Resultados"),
]
)
simulator = cirq.Simulator()
print(circuit)
result = simulator.run(circuit, repetitions=10)
return result
def main():
q0, q1, q2 = cirq.LineQubit.range(3)
equal_states = cirq.Circuit.from_ops(cirq.H(q1), cirq.H(q2),)
results = swap_test(q0, q1, q2, equal_states)
print("Os resultados são todos 0, porque os estados são iguais.")
print(resultados)
non_equal_states = cirq.Circuit.from_ops(cirq.X(q1), cirq.H(q1), cirq.H(q2),)
results = swap_test(q0, q1, q2, non_equal_states)
print("Nem todos os resultados são 0 porque os estados não são iguais.")
print(resultados)
if __name__ == "__principal__":
main()
Predefinição:Referências
Predefinição:Esboço-física
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Cite journal
- ↑ Predefinição:Citar web
- ↑ Predefinição:Cite journal
- ↑ Predefinição:Cite arxiv