qml.pauli.PauliWord¶
- class PauliWord(mapping)[source]¶
Bases:
dict
Immutable dictionary used to represent a Pauli Word, associating wires with their respective operators. Can be constructed from a standard dictionary.
Note
An empty
PauliWord
will be treated as the multiplicative identity (i.e identity on all wires). Its matrix is the identity matrix (trivially the 1×1 one matrix when nowire_order
is passed toPauliWord({}).to_mat()
).Examples
Initializing a Pauli word:
>>> w = PauliWord({"a": 'X', 2: 'Y', 3: 'Z'}) >>> w X(a) @ Y(2) @ Z(3)
When multiplying Pauli words together, we obtain a
PauliSentence
with the resultingPauliWord
as a key and the corresponding coefficient as its value.>>> w1 = PauliWord({0:"X", 1:"Y"}) >>> w2 = PauliWord({1:"X", 2:"Z"}) >>> w1 @ w2 -1j * Z(1) @ Z(2) @ X(0)
We can multiply scalars to Pauli words or add/subtract them, resulting in a
PauliSentence
instance.>>> 0.5 * w1 - 1.5 * w2 + 2 0.5 * X(0) @ Y(1) + -1.5 * X(1) @ Z(2) + 2 * I
Attributes
Trivial pauli_rep
Track wires in a PauliWord.
- pauli_rep¶
Trivial pauli_rep
- wires¶
Track wires in a PauliWord.
Methods
commutator
(other)Compute commutator between a
PauliWord
P and other operator Ocommutes_with
(other)Fast check if two PauliWords commute with each other
map_wires
(wire_map)Return a new PauliWord with the wires mapped.
operation
([wire_order])Returns a native PennyLane
Operation
representing the PauliWord.to_mat
([wire_order, format, coeff])Returns the matrix representation.
update
(_PauliWord__m, **kwargs)Restrict updating PW after instantiation.
- commutator(other)[source]¶
Compute commutator between a
PauliWord
P and other operator O[P,O]=PO−OPWhen the other operator is a
PauliWord
orPauliSentence
, this method is faster than computingP @ O - O @ P
. It is what is being used incommutator()
when settingpauli=True
.- Parameters
other (Union[Operator, PauliWord, PauliSentence]) – Second operator
- Returns
The commutator result in form of a
PauliSentence
instances.- Return type
Examples
You can compute commutators between
PauliWord
instances.>>> pw = PauliWord({0:"X"}) >>> pw.commutator(PauliWord({0:"Y"})) 2j * Z(0)
You can also compute the commutator with other operator types if they have a Pauli representation.
>>> pw.commutator(qml.Y(0)) 2j * Z(0)
- to_mat(wire_order=None, format='dense', coeff=1.0)[source]¶
Returns the matrix representation.
- Keyword Arguments
wire_order (iterable or None) – The order of qubits in the tensor product.
format (str) – The format of the matrix. It is “dense” by default. Use “csr” for sparse.
coeff (float) – Coefficient multiplying the resulting matrix.
- Returns
Matrix representation of the Pauli word.
- Return type
(Union[NumpyArray, ScipySparseArray])
- Raises
ValueError – Can’t get the matrix of an empty PauliWord.