PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
베이스: QuantumCircuit
단계 Oracle.
Phase Oracle 객체는 임의의 입력 논리 표현식에 대한 회로를 구성합니다. 논리 표현식은 논리 연산자 &(논리 AND), |(논리 OR), ~(논리 NOT), ^(논리 XOR)로 구성됩니다. 와 리터럴(변수) 기호를 사용할 수 있습니다. 예를 들어, 'a & b', ( v0 | ~v1 ) & ( ~v2 & v3 )은 모두 부울 논리 표현식의 유효한 문자열 표현입니다.
부울 함수 f(x)에 대한 위상 오라클은 다음과 같은 양자 연산을 수행합니다:
편의를 위해 이 오라클은 임의의 논리 표현식을 구문 분석하는 것 외에도 하나 이상의 절이 하나 이상의 리터럴의 결합인 결합 정규 형식(CNF )으로 SAT(수능) 문제 인스턴스를 지정하기 위한 표준 형식인 DIMACS CNF 형식의 입력 문자열도 지원합니다. qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file()의 내용을 참조하십시오.
16개 변수부터는 기본 신디사이저를 사용할 때 성능 문제가 발생할 수 있습니다.
qiskit.circuit.library.phase_oracle.PhaseOracle 클래스는 키스킷 2.2 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. 대신 qiskit.circuit.library.PhaseOracleGate 클래스를 사용하세요.
매개변수
- expression (str | BooleanExpression) – Python -같은 부울 표현식 문자열 또는 BooleanExpression 객체.
- var_order (list[str] | None) – 변수가 생성될 순서를 나타내는 목록입니다. (기본값: 외관 기준)
속성
name
유형: str
사람이 읽을 수 있는 회로의 이름입니다.
예제
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit메소드
evaluate_bitstring
evaluate_bitstring(bitstring)
비트 문자열에서 오라클을 평가합니다. 이 평가는 양자 회로 없이 고전적으로 수행됩니다.
매개변수
bitstring (str) – 평가할 비트 문자열입니다. 입력 비트 문자열은 리틀 엔디안 순서가 될 것으로 예상됩니다.
리턴
비트 문자열이 양호한 상태이면 참이고, 그렇지 않으면 거짓입니다.
리턴 유형
from_dimacs_file
classmethod from_dimacs_file(filename)
DIMACS 형식의 문자열에서 PhaseOracle 을 만듭니다.
하나 이상의 절이 하나 이상의 리터럴을 연결한 결합 정규 형식(CNF) 으로 SAT(수능) 문제 인스턴스를 지정하는 표준 형식인 DIMACS CNF 형식의 파일에서 PhaseOracle 을 빌드할 수 있습니다(여기서 절은 하나 이상의 리터럴을 연결한 결합).
다음은 DIMACS 형식으로 표현된 CNF의 예입니다:
c DIMACS CNF file with 3 satisfying assignments: 1 -2 3, -1 -2 -3, 1 2 -3.
p cnf 3 5
-1 -2 -3 0
1 -2 3 0
1 2 -3 0
1 -2 -3 0
-1 2 3 0'c' 문자가 나온 다음 줄은 주석입니다. 두 번째 줄은 CNF가 세 개의 부울 변수( 라고 부르자)를 다루며, 다섯 개의 절을 포함하고 있음을 나타냅니다. 뒤에 나열된 다섯 개의 절은 논리 AND 연산자( )로 암묵적으로 결합되며, 각 절 내의 변수(인덱스로 표시됨)는 논리 OR 연산자( )로 암묵적으로 결합되지 않은 상태로 처리됩니다. 부울 변수 인덱스 앞에 오는 기호는 논리 NOT 연산자( )에 해당합니다. 문자 0(영)은 각 절의 끝을 표시합니다. 기본적으로 위의 코드는 다음의 CNF에 해당합니다:
.
매개변수
filename (str) – DIMACS 형식의 파일입니다.
리턴
위상 오라클이 있는 양자 회로입니다.
리턴 유형