miniaturadaimagem Na criptografia quântica e na computação quântica, um teste de permutação ou teste SWAP (uma operação de troca controlada) é a principal técnica nestas áreas, para determinar com certeza se dois estados desconhecidos são diferentes. Basicamente, o teste SWAP envolve uma porta de Fredkin. 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.

Computação quântica

Na computação quântica, o teste Swap é um procedimento que é usado para verificar o quanto dois estados quânticos diferem.

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 é .

Exemplo Uma implementação do teste Swap em Cirq. """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()

Categoria:Informação Categoria:Computação quântica Categoria:Criptografia Categoria:Métodos formais