매우 간단한 양자 프로그램은 어떻게 생겼습니까?


15

" 첫 번째 프로그램 가능 양자 광자 칩을 읽은 후 "을 . 양자 얽힘을 사용하는 컴퓨터의 소프트웨어가 어떤 것인지 궁금합니다.

특정 양자 프로그래밍을위한 코드 예제가 있습니까? 의사 코드 나 고급 언어처럼? 특히 Bell 상태를 만드는 데 사용할 수있는 가장 짧은 프로그램은 무엇입니까 으로 초기화 한 상태에서 시작| ψ0=| 00시뮬레이션 및 IBM의 중 하나를 모두 사용하여양자 경험등으로, 프로세서

|ψ=12(|00+|11)
|ψ0=|00 ibmqx4 ?

전통적인 프로그래밍에서 얽힘으로의 개념적 점프는 쉽지 않습니다.


C의 libquantum찾았 습니다.

답변:


12

|Φ+

벨 스테이트

|ψ0|ψ1|ψ2

|ψ0

|ψ0=|00

|ψ1

Hadamard-Gate는 첫 번째 큐 비트에 적용되며 다음과 같은 결과가 발생합니다.

|ψ1=(H나는)|00=H|0|0=12(|0+|1)|0=12(|00+|10)

|ψ2

이제 CNOT 게이트가 적용되고 두 번째 큐 비트를 뒤집지 만 첫 번째 게이트가 값이 1 인 경우에만 결과가 나타납니다.

|ψ2=12(|00+|11)

이 마지막 상태 |ψ2태그 된 상태이며 일반적으로 이러한 상황을 해결할 수있는 가장 자연스러운 방법입니다. 벨 상태는 초 고밀도 코딩 또는 순간 이동과 같은 많은 흥미로운 양자 알고리즘에서 발생합니다.

위의 접근 방식이 일반적인 의미에서 프로그래밍하는 것처럼 보이지는 않지만 게이트를 상태에 적용하는 것은 기본적으로 게이트 기반 양자 컴퓨터 프로그래밍 방식입니다. 고급 프로그래밍을 수행 할 수 있지만 명령을 게이트 응용 프로그램으로 변환 할 수있는 추상화 계층이 있습니다. IBM 양자 경험 인터페이스는 기능을 제공합니다.

Microsoft의 Q #과 같은 언어에서 위 예제는 다음과 유사 할 수 있습니다.

operation BellTest () : ()
{
    body
    {
        // Use two qubits
        using (qubits = Qubit[2])
        {
            Set (One, qubits[0]);
            Set (Zero, qubits[1]);

            // Apply Hadamard gate to the first qubit
            H(qubits[0]);

            // Apply CNOT gate
            CNOT(qubits[0],qubits[1]);
         }
     }
}

보다 자세한 버전 (측정 포함)은 여기에서 찾을 수 있습니다 : Microsoft : Quantum Program 작성 .


14

양자 프로그램을 작성하는 한 가지 방법은 QISKit을 사용하는 것입니다. IBM 디바이스에서 프로그램을 실행하는 데 사용할 수 있습니다. QISKit 웹 사이트는 당신이 원하는대로 얽힌 회로에 당신이 가야 다음 코드를 제안합니다. datell의 답변과 동일한 프로세스입니다. 그것에 대해 한 줄씩 언급하겠습니다.

# import and initialize the method used to store quantum programs
from qiskit import QuantumProgram
qp = QuantumProgram()
# initialize a quantum register of two qubits
qr = qp.create_quantum_register('qr',2) 
# and a classical register of two bits
cr = qp.create_classical_register('cr',2) 
# create a circuit with them which we call 'Bell'
qc = qp.create_circuit('Bell',[qr],[cr]) 
# apply a Hadamard to the first qubit
qc.h(qr[0]) 
# apply a controlled not with the first qubit as control
qc.cx(qr[0], qr[1]) 
# measure the first qubit and store its result on the first bit
qc.measure(qr[0], cr[0]) 
# the same for the second qubit and bit
qc.measure(qr[1], cr[1]) 
# run the circuit
result = qp.execute('Bell') 
# extract the results
print(result.get_counts('Bell')) 

여기서 'execute'명령은 실행할 프로그램 만 지정합니다. 사용하려는 장치, 통계를 얻기 위해 반복하려는 횟수 등과 같은 다른 모든 설정은 기본값으로 설정됩니다. 1024 샷 에 대해 ibmqx4 에서 실행하려면 대신

results = qp.execute(['Bell'], backend='ibmqx4', shots=1024)

4

내가 생각할 수있는 가장 간단한 양자 프로그램은 (1 비트) 실제 난수 생성기입니다. 양자 회로로서 다음과 같습니다.

먼저 주에서 큐 비트를 준비합니다 |0그런 다음하다 마드 게이트를 적용하여 중첩을 만듭니다. 22(|0+|1)그런 다음 계산 기준으로 측정합니다. 측정 결과는|0 또는 |1각 확률은 50 %입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.