View source on GitHub |
Transforms a Hamiltonian written in fermionic basis into a Hamiltonian written in qubit basis, via a binary code.
openfermion.transforms.binary_code_transform(
hamiltonian: openfermion.ops.FermionOperator
,
code: openfermion.ops.BinaryCode
) -> openfermion.ops.QubitOperator
Used in the notebooks
Used in the tutorials |
---|
The role of the binary code is to relate the occupation vectors (v0 v1 v2 ... vN-1) that span the fermionic basis, to the qubit basis, spanned by binary vectors (w0, w1, w2, ..., wn-1).
The binary code has to provide an analytic relation between the binary vectors (v0, v1, ..., vN-1) and (w0, w1, ..., wn-1), and possibly has the property N>n, when the Fermion basis is smaller than the fermionic Fock space. The binary_code_transform function can transform Fermion operators to qubit operators for custom- and qubit-saving mappings.
Note | |
---|---|
Logic multi-qubit operators are decomposed into Pauli-strings (e.g. CPhase(1,2) = 0.5 * (1 + Z1 + Z2 - Z1 Z2 ) ), which might increase the number of Hamiltonian terms drastically. |
Args | |
---|---|
hamiltonian
|
FermionOperator
the fermionic Hamiltonian |
code
|
BinaryCode
the binary code to transform the Hamiltonian |
Returns (QubitOperator): the transformed Hamiltonian
Raises | |
---|---|
TypeError
|
if the hamiltonian is not a FermionOperator or code is not a BinaryCode |