fatiamento
qiskit_addon_utils.slicing
Métodos utilitários para corte de circuitos.
Para obter mais informações, consulte o guia de instruções que discute esse submódulo.
combine_slices
combine_slices(slices, include_barriers=False)
Combine fatias de N-qubit de um circuito em um único circuito.
Parâmetros
- slices (Sequence[QuantumCircuit]) – As fatias do circuito N-qubit.
- include_barriers (bool) – Se for
True, coloque barreiras entre cada fatia.
Retorna
A QuantumCircuit com as fatias anexadas em ordem sequencial.
Aumentos
ValueError - Duas fatias de entrada foram definidas em diferentes números de qubits.
Tipo de retorno
QuantumCircuit | Nenhum
slice_by_barriers
slice_by_barriers(circuit)
Divida o site QuantumCircuit em fatias ao redor de barreiras de circuito completo.
As barreiras que não atuam em todos os qubits do circuito serão tratadas como operações normais e incluídas nas fatias. As barreiras que atuam em todos os qubits serão interpretadas como localizações de fatias e não serão incluídas nas fatias de saída.
Parâmetros
circuit (QuantumCircuit) – O circuito a ser dividido.
Retorna
Uma sequência de QuantumCircuit objetos, um para cada fatia.
Tipo de retorno
lista [ QuantumCircuit ]
slice_by_coloring
slice_by_coloring(circuit, coloring)
Divida um QuantumCircuit em fatias usando a coloração de borda fornecida.
Portas de dois qubits que atuam em conexões de qubits (arestas) da mesma cor serão agrupadas de forma avida em fatias usando CollectOpColor. Isso será feito em ordem crescente do valor da cor (os valores inteiros aos quais cada aresta é mapeada).
Observe que isso não significa que as fatias de cores de baixo valor sejam garantidamente as mais à esquerda em seu circuito. Abaixo está um exemplo para enfatizar isso.
>>> from qiskit import QuantumCircuit
>>> circuit = QuantumCircuit(5)
>>> _ = circuit.cx(0, 1)
>>> _ = circuit.cx(3, 4)
>>> _ = circuit.cx(2, 3)
>>> circuit.draw()
q_0: ──■───────
┌─┴─┐
q_1: ┤ X ├─────
└───┘
q_2: ───────■──
┌─┴─┐
q_3: ──■──┤ X ├
┌─┴─┐└───┘
q_4: ┤ X ├─────
└───┘
>>> coloring = {(0, 1): 0, (2, 3): 0, (3, 4): 1}
>>> from qiskit_addon_utils.slicing import combine_slices, slice_by_coloring
>>> slices = slice_by_coloring(circuit, coloring)
# for illustration purposes, we are recombining the slices with barriers
>>> recombined = combine_slices(slices, include_barriers=True)
>>> recombined.draw()
░
q_0: ──────░───■──
░ ┌─┴─┐
q_1: ──────░─┤ X ├
░ └───┘
q_2: ──────░───■──
░ ┌─┴─┐
q_3: ──■───░─┤ X ├
┌─┴─┐ ░ └───┘
q_4: ┤ X ├─░──────
└───┘ ░Os portas de qubit único serão agrupados em uma única fatia por meio de CollectOpSize.
Parâmetros
- circuit (QuantumCircuit) – O circuito a ser dividido.
- coloring (dict[tuple[int, int], int]) – Um dicionário que mapeia bordas (pares de números inteiros) para valores de cores.
Retorna
Uma sequência de QuantumCircuit objetos, um para cada fatia.
Aumentos
- ValueError - A coloração da borda de entrada é inválida.
- ValueError - Não foi possível atribuir uma cor à instrução de circuito.
Tipo de retorno
lista [ QuantumCircuit ]
slice_by_depth
slice_by_depth(circuit, max_slice_depth)
Dividir um QuantumCircuit em fatias com base na profundidade.
Essa função transforma o circuito de entrada em um circuito de DAGCircuit e agrupa a sequência de depth-1 camadas de saída de layers() em fatias de profundidade que não excedam max_slice_depth. Isso é feito compondo camadas em fatias até que a profundidade máxima da fatia seja atingida e, em seguida, iniciando uma nova fatia com a próxima camada. A fatia final pode ser composta por menos de max_slice_depth camadas.
Parâmetros
- circuit (QuantumCircuit) – O circuito a ser dividido.
- max_slice_depth (int) – A profundidade máxima de uma determinada fatia.
Retorna
Uma sequência de QuantumCircuit objetos, um para cada fatia.
Tipo de retorno
lista [ QuantumCircuit ]
slice_by_gate_types
slice_by_gate_types(circuit)
Dividir um QuantumCircuit em depth-1 fatias de operações do mesmo tipo.
Observação: as fatias adjacentes que não compartilham qubits em comum podem ser ordenadas arbitrariamente.
Parâmetros
circuit (QuantumCircuit) – O circuito a ser dividido.
Retorna
Uma sequência de QuantumCircuit objetos, um para cada fatia.
Tipo de retorno
lista [ QuantumCircuit ]