Qiskit으로 W상태의 폰 노먼 엔트로피를 계산하고 상간성, 얽히고설킨 상호 정보량을 생성한다.
16828 단어 QISKITQiskitIgnisQiskitAer
할 일:
하지 않는 일:
설치 및 import !pip install qiskit
!pip install qiskit-aer-gpu
import qiskit
# Needed for functions
import numpy as np
import time
from copy import deepcopy
# Import Qiskit classes
import qiskit
from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer
from qiskit.quantum_info import state_fidelity, process_fidelity
from qiskit.providers.aer import noise
from qiskit.compiler import assemble
# Tomography functions
from qiskit.ignis.verification.tomography import state_tomography_circuits, StateTomographyFitter
from qiskit.ignis.verification.tomography import process_tomography_circuits, ProcessTomographyFitter
from qiskit.ignis.verification.tomography import gateset_tomography_circuits, GatesetTomographyFitter
import qiskit.ignis.mitigation.measurement as mc
# Auxiliary methods
from qiskit.quantum_info import Choi, Kraus
from qiskit.extensions import HGate, XGate
컨디션
Google colab에서 실행!Python -V
# 3.6.9
qiskit.__version__
# 0.16.0
qiskit.__qiskit_version__
#{'qiskit': None,
# 'qiskit-aer': '0.7.0',
# 'qiskit-aqua': '0.8.0',
# 'qiskit-ibmq-provider': '0.11.0',
# 'qiskit-ignis': '0.5.0',
# 'qiskit-terra': '0.16.0'}
제조 W 상태
나는 매우 깔끔하게 쓴 W 상태 제작 자료를 찾았는데, 여기에 인용한다.
https://github.com/qiskit-community/qiskit-community-tutorials/blob/master/awards/teach_me_qiskit_2018/w_state/W%20State%201%20-%20Multi-Qubit%20Systems.ipynb
지원 함수 정의# Here, two useful routine
# Define a F_gate
def F_gate(circ,q,i,j,n,k) :
theta = np.arccos(np.sqrt(1/(n-k+1)))
circ.ry(-theta,q[j])
circ.cz(q[i],q[j])
circ.ry(theta,q[j])
circ.barrier(q[i])
# Define the cxrv gate which uses reverse CNOT instead of CNOT
def cxrv(circ,q,i,j) :
circ.h(q[i])
circ.h(q[j])
circ.cx(q[j],q[i])
circ.h(q[i])
circ.h(q[j])
circ.barrier(q[i],q[j])
3 - qubit의 상황을 고려해 보세요.# 3-qubit W state
flag_qx2 = True
n = 3
q_w = QuantumRegister(n)
W_states = QuantumCircuit(q_w)
W_states.x(q_w[2]) #start is |100>
F_gate(W_states,q_w,2,1,3,1) # Applying F12
F_gate(W_states,q_w,1,0,3,2) # Applying F23
if flag_qx2 : # option ibmqx2
W_states.cx(q_w[1],q_w[2]) # cNOT 21
W_states.cx(q_w[0],q_w[1]) # cNOT 32
else : # option ibmqx4
cxrv(W_states,q_w,1,2)
cxrv(W_states,q_w,0,1)
print(W_states)
상술한 코드의 회로는 다음과 같다.
단층 촬영.
각 물리량을 계산하기 위해서는 두 개의 양자 비트의 밀도 행렬이 필요하기 때문에 층분해 영상 측정을 한다.
그때state_tomography_circuits
와 StateTomographyFitter
를 이용한다.
우선, W 상태의 상태 벡터를 준비합니다.backend = Aer.get_backend('statevector_simulator')
# backend_options = {"method": "statevector_gpu"}
backend_options = {"method": "statevector"}
job = execute(W_states, backend)
result = job.result()
outputstate = result.get_statevector(W_states, decimals=3)
이어 2량자 비트 3개를 제작한다.세 개의 양자 비트에서 두 개의 양자 비트까지의 제작 방법은 세 가지가 있다.for iis in [[0,1], [0,2], [1,2]]:
print(iis)
qst_w = state_tomography_circuits(W_states, [q_w[iis[0]],q_w[iis[1]]])
job = qiskit.execute(qst_w, Aer.get_backend('qasm_simulator'), shots=5000)
tomo_w = StateTomographyFitter(job.result(), qst_w)
rho_w = tomo_w.fit()
print(" entropy: {0:1.2f}".format(entropy(rho_w)))
print(" concurrence: {0:1.2f}".format(concurrence(rho_w)))
print(" entanglemment_of_formation: {0:1.2f}".format(entanglement_of_formation(rho_w)))
print(" mutual_infomation: {0:1.2f}".format(mutual_information(rho_w)))
결실
Tomog\W state
VN entropy
concurrence
entanglement_of_formation
mutual_information
[0,1]
0.91
0.67
0.55
0.93
[0,2]
0.91
0.66
0.54
0.93
[1,2]
0.94
0.65
0.53
0.89
백엔드options를 사용할 수 없습니다.
참조: https://zenn.dev/nucl_quantum/articles/5312ddd558793572919c
Reference
이 문제에 관하여(Qiskit으로 W상태의 폰 노먼 엔트로피를 계산하고 상간성, 얽히고설킨 상호 정보량을 생성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/skiing_LAL10/items/70b5bdbc8ff107bdcfc2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
!pip install qiskit
!pip install qiskit-aer-gpu
import qiskit
# Needed for functions
import numpy as np
import time
from copy import deepcopy
# Import Qiskit classes
import qiskit
from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer
from qiskit.quantum_info import state_fidelity, process_fidelity
from qiskit.providers.aer import noise
from qiskit.compiler import assemble
# Tomography functions
from qiskit.ignis.verification.tomography import state_tomography_circuits, StateTomographyFitter
from qiskit.ignis.verification.tomography import process_tomography_circuits, ProcessTomographyFitter
from qiskit.ignis.verification.tomography import gateset_tomography_circuits, GatesetTomographyFitter
import qiskit.ignis.mitigation.measurement as mc
# Auxiliary methods
from qiskit.quantum_info import Choi, Kraus
from qiskit.extensions import HGate, XGate
Google colab에서 실행
!Python -V
# 3.6.9
qiskit.__version__
# 0.16.0
qiskit.__qiskit_version__
#{'qiskit': None,
# 'qiskit-aer': '0.7.0',
# 'qiskit-aqua': '0.8.0',
# 'qiskit-ibmq-provider': '0.11.0',
# 'qiskit-ignis': '0.5.0',
# 'qiskit-terra': '0.16.0'}
제조 W 상태
나는 매우 깔끔하게 쓴 W 상태 제작 자료를 찾았는데, 여기에 인용한다.
https://github.com/qiskit-community/qiskit-community-tutorials/blob/master/awards/teach_me_qiskit_2018/w_state/W%20State%201%20-%20Multi-Qubit%20Systems.ipynb
지원 함수 정의# Here, two useful routine
# Define a F_gate
def F_gate(circ,q,i,j,n,k) :
theta = np.arccos(np.sqrt(1/(n-k+1)))
circ.ry(-theta,q[j])
circ.cz(q[i],q[j])
circ.ry(theta,q[j])
circ.barrier(q[i])
# Define the cxrv gate which uses reverse CNOT instead of CNOT
def cxrv(circ,q,i,j) :
circ.h(q[i])
circ.h(q[j])
circ.cx(q[j],q[i])
circ.h(q[i])
circ.h(q[j])
circ.barrier(q[i],q[j])
3 - qubit의 상황을 고려해 보세요.# 3-qubit W state
flag_qx2 = True
n = 3
q_w = QuantumRegister(n)
W_states = QuantumCircuit(q_w)
W_states.x(q_w[2]) #start is |100>
F_gate(W_states,q_w,2,1,3,1) # Applying F12
F_gate(W_states,q_w,1,0,3,2) # Applying F23
if flag_qx2 : # option ibmqx2
W_states.cx(q_w[1],q_w[2]) # cNOT 21
W_states.cx(q_w[0],q_w[1]) # cNOT 32
else : # option ibmqx4
cxrv(W_states,q_w,1,2)
cxrv(W_states,q_w,0,1)
print(W_states)
상술한 코드의 회로는 다음과 같다.
단층 촬영.
각 물리량을 계산하기 위해서는 두 개의 양자 비트의 밀도 행렬이 필요하기 때문에 층분해 영상 측정을 한다.
그때state_tomography_circuits
와 StateTomographyFitter
를 이용한다.
우선, W 상태의 상태 벡터를 준비합니다.backend = Aer.get_backend('statevector_simulator')
# backend_options = {"method": "statevector_gpu"}
backend_options = {"method": "statevector"}
job = execute(W_states, backend)
result = job.result()
outputstate = result.get_statevector(W_states, decimals=3)
이어 2량자 비트 3개를 제작한다.세 개의 양자 비트에서 두 개의 양자 비트까지의 제작 방법은 세 가지가 있다.for iis in [[0,1], [0,2], [1,2]]:
print(iis)
qst_w = state_tomography_circuits(W_states, [q_w[iis[0]],q_w[iis[1]]])
job = qiskit.execute(qst_w, Aer.get_backend('qasm_simulator'), shots=5000)
tomo_w = StateTomographyFitter(job.result(), qst_w)
rho_w = tomo_w.fit()
print(" entropy: {0:1.2f}".format(entropy(rho_w)))
print(" concurrence: {0:1.2f}".format(concurrence(rho_w)))
print(" entanglemment_of_formation: {0:1.2f}".format(entanglement_of_formation(rho_w)))
print(" mutual_infomation: {0:1.2f}".format(mutual_information(rho_w)))
결실
Tomog\W state
VN entropy
concurrence
entanglement_of_formation
mutual_information
[0,1]
0.91
0.67
0.55
0.93
[0,2]
0.91
0.66
0.54
0.93
[1,2]
0.94
0.65
0.53
0.89
백엔드options를 사용할 수 없습니다.
참조: https://zenn.dev/nucl_quantum/articles/5312ddd558793572919c
Reference
이 문제에 관하여(Qiskit으로 W상태의 폰 노먼 엔트로피를 계산하고 상간성, 얽히고설킨 상호 정보량을 생성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/skiing_LAL10/items/70b5bdbc8ff107bdcfc2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Here, two useful routine
# Define a F_gate
def F_gate(circ,q,i,j,n,k) :
theta = np.arccos(np.sqrt(1/(n-k+1)))
circ.ry(-theta,q[j])
circ.cz(q[i],q[j])
circ.ry(theta,q[j])
circ.barrier(q[i])
# Define the cxrv gate which uses reverse CNOT instead of CNOT
def cxrv(circ,q,i,j) :
circ.h(q[i])
circ.h(q[j])
circ.cx(q[j],q[i])
circ.h(q[i])
circ.h(q[j])
circ.barrier(q[i],q[j])
# 3-qubit W state
flag_qx2 = True
n = 3
q_w = QuantumRegister(n)
W_states = QuantumCircuit(q_w)
W_states.x(q_w[2]) #start is |100>
F_gate(W_states,q_w,2,1,3,1) # Applying F12
F_gate(W_states,q_w,1,0,3,2) # Applying F23
if flag_qx2 : # option ibmqx2
W_states.cx(q_w[1],q_w[2]) # cNOT 21
W_states.cx(q_w[0],q_w[1]) # cNOT 32
else : # option ibmqx4
cxrv(W_states,q_w,1,2)
cxrv(W_states,q_w,0,1)
print(W_states)
각 물리량을 계산하기 위해서는 두 개의 양자 비트의 밀도 행렬이 필요하기 때문에 층분해 영상 측정을 한다.
그때
state_tomography_circuits
와 StateTomographyFitter
를 이용한다.우선, W 상태의 상태 벡터를 준비합니다.
backend = Aer.get_backend('statevector_simulator')
# backend_options = {"method": "statevector_gpu"}
backend_options = {"method": "statevector"}
job = execute(W_states, backend)
result = job.result()
outputstate = result.get_statevector(W_states, decimals=3)
이어 2량자 비트 3개를 제작한다.세 개의 양자 비트에서 두 개의 양자 비트까지의 제작 방법은 세 가지가 있다.for iis in [[0,1], [0,2], [1,2]]:
print(iis)
qst_w = state_tomography_circuits(W_states, [q_w[iis[0]],q_w[iis[1]]])
job = qiskit.execute(qst_w, Aer.get_backend('qasm_simulator'), shots=5000)
tomo_w = StateTomographyFitter(job.result(), qst_w)
rho_w = tomo_w.fit()
print(" entropy: {0:1.2f}".format(entropy(rho_w)))
print(" concurrence: {0:1.2f}".format(concurrence(rho_w)))
print(" entanglemment_of_formation: {0:1.2f}".format(entanglement_of_formation(rho_w)))
print(" mutual_infomation: {0:1.2f}".format(mutual_information(rho_w)))
결실
Tomog\W state
VN entropy
concurrence
entanglement_of_formation
mutual_information
[0,1]
0.91
0.67
0.55
0.93
[0,2]
0.91
0.66
0.54
0.93
[1,2]
0.94
0.65
0.53
0.89
백엔드options를 사용할 수 없습니다.
참조: https://zenn.dev/nucl_quantum/articles/5312ddd558793572919c
Reference
이 문제에 관하여(Qiskit으로 W상태의 폰 노먼 엔트로피를 계산하고 상간성, 얽히고설킨 상호 정보량을 생성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/skiing_LAL10/items/70b5bdbc8ff107bdcfc2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
참조: https://zenn.dev/nucl_quantum/articles/5312ddd558793572919c
Reference
이 문제에 관하여(Qiskit으로 W상태의 폰 노먼 엔트로피를 계산하고 상간성, 얽히고설킨 상호 정보량을 생성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/skiing_LAL10/items/70b5bdbc8ff107bdcfc2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)