Ë
    D^(h{	  ã                   ó:   — d Z ddlZdgZej                  d„ «       Zy)z(Function for computing walks in a graph.é    NÚnumber_of_walksc                 óp  — ddl }|dk  rt        d|› �«      ‚t        j                  | d¬«      }|j                  j                  |j                  «       |«      }t        | «      D ����ci c]5  \  }}|t        | «      D ��ci c]  \  }}||j                  ||«      “Œ c}}“Œ7 }	}}}}|	S c c}}w c c}}}}w )aß  Returns the number of walks connecting each pair of nodes in `G`

    A *walk* is a sequence of nodes in which each adjacent pair of nodes
    in the sequence is adjacent in the graph. A walk can repeat the same
    edge and go in the opposite direction just as people can walk on a
    set of paths, but standing still is not counted as part of the walk.

    This function only counts the walks with `walk_length` edges. Note that
    the number of nodes in the walk sequence is one more than `walk_length`.
    The number of walks can grow very quickly on a larger graph
    and with a larger walk length.

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

    walk_length : int
        A nonnegative integer representing the length of a walk.

    Returns
    -------
    dict
        A dictionary of dictionaries in which outer keys are source
        nodes, inner keys are target nodes, and inner values are the
        number of walks of length `walk_length` connecting those nodes.

    Raises
    ------
    ValueError
        If `walk_length` is negative

    Examples
    --------

    >>> G = nx.Graph([(0, 1), (1, 2)])
    >>> walks = nx.number_of_walks(G, 2)
    >>> walks
    {0: {0: 1, 1: 0, 2: 1}, 1: {0: 0, 1: 2, 2: 0}, 2: {0: 1, 1: 0, 2: 1}}
    >>> total_walks = sum(sum(tgts.values()) for _, tgts in walks.items())

    You can also get the number of walks from a specific source node using the
    returned dictionary. For example, number of walks of length 1 from node 0
    can be found as follows:

    >>> walks = nx.number_of_walks(G, 1)
    >>> walks[0]
    {0: 0, 1: 1, 2: 0}
    >>> sum(walks[0].values())  # walks from 0 of length 1
    1

    Similarly, a target node can also be specified:

    >>> walks[0][1]
    1

    r   Nz"`walk_length` cannot be negative: )Úweight)	ÚnumpyÚ
ValueErrorÚnxÚadjacency_matrixÚlinalgÚmatrix_powerÚtoarrayÚ	enumerateÚitem)
ÚGÚwalk_lengthÚnpÚAÚpowerÚu_idxÚuÚv_idxÚvÚresults
             úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/algorithms/walks.pyr   r      s¸   € ót à�Q‚ÜÐ=¸k¸]ÐKÓLÐLä
×Ñ˜A dÔ+€Að �I‰I×"Ñ" 1§9¡9£;°Ó<€Eô " !›÷ñ áˆE�1ð 	
¼	À!»×E©H¨E°1ˆAˆu�z‰z˜% Ó'Ñ'ÓEÑEð€Fó ð €Mùó Fùõs   Á)B0
Â B*ÂB0
Â*B0
)Ú__doc__Únetworkxr   Ú__all__Ú_dispatchabler   © ó    r   ú<module>r       s/   ðÙ .ã àÐ
€ð ×ÑñFó ñFr   