DensityMatrix
class qiskit.quantum_info.DensityMatrix(data, dims=None)
Bases: QuantumState, TolerancesMixin
DensityMatrix 클래스
밀도 행렬 객체를 초기화합니다.
매개변수
- data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – 밀도 행렬을 구성할 수 있는 상태 벡터, 양자 명령어 또는 또는
to_matrix메서드를to_operator가진 객체. 벡터가 주어지면, 밀도 행렬은 해당 벡터의 투영자로 구성된다. 양자 명령어의 경우, 밀도 행렬은 모든 큐비트가 0 상태로 초기화되었다고 가정하여 구성됩니다. - dims (int |tuple |list | None) – 상태의 하위 시스템 차원(추가 정보 참조).
레이즈
QiskitError – 입력 데이터가 유효하지 않은 경우.
추가 정보:
dims kwarg는 None, 정수 또는 정수의 이터러블일 수 있습니다.
Iterable- 에서 하위 시스템 차원은 목록의 길이에 따라 주어진 총 하위 시스템 수를 가진 목록의 값입니다.Int또는None- 입력 행렬의 선행 차원은 밀도 행렬의 총 차원을 지정합니다. 2의 거듭제곱인 경우 상태는 N-큐비트 상태로 초기화됩니다. 2의 거듭제곱이 아닌 경우 상태는 단일 D차원 하위 시스템을 갖게 됩니다.
속성
atol
기본값: 1e-08
data
데이터를 반환합니다.
dim
총 상태 차원을 반환합니다.
num_qubits
N-큐비트 상태인 경우 큐비트 수를 반환하고, 그렇지 않으면 없음으로 반환합니다.
rtol
기본값: 1e-05
settings
설정을 반환합니다.
메소드
conjugate
copy
dims
draw
draw(output=None, **drawer_args)
밀도 행렬을 시각화하여 반환합니다.
repr : ASCII TextMatrix 의 __repr__.
텍스트 : 콘솔에서 인쇄할 수 있는 ASCII TextMatrix.
라텍스 : 주피터 노트북에 표시하기 위한 IPython 라텍스 객체입니다.
latex_source : LaTeX 을 사용하여 배열을 생성하기 위한 컴파일되지 않은 원시 ASCII 소스입니다.
qsphere : Matplotlib 그림, plot_state_qsphere()를 사용한 밀도 행렬 렌더링.
힌튼 : Matplotlib 그림, plot_state_hinton()을 사용한 밀도 행렬 렌더링.
bloch : Matplotlib 그림, plot_bloch_multivector()를 사용한 밀도 행렬 렌더링.
매개변수
- output (str) – 상태를 그리는 데 사용할 출력 방법을 선택합니다. 유효한 선택 항목은 repr, text, latex, latex_source, qsphere, hinton 또는 bloch입니다. 기본값은 repr입니다. 기본값은
[default]아래~/.qiskit/settings.conf에state_drawer = <default>줄을 추가하여 변경할 수 있습니다. - drawer_args - 관련 그리기 함수 또는 생성자에 직접 전달할 인수 ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() 또는 plot_bloch_multivector()). 해당 함수에 대한 설명서는 qiskit.visualization 에서 해당 함수를 참조하세요.
리턴
matplotlib.Figure 또는 str 또는 TextMatrix 또는 IPython.display.Latex: 밀도 행렬의 도식.
레이즈
ValueError - 잘못된 출력 방법을 선택한 경우.
evolve
evolve(other, qargs=None)
연산자가 양자 상태를 진화시킵니다.
매개변수
- other (Operator | QuantumChannel |circuit.instruction.Instruction |QuantumCircuit) – 앞으로 발전해 나갈 운영자.
- qargs (list[int] | None) – 연산자를 적용할 QuantumState 하위 시스템 위치 목록입니다.
리턴
출력 밀도 행렬입니다.
레이즈
QiskitError – 연산자 차원이 지정된 ‘ QuantumState ’ 하위 시스템의 차원과 일치하지 않는 경우.
리턴 유형
expand
expand(other)
텐서 곱 상태 other ⊗ self를 반환합니다.
매개변수
other (DensityMatrix) – 양자 상태 객체입니다.
리턴
텐서 곱 상태는 다른 ⊗ 자기입니다.
리턴 유형
레이즈
QiskitError – ‘other’가 양자 상태가 아닌 경우.
expectation_value
from_instruction
classmethod from_instruction(instruction)
인스트럭션의 출력 밀도 행렬을 반환합니다.
상태 벡터는 입력 명령어 또는 회로와 동일한 큐비트 수의 상태 로 초기화되고, 입력 명령어에 의해 진화하며, 출력 상태 벡터가 반환됩니다.
매개변수
instruction (circuit.instruction.Instruction |QuantumCircuit) – 명령어 또는 회로
리턴
최종 밀도 행렬입니다.
레이즈
QiskitError – 명령어에 밀도 행렬 시뮬레이션에 사용할 수 없는 명령어가 포함된 경우.
리턴 유형
from_int
static from_int(i, dims)
계산 기준 상태 밀도 행렬을 반환합니다.
매개변수
리턴
계산 기준 상태 .
리턴 유형
추가 정보:
dims kwarg는 정수 또는 정수의 이터러블일 수 있습니다.
Iterable- 에서 하위 시스템 차원은 목록의 길이에 따라 주어진 총 하위 시스템 수를 가진 목록의 값입니다.Int- 정수는 상태의 전체 차원을 지정합니다. 2의 거듭제곱인 경우 상태는 N-큐비트 상태로 초기화됩니다. 2의 거듭제곱이 아닌 경우 상태는 단일 D차원 하위 시스템을 갖게 됩니다.
from_label
classmethod from_label(label)
폴리 X,Y,Z 고유 상태의 텐서 곱을 반환합니다.
레이블 | 상태 벡터 |
|---|---|
"0" | |
"1" | |
"+" | |
"-" | |
"r" | |
"l" |
매개변수
label (string) – 고유상태 문자열 ket 라벨(허용되는 값은 표 참조).
리턴
N-큐비트 기반 상태 밀도 행렬입니다.
리턴 유형
레이즈
QiskitError – 레이블에 유효하지 않은 문자가 포함되어 있거나, 레이블의 길이가 명시적으로 지정된 num_qubits보다 큰 경우.
is_valid
measure
measure(qargs=None)
하위 시스템을 측정하고 결과 및 측정 후 상태를 반환합니다.
이 함수는 측정 결과 샘플링을 위해 QuantumStates 내부 난수 생성기를 사용합니다. RNG 시드는 seed() 메서드를 사용하여 설정할 수 있습니다.
매개변수
qargs (list or None) – 측정값을 샘플링할 하위 시스템을 지정합니다(없음인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: 없음).
리턴
쌍 (outcome, state) 여기서 outcome 은
측정 결과 문자열 레이블, state 은 해당 결과에 대한 축소된 측정 후 상태입니다.
리턴 유형
partial_transpose
partial_transpose(qargs)
부분적으로 전치된 밀도 행렬을 반환합니다.
매개변수
qargs (list) – 전치할 하위 시스템입니다.
리턴
부분적으로 전치된 밀도 행렬입니다.
리턴 유형
probabilities
probabilities(qargs=None, decimals=None)
하위 시스템 측정 확률 벡터를 반환합니다.
측정 확률은 계산(대각선) 기준의 측정에 관한 것입니다.
매개변수
- qargs (None or list) – 하위 시스템 중 확률을 반환할 하위 시스템을 지정합니다(없음이 모든 하위 시스템에 대해 반환하는 경우 기본값: 없음).
- decimals (None or int) – 값을 반올림할 소수점 이하 자릿수입니다. 없음인 경우 반올림이 수행되지 않습니다(기본값: 없음).
리턴
확률의 넘피 벡터 배열입니다.
리턴 유형
np.array
예제
2쿼트 제품 상태 와 , 를 예로 들어 보겠습니다.
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities()
print('probs: {}'.format(probs))
# Probabilities for measuring only qubit-0
probs_qubit_0 = rho.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))
# Probabilities for measuring only qubit-1
probs_qubit_1 = rho.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))probs: [0.5 0. 0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]또한 qargs 목록의 큐비트 순서를 순열하여 확률 출력에서 큐비트 위치를 변경할 수 있습니다
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities([0, 1])
print('probs: {}'.format(probs))
# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = rho.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))probs: [0.5 0. 0.5 0. ]
Swapped probs: [0.5 0.5 0. 0. ]probabilities_dict
probabilities_dict(qargs=None, decimals=None)
하위 시스템 측정 확률 사전을 반환합니다.
측정 확률은 계산(대각선) 기준의 측정에 관한 것입니다.
이 사전 표현은 사전 키가 하위 시스템 기준 벡터에 대한 쿼트 문자열인 Ket과 유사한 표기법을 사용합니다. 하위 시스템의 차원이 10보다 큰 경우 하위 시스템을 구분할 수 있도록 정수 사이에 쉼표 구분 기호를 삽입합니다.
매개변수
- qargs (None or list) – 하위 시스템 중 확률을 반환할 하위 시스템을 지정합니다(없음이 모든 하위 시스템에 대해 반환하는 경우 기본값: 없음).
- decimals (None or int) – 값을 반올림할 소수점 이하 자릿수입니다. 없음인 경우 반올림이 수행되지 않습니다(기본값: 없음).
리턴
딕셔너리(케트) 형식의 측정 확률입니다.
리턴 유형
purity
reset
reset(qargs=None)
상태 또는 하위 시스템을 0 상태로 초기화합니다.
매개변수
qargs (list or None) – 를 선택하면 모든 하위 시스템이 0 상태로 초기화됩니다(기본값: 없음).
리턴
리셋 상태입니다.
리턴 유형
추가 정보:
모든 하위 시스템이 재설정되면, 모든 하위 시스템이 초기 상태로 돌아갑니다. 일부 하위 시스템만 재설정된 경우, 이 함수는 재설정된 하위 시스템에 SuperOp 따라 진화를 수행합니다.
reverse_qargs
reverse_qargs()
하위 시스템 순서가 반전된 DensityMatrix 을 반환합니다.
텐서 곱 상태의 경우 이는 텐서 곱 하위 시스템의 순서를 뒤집는 것과 같습니다. 밀도 행렬 의 경우 반환된 상태는 입니다.
리턴
하위 시스템 순서가 역전된 상태입니다.
리턴 유형
sample_counts
sample_counts(shots, qargs=None)
큐비트 측정 결과의 딕셔너리를 계산 기반으로 샘플링합니다.
매개변수
- shots (int) – 생성할 샘플 수입니다.
- qargs (None or list) – 측정값을 샘플링할 하위 시스템을 지정합니다(없음인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: 없음).
리턴
샘플링된 카운트 사전.
리턴 유형
추가 정보:
이 함수는 현재 상태에 대한 측정값
probabilities()를 사용하여 측정 결과를 샘플링합니다. 실제로 측정을 구현하지 않으므로 현재 상태가 수정되지 않습니다.샘플링에 사용되는 난수 생성기의 시드는 state의
seed()메서드를 사용하여 고정된 값으로 설정할 수 있습니다.
sample_memory
sample_memory(shots, qargs=None)
큐비트 측정 결과 목록을 계산 기준으로 샘플링합니다.
매개변수
- shots (int) – 생성할 샘플 수입니다.
- qargs (None or list) – 측정값을 샘플링할 하위 시스템을 지정합니다(없음인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: 없음).
리턴
표본 추출 순서대로 정렬된 표본 개수 목록.
리턴 유형
np.array
추가 정보:
이 함수는 현재 상태에 대한 측정값
probabilities()를 사용하여 측정 결과를 샘플링합니다. 실제로 측정을 구현하지 않으므로 현재 상태가 수정되지 않습니다.샘플링에 사용되는 난수 생성기의 시드는 state의
seed()메서드를 사용하여 고정된 값으로 설정할 수 있습니다.
seed
tensor
tensor(other)
텐서 곱 상태 self ⊗ other를 반환합니다.
매개변수
other (DensityMatrix) – 양자 상태 객체입니다.
리턴
텐서 곱 연산자 자기 ⊗ 다른.
리턴 유형
레이즈
QiskitError – ‘other’가 양자 상태가 아닌 경우.
to_dict
to_dict(decimals=None)
밀도 행렬을 사전 형식으로 변환합니다.
이 사전 표현은 사전 키가 하위 시스템 기준 벡터에 대한 쿼트 문자열인 Ket과 유사한 표기법을 사용합니다. 하위 시스템의 차원이 10보다 큰 경우 하위 시스템을 구분할 수 있도록 정수 사이에 쉼표 구분 기호를 삽입합니다.
매개변수
decimals (None or int) – 값을 반올림할 소수점 이하 자릿수입니다. 없음인 경우 반올림이 수행되지 않습니다(기본값: 없음).
리턴
의 사전적 형태인 DensityMatrix.
리턴 유형
예제
2쿼비트 밀도 행렬의 케트 형태
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('-0')
print(rho.to_dict()){
'00|00': (0.4999999999999999+0j),
'10|00': (-0.4999999999999999-0j),
'00|10': (-0.4999999999999999+0j),
'10|10': (0.4999999999999999+0j)
}비쿼비트 하위 시스템의 경우 정수 범위는 0에서 9까지 가능합니다. 예를 들어 큐트리트 시스템에서
import numpy as np
from qiskit.quantum_info import DensityMatrix
mat = np.zeros((9, 9))
mat[0, 0] = 0.25
mat[3, 3] = 0.25
mat[6, 6] = 0.25
mat[-1, -1] = 0.25
rho = DensityMatrix(mat, dims=(3, 3))
print(rho.to_dict()){'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+0j)}큰 하위 시스템 치수의 경우 구분 기호가 필요합니다. 다음 예는 큐비트와 10차원 큐디트로 구성된 20차원 시스템에 대한 예입니다.
import numpy as np
from qiskit.quantum_info import DensityMatrix
mat = np.zeros((2 * 10, 2 * 10))
mat[0, 0] = 0.5
mat[-1, -1] = 0.5
rho = DensityMatrix(mat, dims=(2, 10))
print(rho.to_dict()){'00|00': (0.5+0j), '91|91': (0.5+0j)}to_operator
to_statevector
to_statevector(atol=None, rtol=None)
순수 밀도 행렬에서 상태 벡터를 반환합니다.
매개변수
리턴
순수 밀도 행렬의 해당 상태벡터입니다.
유일하게 0이 아닌 고유값의 고유 벡터에 해당합니다.
리턴 유형
레이즈
QiskitError – 상태가 순수하지 않은 경우.