Open rmlarose opened 2 years ago
This issue had no activity for 2 months, and will be closed in one week unless there is new activity. Cheers!
@rmlarose Do you mind clarifying statement 1 a bit more ?
What graph representation do you plan to use?
By definition for cliques to exist, the graph has to be undirected (which is also used in the paper linked above). Is your comment referring to choose some particular undirected graph representation (say bipartite, planar, non-planar, cyclic, non-cyclic etc.) ?
I think the one used in the linked paper is a bipartite graph after it has been converted to a graph coloring problem.
Hi @purva-thakre, I meant software representation of a graph (e.g., nx.Graph
or other).
Thanks ! I was overthinking it !
This issue had no activity for 2 months, and will be closed in one week unless there is new activity. Cheers!
This issue had no activity for 4 months, and will be closed in 2 weeks unless there is new activity. Cheers!
Currently,
Observable
partitioning (grouping the observable'sPauliString
s into simultaneously measurable sets) is done by a greedy algorithm. There are many ways to do such a partitioning, and we should support more. One way is representing theObservable
as a graph and finding the minimum clique cover (MCC) as described in this paper https://arxiv.org/pdf/1907.03358.pdf. Figure 1, copied below, describes the setupand the paper lists several heuristic algorithms for MCC, some of which (the Ramsey algorithm) are in networkx.
This issue could use a short RFC outlining
This issue can be considered closed by a method
Observable.partition_mcc
which groups theObservable
sPauliString
s intoPauliStringCollection
s via the MCC method described above.For reference, the current greedy partitioning is below.
https://github.com/unitaryfund/mitiq/blob/4f827e48ec260ca13659979a5560f8a4e1b68965/mitiq/observable/observable.py#L60-L80