
    hA                     x    S r SSKrSSKrSS/r\R
                  " SS9S	S j5       r\R
                  S
S j5       rg)zT
Provides functions for finding and testing for locally `(k, l)`-connected
graphs.

    Nkl_connected_subgraphis_kl_connectedT)returns_graphc                    [         R                  " U 5      nSnSnU(       Ga9  Sn[        UR                  5       5       GH  nUu  pU(       a_  X1n[	        U5       H-  nUR                  5        H  nUR                  X   5        M     M/     U R                  U5      R                  5       nO[         R                  " U 5      nX/nSnSnU(       aV  US-  nUU:  a  SnOHU	nU H  nUU:w  d  M  UR                  UU5        UnM!      [        R                  " XU
5      nU(       a  MV  US:X  d  M  UR                  X5        SnU(       d  GM  SnGM     U(       a  GM9  U(       a  XV4$ U$ ! [        R                   a    Sn Ncf = f)a  Returns 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      )copydeepcopylistedgesrangeupdatesubgraphremove_edgenxshortest_pathNetworkXNoPath)Gkl
low_memorysame_as_graphHgraphOKdeleted_someedgeuvvertsiwG2pathcntacceptprevs                      L/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/hybrid.pyr   r      sm   f 	aAGL

 ODFQqA"ZZ\QT* * " ZZ&++-]]1%6DCFq!8FAqytQ/  
!++B15D $" {a##7#GI $ ,Z |H (( ! D!s   E((F Fc           
      \   SnU R                  5        H  nUu  pgU(       ad  Xg1n[        U5       H@  n	UR                  5        V
s/ s H"  oR                  U R	                  U
5      5      PM$       n
MB     U R                  U5      nO[        R                  " U 5      nXg/nSnSnU(       aS  US-  nX:  a  SnOFUnU H  n
X:w  d  M
  UR                  X5        U
nM      [        R                  " XU5      nU(       a  MS  US:X  d  M  Sn  U$    U$ s  sn
f ! [        R                   a    Sn N7f = f)a  Returns 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.

Tr   r   F)r   r   r   r   	neighborsr   r	   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   s                   r&   r   r   w   s*   R G	FE1X7<zz|D|!akk!n-|D E"Bq!Bv1HCxD9NN4+D 
''q1 d" Q;GNG F N; E, $$ s   )DDD+*D+)FF)F)__doc__r   networkxr   __all___dispatchabler   r        r&   <module>r/      s[     "$5
6 %e &eP L Lr.   