SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
베이스: object
솔로베이 키타에프 이산 분해 알고리즘.
이 클래스는 트랜스파일러 패스에 의해 재귀적으로 호출되기 때문에 분리되어 있습니다. 참조 SolovayKitaev 를 참조하세요.
파일이 .npy 전달되면 basic_approximations , 내부적으로 피클(pickle)을 사용하여 데이터를 로드합니다. 이는 잠재적인 보안 취약점이며 신뢰할 수 있는 파일만 로드해야 합니다.
매개변수
-
basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –
이산 게이트를 이용한 기본 SO(3) 근사법의 명세. 이 알고리즘의 각 반복 단계에서, 잔여 오차는 이 집합 내에서 가장 가까운 게이트 시퀀스로 근사화됩니다. a가 지정된
str경우, 이는 근사값을 불러올 파일 이름을 나타냅니다. 만약 a라면dict, 여기에는 쌍이{gates: effective_SO3_matrix}포함된다. 예를 들어,{"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. 목록인 경우, 이 목록은 딕셔너리와 동일한 정보를 포함하지만, 이미 SO(3) 행렬과 게이트를 포함하는 객체로GateSequence변환된 상태입니다.이 매개변수 또는
basis_gates및depth을 지정할 수 있습니다. -
basis_gates (list[str |Gate] | None) – 불연속형(즉, 파라미터화되지 않은) 표준 게이트 목록입니다. 기본값은
["h", "t", "tdg"]입니다. -
depth (int) – 기저 세트에서 고려할 기저 게이트 조합의 수입니다. 이는 알고리즘이 얼마나 빨리 수렴하는지를 결정하며, 충분히 높게 선택해야 합니다.
-
check_input (bool) –
True, 행렬이 예상되는 형식인지 확인하는 중간 단계를 수행합니다.
속성
basis_gates
기본 근사치의 기본 게이트 집합입니다.
None, 기본값은 ["h", "t", "tdg"] 입니다.
check_input
내부 데이터에 대한 런타임 검사를 수행할지 여부입니다.
depth
기본 근사치의 최대 게이트 깊이입니다.
메소드
find_basic_approximation
find_basic_approximation(sequence)
self._basic_approximations 에서 sequence 에 근사한 GateSequence 을 찾습니다.
해당 메서드는 Qiskit qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation()2.3 부터 사용 중단되었습니다. 출시일로부터 3개월이 지나지 않으면 제거되지 않습니다. 대신 query_basic_approximation을 사용하십시오. 이 함수는 게이트(Gate) 또는 행렬을 입력으로 받아 근사 게이트( QuantumCircuit ) 객체를 반환합니다.
매개변수
sequence (GateSequence) – GateSequence 에 대한 근사치를 찾습니다.
리턴
GateSequence 와 비슷한 sequence.
리턴 유형
GateSequence
load_basic_approximations
static load_basic_approximations(data)
기본 근사치를 로드합니다.
문자열로 전달된 data 경우, 이 메서드는 내부적으로 파일을 로드하기 위해 pickle을 사용합니다. 이는 잠재적인 보안 취약점이며 신뢰할 수 있는 파일만 로드해야 합니다.
매개변수
data (list |str |dict) – 문자열인 경우 데이터를 로드할 파일의 경로를 지정합니다. 사전의 경우 {gates: matrix} 또는 {gates: (matrix, global_phase)} 으로 직접 분해를 지정합니다. 여기서 gates 는 SO(3) 매트릭스 matrix 를 생성하는 게이트의 이름입니다. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} 와 global_phase 는 양자 게이트의 U(2) 행렬과 저장된 SO(3) 행렬 사이의 전역 위상차를 설명하기 위해 주어질 수 있습니다. 지정하지 않으면 global_phase 이 0으로 간주됩니다.
리턴
유형으로 기본 근사치 목록 GateSequence.
레이즈
ValueError - 게이트 조합과 관련 행렬의 수가 일치하지 않는 경우.
리턴 유형
목록 게이트[ 시퀀스]
query_basic_approximation
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
알고리즘을 실행합니다.
매개변수
- gate_matrix (np.ndarray | Gate) – 대략적인 단일 큐비트 게이트입니다. 가 될 수 있습니다
Gate일 수 있으며, 여기서Gate.to_matrix()는 행렬을 반환하거나 게이트를 나타내는 단일 행렬을 반환합니다. - recursion_degree (int) – 재귀도는 논문에서 이라고 합니다.
QuantumCircuitDAGCircuitreturn_dag (bool) – a를 반환하고, 그렇지 않으면 a를 반환한다True.- check_input (bool) –
True입력 행렬이 분해에 유효한지 확인합니다. 같은 이름의 클래스 속성을 재정의하지만 이 함수 호출에 대해서만 재정의합니다.
리턴
지정된 이산 기준으로 gate_matrix 에 근사한 1쿼비트 회로입니다.
리턴 유형
save_basic_approximations
save_basic_approximations(filename)
기본 근사값을 파일에 저장합니다.
그런 다음 클래스 이니셜라이저(기본값)를 통해 다시 로드하거나 load_basic_approximations():
filename = "approximations.bin"
sk.save_basic_approximations(filename)
new_sk = SolovayKitaevDecomposition(filename)매개변수
filename (str) – 근사치를 저장할 파일 이름입니다.
레이즈
ValueError - 파일 이름의 확장자가.npy인 경우. 형식이.npy가 아니므로 이 형식으로 저장하면 파일을 다시 로드할 때 오류가 발생할 수 있습니다.