다음의 양자 코드를 (Corlab) 실행해 봅니다.
이것은 1과 2를 더한 것입니다.
실행결과는 Counter({2: 10}) 라고 나옵니다.
뜻은 2라는 결과가 10번 나왔다고 합니다.
위의 코드에서 2가 출력된 이유는 1과 2를 더하는 양자 게이트가 실험을 실행할 때 2가 나오는 경우가 10번 발생했기 때문입니다. 즉, 1과 2를 더해서 3이라는 값이 나올 확률은 0이었거나 매우 작았기 때문에, 2가 나온 횟수가 더 많았던 것입니다.
양자 컴퓨팅에서는 측정 과정에서 확률적인 결과가 나타납니다. 따라서 1과 2를 더한 결과가 3이 나올 확률은 높지만, 2가 나올 확률도 있습니다. 이러한 확률적인 특성 때문에 양자 컴퓨팅에서는 동일한 계산을 여러 번 실행해서 결과를 확인하는 등의 작업이 필요합니다.
양자 컴퓨터는 일반적인 논리 게이트가 아닌 양자 게이트를 사용하기 때문에, 때로는 다른 결과를 낼 수 있습니다. 예를 들어, 두 개의 양자 비트를 더하는 과정에서 캐리(Carry) 값이 발생할 수 있고, 이 캐리 값은 고전 컴퓨팅에서는 필요하지 않은 개념입니다. 따라서 양자 컴퓨터는 덧셈 연산에서도 다른 결과를 낼 수 있습니다.
import cirq # 입력 비트를 저장할 양자 비트 qubits = [cirq.LineQubit(i) for i in range(2)] # 양자 게이트를 사용하여 입력을 준비합니다. circuit = cirq.Circuit( cirq.X(qubits[0]), # 1을 나타내는 비트를 설정합니다. cirq.X(qubits[1]), # 2를 나타내는 비트를 설정합니다. cirq.CNOT(qubits[0], qubits[1]), # XOR 게이트를 수행합니다. cirq.measure(*qubits, key='result') # 결과를 측정합니다. ) # 시뮬레이터를 만들고 양자 회로를 실행합니다. simulator = cirq.Simulator() result = simulator.run(circuit, repetitions=10) # 결과를 출력합니다. print(result.histogram(key='result'))
그럼 3이라는 결과를 내기 위해서는?
양자컴퓨터에서 측정결과는 확률적으로 나타나며, 계산의 정확성은 측정 횟수에 따라 달라집니다.
위에서는 repetitions 값을 10으로 설정하여, 측정을 10번 수행한 결과가 출력되었습니다. 그러나 양자컴퓨터에서는 계산 중간에 상태벡터가 존재하며, 이는 양자역학의 원리에 따라 확률적인 값으로 나타나게 됩니다.
따라서 덧셈 게이트를 사용하여 계산한 후, 측정을 수행하여 3이 출력될 확률이 높은 것으로 나타납니다. 하지만 측정결과는 2가 나올 확률이 존재하기 때문에, 반복횟수를 늘리면 더욱 정확한 결과를 얻을 수 있습니다.
양자 컴퓨팅으로 1과 2를 더하면 3이 아닌 100이 될 수도 있는가?
양자 컴퓨팅에서도 계산에는 오류가 존재할 수 있습니다. 이러한 오류는 노이즈와 양자 비트의 불안정성으로 인해 발생합니다. 그러나 오류는 확률적인 형태로 발생하며, 오류가 발생할 확률은 특히 오류 정정 기술을 이용하여 줄일 수 있습니다. 따라서 이론적으로 가능성은 낮지만 양자 컴퓨팅에서 1과 2를 더하면 3이 아닌 100이 될 수 있는 가능성이 존재합니다.