§
    bŠtjA  ã                   óz   — d Z ddlZddlZddgZ ej        d¬¦  «        d
d„¦   «         Zej        dd	„¦   «         ZdS )zT
Provides functions for finding and testing for locally `(k, l)`-connected
graphs.

é    NÚkl_connected_subgraphÚis_kl_connectedT)Úreturns_graphFc                 óÔ  — t          j        | ¦  «        }d}d}|�rFd}t          |                     ¦   «         ¦  «        D �]}|\  }	}
|rp|	|
h}t	          |¦  «        D ]4}|                      ¦   «         D ]}|                     | |         ¦  «         ŒŒ5|                      |¦  «                              ¦   «         }nt          j        | ¦  «        }|	|
g}d}d}|rd|dz  }||k    rd}nV|	}|D ] }||k    r|                     ||¦  «         |}Œ!	 t          j	        ||	|
¦  «        }n# t          j
        $ r d}Y nw xY w|°d|dk    r|                     |	|
¦  «         d}|rd}�Œ |�°F|r||fS |S )aM  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                      úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/networkx/algorithms/hybrid.pyr   r      së  € õf 	Œ�aÑÔ€Aà€GØ€LØ
ñ *$Øˆõ
 ˜Ÿš™œ‘O”Oð $	$ñ $	$ˆDØ‰FˆQ�àð &Ø˜A˜�Ý˜q™œð +ð +�AØ"ŸZšZ™\œ\ð +ð +˜ØŸš Q q¤TÑ*Ô*Ð*Ð*ð+à—Z’Z Ñ&Ô&×+Ò+Ñ-Ô-��å”] 1Ñ%Ô%�à�q�6ˆDØˆCØˆFØð !Ø�q‘�Ø˜!’8�8Ø�FØà�Øð !ð !�AØ˜q’y�yØŸš t¨QÑ/Ô/Ð/Ø ˜øð!ÝÔ+¨B°°1Ñ5Ô5�D�DøÝÔ(ð !ð !ð !Ø �D�D�Dð!øøøð ð !ð" ˜Š{ˆ{Ø—’˜a Ñ#Ô#Ð#Ø#�Øð $Ø#�GùðU ñ *$ðZ ð Ø�7ˆ|ÐØ€Hs   ÄD"Ä"D6Ä5D6c                 óü  ‡ ‡— d}‰                       ¦   «         D ]â}|\  }}|rM||hŠt          |¦  «        D ]#}ˆ ˆfd„‰                     ¦   «         D ¦   «          Œ$‰                      ‰¦  «        }	nt          j        ‰ ¦  «        }	||g}
d}d}|
rd|dz  }||k    rd}nV|}|
D ] }||k    r|	                     ||¦  «         |}Œ!	 t          j        |	||¦  «        }
n# t          j        $ r d}
Y nw xY w|
°d|dk    rd} nŒã|S )aY  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.

    Tc                 ó`   •— g | ]*}‰                      ‰                     |¦  «        ¦  «        ‘Œ+S © )r   Ú	neighbors)Ú.0r    r   r   s     €€r&   ú
<listcomp>z#is_kl_connected.<locals>.<listcomp>§   s/   ø€ ÐDÐDÐD°!�—’˜aŸkšk¨!™nœnÑ-Ô-ÐDÐDÐDó    r   r   F)	r   r   r   r   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   sw  øø€ ðR €GØ—’‘	”	ð !ð !ˆØ‰ˆˆAàð 	"Ø˜�FˆEÝ˜1‘X”Xð Eð E�ØDÐDÐDÐDÐD°u·z²z±|´|ÐDÑDÔDÐDÐDØ—’˜EÑ"Ô"ˆBˆBå”˜qÑ!Ô!ˆBà�1ˆvˆØˆØˆØð 	Ø�1‰HˆCØ�aŠxˆxØ�ØàˆDØð ð �Ø˜’9�9Ø—N’N 4¨Ñ+Ô+Ð+Ø�DøðÝÔ'¨¨A¨qÑ1Ô1��øÝÔ$ð ð ð Ø���ðøøøð ð 	ð" �QŠ;ˆ;ØˆGØˆEð ð €Ns   ÃCÃC,Ã+C,)FF)F)Ú__doc__r   Únetworkxr   Ú__all__Ú_dispatchabler   r   r)   r-   r&   ú<module>r2      s›   ððð ð €€€à Ð Ð Ð à"Ð$5Ð
6€ð €Ô Ð%Ñ%Ô%ðeð eð eñ &Ô%ðeðP ÔðLð Lð Lñ ÔðLð Lð Lr-   