K iAzdZddlZddlZddgZej dd dZej d dZy) zT Provides functions for finding and testing for locally `(k, l)`-connected graphs. Nkl_connected_subgraphis_kl_connectedT) returns_graphctj|}d}d}|rd}t|jD]}|\} } |r]| | h} t |D]+} | jD]} | j || -|j | j}ntj|}| | g}d}d}|rK|dz }||k\rd}n>| }|D]} || k7s |j|| | } tj|| | }|rK|dk(s|j| | d}|sd}|r|r||fS|S#tj$rd}YGwxYw)aMReturns the maximum locally `(k, l)`-connected subgraph of `G`. A graph is locally `(k, l)`-connected if for each edge `(u, v)` in the graph there are at least `l` edge-disjoint paths of length at most `k` joining `u` to `v`. Parameters ---------- G : NetworkX graph The graph in which to find a maximum locally `(k, l)`-connected subgraph. k : integer The maximum length of paths to consider. A higher number means a looser connectivity requirement. l : integer The number of edge-disjoint paths. A higher number means a stricter connectivity requirement. low_memory : bool If this is True, this function uses an algorithm that uses slightly more time but less memory. same_as_graph : bool If True then return a tuple of the form `(H, is_same)`, where `H` is the maximum locally `(k, l)`-connected subgraph and `is_same` is a Boolean representing whether `G` is locally `(k, l)`-connected (and hence, whether `H` is simply a copy of the input graph `G`). Returns ------- NetworkX graph or two-tuple If `same_as_graph` is True, then this function returns a two-tuple as described above. Otherwise, it returns only the maximum locally `(k, l)`-connected subgraph. See also -------- is_kl_connected References ---------- .. [1] Chung, Fan and Linyuan Lu. "The Small World Phenomenon in Hybrid Power Law Graphs." *Complex Networks*. Springer Berlin Heidelberg, 2004. 89--104. TFr) copydeepcopylistedgesrangeupdatesubgraph remove_edgenx shortest_pathNetworkXNoPath)Gkl low_memory same_as_graphHgraphOK deleted_someedgeuvvertsiwG2pathcntacceptprevs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/networkx/algorithms/hybrid.pyrrsf aAGL  O$ $DFQAq+A"ZZ\+ QqT*++ZZ&++-]]1%q6DCFq!8F!AqytQ/ ! !++B15D"{ a## #GI$ $ Z7| H((! D!s/D66E Ec .d}|jD]}|\}}|rb||h}t|D]>} |jD cgc]"} |j|j | $c} @|j |} ntj |} ||g} d} d}| rK| dz } | |k\rd}n>|}| D]} | |k7s | j|| | } tj| ||} | rK|dk(sd}|S|Scc} w#tj$rd} Y-wxYw)aYReturns True if and only if `G` is locally `(k, l)`-connected. A graph is locally `(k, l)`-connected if for each edge `(u, v)` in the graph there are at least `l` edge-disjoint paths of length at most `k` joining `u` to `v`. Parameters ---------- G : NetworkX graph The graph to test for local `(k, l)`-connectedness. k : integer The maximum length of paths to consider. A higher number means a looser connectivity requirement. l : integer The number of edge-disjoint paths. A higher number means a stricter connectivity requirement. low_memory : bool If this is True, this function uses an algorithm that uses slightly more time but less memory. Returns ------- bool Whether the graph is locally `(k, l)`-connected subgraph. See also -------- kl_connected_subgraph References ---------- .. [1] Chung, Fan and Linyuan Lu. "The Small World Phenomenon in Hybrid Power Law Graphs." *Complex Networks*. Springer Berlin Heidelberg, 2004. 89--104. TrrF) r r rr neighborsrr rrrr)rrrrrrrrrrr r!r"r#r$r%s r&rrwsERG !A FE1X E7r/s]   "$5 6%e &e PLLr.