+
    �°³j%
  ã                   óx   € ^ RI t ^ RIt^ RIHt R.t]P                  ]! R4      ]! R4      R 4       4       4       tR# )é    N)Únot_implemented_forÚis_perfect_graphÚdirectedÚ
multigraphc                óÌ  € \         ;QJ dw    R \        P                  ! \        P                  ! V 4      \        P                  ! \        P
                  ! V 4      4      4       4       F  '       g   K   R'       * # 	  R'       * # ! R \        P                  ! \        P                  ! V 4      \        P                  ! \        P
                  ! V 4      4      4       4       4      '       * # )uµ  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
:math:`\overline{G}` contains an **induced odd hole** â€” an induced cycle of
odd length at least five without chords.

Parameters
----------
G : NetworkX Graph
    The graph to check. Must be a finite, simple, undirected graph.

Returns
-------
bool
    True if G is a perfect graph, else False.

Notes
-----
This function uses a direct approach: cycle enumeration to detect
chordless odd cycles in G and :math:`\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
:math:`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.

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

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
c              3   óx   "  € T F0  p\        V4      ^8¬  ;'       d    \        V4      ^,          ^8H  x € K2  	  R# 5i)é   N)Úlen)Ú.0Úcs   & Úb/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/perfect_graph.pyÚ	<genexpr>Ú#is_perfect_graph.<locals>.<genexpr>D   s:   é € ð ñ
ˆAô 
ˆQ‹�1‰×+Ð+œ3˜q›6 A�:¨™?Ô+ó
ùs   ‚:œ:TF)ÚanyÚ	itertoolsÚchainÚnxÚchordless_cyclesÚ
complement)ÚGs   &r   r   r   	   s©   € ÷v ‹sñ ä—’Ü×Ò Ó"¤B×$7Ò$7¼¿ºÀaÓ8HÓ$Iô
ó�sŒsô ð Šsô ð ˆsñ ä—’Ü×Ò Ó"¤B×$7Ò$7¼¿ºÀaÓ8HÓ$Iô
óó ô ð ó    )r   Únetworkxr   Únetworkx.utils.decoratorsr   Ú__all__Ú_dispatchabler   © r   r   Ú<module>r      sJ   ðÛ ã Ý 9àÐ
€ð ×ÑÙ�ZÓ Ù�\Ó"ñ=ó #ó !ó ò=r   