PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
Bases: QuantumCircuit
Fase Oracle.
O objeto Phase Oracle constrói circuitos para qualquer expressão lógica de entrada arbitrária. Uma expressão lógica é composta pelos operadores lógicos & (AND lógico), | (OR lógico), ~ (NOT lógico) e ^ (XOR lógico). bem como símbolos para literais (variáveis). Por exemplo, 'a & b' e ( v0 | ~v1 ) & ( ~v2 & v3 ) são representações válidas de expressões lógicas booleanas.
Um oráculo de fase para uma função booleana f(x) realiza a seguinte operação quântica:
Por conveniência, esse oráculo, além de analisar expressões lógicas arbitrárias, também é compatível com cadeias de caracteres de entrada no formato DIMACS CNF, que é o formato padrão para especificar instâncias de problemas de SATisfiabilidade (SAT) na Forma Normal Conjuntiva (CNF), que é uma conjunção de uma ou mais cláusulas, em que uma cláusula é uma disjunção de um ou mais literais. Consulte qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file().
A partir de 16 variáveis, deve-se esperar possíveis problemas de desempenho ao usar o sintetizador padrão.
A classe qiskit.circuit.library.phase_oracle.PhaseOracle está obsoleta desde o Qiskit 2.2. Ele será removido no Qiskit 3.0. Em vez disso, use a classe qiskit.circuit.library.PhaseOracleGate.
Parâmetros
- expression (str | BooleanExpression) – Uma cadeia de caracteres de expressão booleana semelhante a Python ou um objeto BooleanExpression.
- var_order (list[str] | None) – Uma lista com a ordem em que as variáveis serão criadas. (padrão: por aparência)
Atributos
name
Tipo: str
Um nome legível por humanos para o circuito.
Exemplo
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMétodos
evaluate_bitstring
evaluate_bitstring(bitstring)
Avalie o oráculo em uma bitstring. Essa avaliação é feita de forma clássica, sem nenhum circuito quântico.
Parâmetros
bitstring (str) – A cadeia de bits a ser avaliada. Espera-se que a cadeia de bits de entrada esteja na ordem little-endian.
Retorna
True (verdadeiro) se a bitstring for um estado bom, False (falso) caso contrário.
Tipo de retorno
from_dimacs_file
classmethod from_dimacs_file(filename)
Crie um PhaseOracle a partir da cadeia de caracteres no formato DIMACS.
É possível criar um PhaseOracle a partir de um arquivo no formato DIMACS CNF, que é o formato padrão para especificar instâncias de problemas de SATisfiabilidade (SAT) na Forma Normal Conjuntiva (CNF), que é uma conjunção de uma ou mais cláusulas, em que uma cláusula é uma disjunção de um ou mais literais.
A seguir, um exemplo de um CNF expresso no formato DIMACS:
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 0A primeira linha, após o caractere "c", é um comentário. A segunda linha especifica que a CNF é definida por três variáveis booleanas — vamos chamá-las de — e contém cinco cláusulas. As cinco cláusulas, listadas a seguir, são implicitamente unidas pelo operador lógico AND, , enquanto as variáveis em cada cláusula, representadas por seus índices, são implicitamente separadas pelo operador lógico OR, . O símbolo que precede o índice de uma variável booleana corresponde ao operador lógico NOT, . O caractere 0 (zero) marca o fim de cada cláusula. Essencialmente, o código acima corresponde à seguinte CNF:
.
Parâmetros
filename (str) – Um arquivo no formato DIMACS.
Retorna
Um circuito quântico com um oráculo de fase.
Tipo de retorno