qml.grouping.PauliGroupingStrategy¶

class
PauliGroupingStrategy
(observables, grouping_type='qwc', graph_colourer='rlf')[source]¶ Bases:
object
Class for partitioning a list of Pauli words according to some binary symmetric relation.
Partitions are defined by the binary symmetric relation of interest, e.g., all Pauli words in a partition being mutually commuting. The partitioning is accomplished by formulating the list of Pauli words as a graph where nodes represent Pauli words and edges between nodes denotes that the two corresponding Pauli words satisfy the symmetric binary relation.
Obtaining the fewest number of partitions such that all Pauli terms within a partition mutually satisfy the binary relation can then be accomplished by finding a partition of the graph nodes such that each partition is a fully connected subgraph (a “clique”). The problem of finding the optimal partitioning, i.e., the fewest number of cliques, is the minimum clique cover (MCC) problem. The solution of MCC may be found by graph colouring on the complementary graph. Both MCC and graph colouring are NPHard, so heuristic graph colouring algorithms are employed to find approximate solutions in polynomial time.
 Parameters
observables (list[Observable]) – a list of Pauli words to be partitioned according to a grouping strategy
grouping_type (str) – the binary relation used to define partitions of the Pauli words, can be
'qwc'
(qubitwise commuting),'commuting'
, or'anticommuting'
.graph_colourer (str) – the heuristic algorithm to employ for graph colouring, can be
'lf'
(Largest First) or'rlf'
(Recursive Largest First)
 Raises
ValueError – if arguments specified for
grouping_type
orgraph_colourer
are not recognized
Methods
binary_repr
([n_qubits, wire_map])Converts the list of Pauli words to a binary matrix.
Runs the graph colouring heuristic algorithm to obtain the partitioned Pauli words.
Constructs the adjacency matrix for the complement of the Pauli graph.

binary_repr
(n_qubits=None, wire_map=None)[source]¶ Converts the list of Pauli words to a binary matrix.
 Parameters
n_qubits (int) – number of qubits to specify dimension of binary vector representation
wire_map (dict) – dictionary containing all wire labels used in the Pauli word as keys, and unique integer labels as their values
 Returns
a column matrix of the Pauli words in binary vector representation
 Return type
array[int]

colour_pauli_graph
()[source]¶ Runs the graph colouring heuristic algorithm to obtain the partitioned Pauli words.
 Returns
a list of the obtained groupings. Each grouping is itself a list of Pauli word
Observable
instances Return type
list[list[Observable]]

complement_adj_matrix_for_operator
()[source]¶ Constructs the adjacency matrix for the complement of the Pauli graph.
The adjacency matrix for an undirected graph of N vertices is an N by N symmetric binary matrix, where matrix elements of 1 denote an edge, and matrix elements of 0 denote no edge.
 Returns
the square and symmetric adjacency matrix
 Return type
array[int]