View source on GitHub |
Perform a Bogoliubov transformation.
openfermion.circuits.bogoliubov_transform(
qubits: Sequence[cirq.Qid],
transformation_matrix: numpy.ndarray,
initial_state: Optional[Union[int, Sequence[int]]] = None
) -> cirq.OP_TREE
Used in the notebooks
Used in the tutorials |
---|
This circuit performs the transformation to a basis determined by a new set of fermionic ladder operators. It performs the unitary \(U\) such that
\[ U a^\dagger_p U^{-1} = b^\dagger_p \]
where the \(a^\dagger_p\) are the original creation operators and the
\(b^\dagger_p\) are the new creation operators. The new creation
operators are linear combinations of the original ladder operators with
coefficients given by the matrix transformation_matrix
, which will be
referred to as \(W\) in the following.
If \(W\) is an \(N \times N\) matrix, then the \(b^\dagger_p\) are given by
\[ b^\dagger_p = \sum_{q=1}^N W_{pq} a^\dagger_q. \]
If \(W\) is an \(N \times 2N\) matrix, then the \(b^\dagger_p\) are given by
$$ b^\daggerp = \sum{q=1}^N W_{pq} a^\dagger_q
+ \sum_{q=N+1}^{2N} W_{pq} a_q.
$$
This algorithm assumes the Jordan-Wigner Transform.