Skip to main content
IBM Quantum Platform

PhaseOracle

class qiskit.circuit.library.PhaseOracle(expression, var_order=None)

GitHub

베이스: QuantumCircuit

단계 Oracle.

Phase Oracle 객체는 임의의 입력 논리 표현식에 대한 회로를 구성합니다. 논리 표현식은 논리 연산자 &(논리 AND), |(논리 OR), ~(논리 NOT), ^(논리 XOR)로 구성됩니다. 와 리터럴(변수) 기호를 사용할 수 있습니다. 예를 들어, 'a & b', ( v0 | ~v1 ) & ( ~v2 & v3 )은 모두 부울 논리 표현식의 유효한 문자열 표현입니다.

부울 함수 f(x)에 대한 위상 오라클은 다음과 같은 양자 연산을 수행합니다:

x(1)f(x)x|x\rangle \mapsto (-1)^{f(x)}|x\rangle

편의를 위해 이 오라클은 임의의 논리 표현식을 구문 분석하는 것 외에도 하나 이상의 절이 하나 이상의 리터럴의 결합인 결합 정규 형식(CNF )으로 SAT(수능) 문제 인스턴스를 지정하기 위한 표준 형식인 DIMACS CNF 형식의 입력 문자열도 지원합니다. qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file()의 내용을 참조하십시오.

16개 변수부터는 기본 신디사이저를 사용할 때 성능 문제가 발생할 수 있습니다.

버전부터 사용되지 않음 2.2

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)

GitHub

비트 문자열에서 오라클을 평가합니다. 이 평가는 양자 회로 없이 고전적으로 수행됩니다.

매개변수

bitstring (str) – 평가할 비트 문자열입니다. 입력 비트 문자열은 리틀 엔디안 순서가 될 것으로 예상됩니다.

리턴

비트 문자열이 양호한 상태이면 참이고, 그렇지 않으면 거짓입니다.

리턴 유형

부울

from_dimacs_file

classmethod from_dimacs_file(filename)

GitHub

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가 세 개의 부울 변수( x1,x2,x3x_1, x_2, x_3 라고 부르자)를 다루며, 다섯 개의 절을 포함하고 있음을 나타냅니다. 뒤에 나열된 다섯 개의 절은 논리 AND 연산자( \land )로 암묵적으로 결합되며, 각 절 내의 변수(인덱스로 표시됨)는 논리 OR 연산자( \lor )로 암묵적으로 결합되지 않은 상태로 처리됩니다. 부울 변수 인덱스 앞에 오는 - 기호는 논리 NOT 연산자( ¬\lnot )에 해당합니다. 문자 0(영)은 각 절의 끝을 표시합니다. 기본적으로 위의 코드는 다음의 CNF에 해당합니다:

(¬x1¬x2¬x3)(x1¬x2x3)(x1x2¬x3)(x1¬x2¬x3)(¬x1x2x3)(\lnot x_1 \lor \lnot x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor x_3) \land (x_1 \lor x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor \lnot x_3) \land (\lnot x_1 \lor x_2 \lor x_3).

매개변수

filename (str) – DIMACS 형식의 파일입니다.

리턴

위상 오라클이 있는 양자 회로입니다.

리턴 유형

PhaseOracle

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.