+
    �°³jÿ  ã                   ót   € R t ^ RIt^ RIt^ RIHt R.t]! R4      ]P                  ! RR7      R 4       4       tR# )z;Function for computing the moral graph of a directed graph.N)Únot_implemented_forÚmoral_graphÚ
undirectedT)Úreturns_graphc                óº   € V P                  4       pV P                  P                  4        F,  p\        P                  ! V^R7      pVP                  V4       K.  	  V# )aš  Return the Moral Graph

Returns the moralized graph of a given directed graph.

Parameters
----------
G : NetworkX graph
    Directed graph

Returns
-------
H : NetworkX graph
    The undirected moralized graph of G

Raises
------
NetworkXNotImplemented
    If `G` is undirected.

Examples
--------
>>> G = nx.DiGraph([(1, 2), (2, 3), (2, 5), (3, 4), (4, 3)])
>>> G_moral = nx.moral_graph(G)
>>> G_moral.edges()
EdgeView([(1, 2), (2, 3), (2, 5), (2, 4), (3, 4)])

Notes
-----
A moral graph is an undirected graph H = (V, E) generated from a
directed Graph, where if a node has more than one parent node, edges
between these parent nodes are inserted and all directed edges become
undirected.

https://en.wikipedia.org/wiki/Moral_graph

References
----------
.. [1] Wray L. Buntine. 1995. Chain graphs for learning.
       In Proceedings of the Eleventh conference on Uncertainty
       in artificial intelligence (UAI'95)
)Úr)Úto_undirectedÚpredÚvaluesÚ	itertoolsÚcombinationsÚadd_edges_from)ÚGÚHÚpredsÚpredecessors_combinationss   &   ÚZ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/moral.pyr   r      sN   € ðX 	
�‰Ó€AØ—‘—‘–ˆÜ$-×$:Ò$:¸5ÀAÔ$FÐ!Ø	×ÑÐ2Ö3ñ !ð €Hó    )	Ú__doc__r   ÚnetworkxÚnxÚnetworkx.utilsr   Ú__all__Ú_dispatchabler   © r   r   Ú<module>r      sD   ðÙ Bã ã Ý .àˆ/€ñ �\Ó"Ø×Ò Ô%ñ.ó &ó #ò.r   