a
HlX`mã@s(dZddlZddgZdd„Zdd„ZdS)z$
Utilities for connectivity package
éNÚ!build_auxiliary_node_connectivityÚ!build_auxiliary_edge_connectivityc Csì| ¡}i}t ¡}t|ƒD]T\}}|||<|j|›d|d|j|›d|d|j|›d|›dddqg}| ¡D]P\}}| ||›d||›df¡|s~| ||›d||›df¡q~|j|dd||j d<|S)aTCreates a directed graph D from an undirected graph G to compute flow
based node connectivity.
For an undirected graph G having `n` nodes and `m` edges we derive a
directed graph D with `2n` nodes and `2m+n` arcs by replacing each
original node `v` with two nodes `vA`, `vB` linked by an (internal)
arc in D. Then for each edge (`u`, `v`) in G we add two arcs (`uB`, `vA`)
and (`vB`, `uA`) in D. Finally we set the attribute capacity = 1 for each
arc in D [1]_.
For a directed graph having `n` nodes and `m` arcs we derive a
directed graph D with `2n` nodes and `m+n` arcs by replacing each
original node `v` with two nodes `vA`, `vB` linked by an (internal)
arc (`vA`, `vB`) in D. Then for each arc (`u`, `v`) in G we add one
arc (`uB`, `vA`) in D. Finally we set the attribute capacity = 1 for
each arc in D.
A dictionary with a mapping between nodes in the original graph and the
auxiliary digraph is stored as a graph attribute: H.graph['mapping'].
References
----------
.. [1] Kammer, Frank and Hanjo Taubig. Graph Connectivity. in Brandes and
Erlebach, 'Network Analysis: Methodological Foundations', Lecture
Notes in Computer Science, Volume 3418, Springer-Verlag, 2005.
http://www.informatik.uni-augsburg.de/thi/personen/kammer/Graph_Connectivity.pdf
ÚA)ÚidÚBé©ÚcapacityÚmapping)
Úis_directedÚnxÚDiGraphÚ enumerateÚadd_nodeZadd_edgeÚedgesÚappendÚadd_edges_fromÚgraph) ÚGZdirectedr
ÚHÚiÚnoderÚsourceÚtarget©rúŽ/Users/cmdms/OneDrive-UOB/Development/Projects/2021/sam-consensus-v3/env/lib/python3.9/site-packages/networkx/algorithms/connectivity/utils.pyr s "$
cCs~| ¡r4t ¡}| | ¡¡|j| ¡dd|St ¡}| | ¡¡| ¡D]"\}}|j||f||fgddqR|SdS)aRAuxiliary digraph for computing flow based edge connectivity
If the input graph is undirected, we replace each edge (`u`,`v`) with
two reciprocal arcs (`u`, `v`) and (`v`, `u`) and then we set the attribute
'capacity' for each arc to 1. If the input graph is directed we simply
add the 'capacity' attribute. Part of algorithm 1 in [1]_ .
References
----------
.. [1] Abdol-Hossein Esfahanian. Connectivity Algorithms. (this is a
chapter, look for the reference of the book).
http://www.cse.msu.edu/~cse835/Papers/Graph_connectivity_revised.pdf
rrN)rrr
Zadd_nodes_fromÚnodesrr)rrrrrrrr=s)Ú__doc__ZnetworkxrÚ__all__rrrrrrÚs4