is_perfect_graph#
- is_perfect_graph(G)[source]#
Return True if G is a perfect graph, else False.
A graph G is perfect if, for every induced subgraph H of G, the chromatic number of H equals the size of the largest clique in H.
According to the Strong Perfect Graph Theorem (SPGT): A graph is perfect if and only if neither the graph G nor its complement \(\overline{G}\) contains an induced odd hole — an induced cycle of odd length at least five without chords.
- Parameters:
- GNetworkX Graph
The graph to check. Must be a finite, simple, undirected graph.
- Returns:
- bool
True if G is a perfect graph, else False.
See also
is_chordal
,is_bipartite
Related checks for specific categories of perfect graphs, such as chordal graphs, and bipartite graphs.
chordless_cycles
Used to detect “holes” in the graph
Notes
This function uses a direct approach: cycle enumeration to detect chordless odd cycles in G and \(\overline{G}\). This implementation runs in exponential time in the worst case, since the number of chordless cycles can grow exponentially.
The perfect-graph recognition problem is theoretically solvable in polynomial time. Chudnovsky et al. (2006) proved it can be solved in \(O(n^9)\) time via a complex structural decomposition [1], [2]. This implementation opts for a direct, transparent check rather than implementing that high-degree polynomial-time decomposition algorithm.
References
[1]M. Chudnovsky, N. Robertson, P. Seymour, and R. Thomas, The Strong Perfect Graph Theorem, Annals of Mathematics, vol. 164, no. 1, pp. 51–229, 2006. https://doi.org/10.4007/annals.2006.164.51
[2]M. Chudnovsky, G. Cornuéjols, X. Liu, P. Seymour, and K. Vušković, Recognizing Berge Graphs, Combinatorica 25(2): 143–186, 2005. DOI: 10.1007/s00493-005-0003-8 Preprint available at: https://web.math.princeton.edu/~pds/papers/algexp/Bergealg.pdf