IBM Quantum Experience와 Blueqat에서 CCX 게이트(토폴리게이트)를 경험해 보세요.

양자 컴퓨터 초보자입니다. 지난번 다음에 IBM Quantum Experience 및 Blueqat을 사용하여 $CCX$ 게이트(토폴리게이트)를 시도해 보십시오.

CCX 게이트(토폴리게이트)



$CCX$ 게이트는 3 양자 비트 연산입니다. $CX$게이트의 확장 버전? 같은 느낌으로, 제어 비트가 1개 증가해 2개 있습니다. 토마소 토폴리에 의해 만들어졌기 때문에 토폴리 게이트라고도합니다.
두 개의 제어 비트가 모두 1이 될 때 대상 비트를 반전합니다.

CCX 게이트 준비



Circuit Composer에서 'q' register qubits를 3으로 설정하여 3 양자 비트로 만듭니다. 또한 $CCX$ 게이트를 배치합니다. 관례에 따라 측정 아이콘도 넣어 둡니다.


Measurement Probability의 결과를 보면 000입니다. 아직 아무것도하고 있지 않기 때문에 당연하네요.


CCX 게이트를 사용해보기



q[0]과 q[1]에 $X$ 게이트를 넣어 동작을 확인해 봅니다.

제어 비트 중 하나만 1인 경우



q[0]에 $X$ 게이트를 적용하여 한쪽만 1 상태로 해 봅니다. 당연히 타겟 비트는 반전되지 않고 그대로 출력되며 결과는 001입니다. Circuit Composer에서는 결과는 후→전의 순서로 나오므로, q[0]의 결과가 마지막 1에 해당합니다.


타겟 비트에 $X$ 게이트를 적용해도 그대로 출력되어 결과는 101이 됩니다.


제어 비트가 모두 1인 경우



q[0]과 q[1] 모두에 $X$ 게이트를 적용하면 타겟 비트가 반전됩니다. 지금 q[2]는 원래 0이므로 반전되어 결과는 111이 되었습니다.


q[2]에도 $X$ 게이트를 적용해 두면, 반전되어 결과는 011이 되었습니다.


Blueqat 코드



비슷한 작업을 Blueqat에서 시도합니다.
from blueqat import Circuit
res = []
res.append(Circuit(3).ccx[0,1,2].m[:].run(shots=1))          #000
res.append(Circuit(3).x[2].ccx[0,1,2].m[:].run(shots=1))     #001
res.append(Circuit(3).x[1].ccx[0,1,2].m[:].run(shots=1))     #010
res.append(Circuit(3).x[1,2].ccx[0,1,2].m[:].run(shots=1))   #011
res.append(Circuit(3).x[0].ccx[0,1,2].m[:].run(shots=1))     #100
res.append(Circuit(3).x[0,2].ccx[0,1,2].m[:].run(shots=1))   #101
res.append(Circuit(3).x[0,1].ccx[0,1,2].m[:].run(shots=1))   #110
res.append(Circuit(3).x[:].ccx[0,1,2].m[:].run(shots=1))     #111

for i in res:
  print(i)

실행하면 두 개의 제어 비트가 모두 1 일 때 (마지막 110과 111) 대상 비트가 반전된다는 것을 알 수 있습니다. 또한 Blueqat에서는 양자 비트의 순서(q[0], q[1], q[2])로 결과가 나옵니다. Circuit Composer와 반대이므로 주의하십시오.
Counter({'000': 1})
Counter({'001': 1})
Counter({'010': 1})
Counter({'011': 1})
Counter({'100': 1})
Counter({'101': 1})
Counter({'111': 1})
Counter({'110': 1})

참고 자료



Blueqat 튜토리얼 토폴리게이트

좋은 웹페이지 즐겨찾기