ó
    …~iÁ  ã                   óÄ   • S r SSKrSSKJr  SS/r\" S5      \" S5      \R                  S 5       5       5       r\" S5      \" S5      \R                  S	 5       5       5       rg)
z
Communicability.
é    N)Únot_implemented_forÚcommunicabilityÚcommunicability_expÚdirectedÚ
multigraphc           
      óâ  • SSK n[        U 5      n[        R                  " X5      nSX3S:g  '   UR                  R                  U5      u  pEUR                  U5      n[        [        U[        [        U5      5      5      5      n0 nU  He  n	0 X‰'   U  HX  n
SnXy   nXz   n[        [        U5      5       H#  nXµSS2U4   U   USS2U4   U   -  Xn   -  -  nM%     [        U5      X‰   U
'   MZ     Mg     U$ )aç  Returns communicability between all pairs of nodes in G.

The communicability between pairs of nodes in G is the sum of
walks of different lengths starting at node u and ending at node v.

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

Returns
-------
comm: dictionary of dictionaries
    Dictionary of dictionaries keyed by nodes with communicability
    as the value.

Raises
------
NetworkXError
   If the graph is not undirected and simple.

See Also
--------
communicability_exp:
   Communicability between all pairs of nodes in G  using spectral
   decomposition.
communicability_betweenness_centrality:
   Communicability betweenness centrality for each node in G.

Notes
-----
This algorithm uses a spectral decomposition of the adjacency matrix.
Let G=(V,E) be a simple undirected graph.  Using the connection between
the powers  of the adjacency matrix and the number of walks in the graph,
the communicability  between nodes `u` and `v` based on the graph spectrum
is [1]_

.. math::
    C(u,v)=\sum_{j=1}^{n}\phi_{j}(u)\phi_{j}(v)e^{\lambda_{j}},

where `\phi_{j}(u)` is the `u\rm{th}` element of the `j\rm{th}` orthonormal
eigenvector of the adjacency matrix associated with the eigenvalue
`\lambda_{j}`.

References
----------
.. [1] Ernesto Estrada, Naomichi Hatano,
   "Communicability in complex networks",
   Phys. Rev. E 77, 036111 (2008).
   https://arxiv.org/abs/0707.0756

Examples
--------
>>> G = nx.Graph([(0, 1), (1, 2), (1, 5), (5, 4), (2, 4), (2, 3), (4, 3), (3, 6)])
>>> c = nx.communicability(G)
r   Né   ç        )ÚnumpyÚlistÚnxÚto_numpy_arrayÚlinalgÚeighÚexpÚdictÚzipÚrangeÚlenÚfloat)ÚGÚnpÚnodelistÚAÚwÚvecÚexpwÚmappingÚcÚuÚvÚsÚpÚqÚjs                  Úd/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/algorithms/communicability_alg.pyr   r      sï   € óv ä�A‹w€HÜ
×Ò˜!Ó&€Aà€Aˆ3�h�KØ�Y‰Y�^‰^˜AÓ�F€AØ�6‰6�!‹9€DÜ”3�x¤¤s¨8£}Ó!5Ó6Ó7€GØ
€AãˆØˆ‰ÛˆAØˆAØ‘
ˆAØ‘
ˆAÜœ3˜x›=Ö)�Øš˜A˜‘Y˜q‘\ Cª¨1¨¡I¨a¡LÑ0°4±7Ñ:Ñ:’ñ *ä˜A“hˆA‰D�‹Gó ñ ð €Hó    c           
      óD  • SSK n[        U 5      n[        R                  " X5      nSX3S:g  '   UR                  R                  U5      n[        [        U[        [        U5      5      5      5      n0 nU  H)  n0 Xg'   U  H  n[        XEU   XX   4   5      Xg   U'   M     M+     U$ )a  Returns communicability between all pairs of nodes in G.

Communicability between pair of node (u,v) of node in G is the sum of
walks of different lengths starting at node u and ending at node v.

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

Returns
-------
comm: dictionary of dictionaries
    Dictionary of dictionaries keyed by nodes with communicability
    as the value.

Raises
------
NetworkXError
    If the graph is not undirected and simple.

See Also
--------
communicability:
   Communicability between pairs of nodes in G.
communicability_betweenness_centrality:
   Communicability betweenness centrality for each node in G.

Notes
-----
This algorithm uses matrix exponentiation of the adjacency matrix.

Let G=(V,E) be a simple undirected graph.  Using the connection between
the powers  of the adjacency matrix and the number of walks in the graph,
the communicability between nodes u and v is [1]_,

.. math::
    C(u,v) = (e^A)_{uv},

where `A` is the adjacency matrix of G.

References
----------
.. [1] Ernesto Estrada, Naomichi Hatano,
   "Communicability in complex networks",
   Phys. Rev. E 77, 036111 (2008).
   https://arxiv.org/abs/0707.0756

Examples
--------
>>> G = nx.Graph([(0, 1), (1, 2), (1, 5), (5, 4), (2, 4), (2, 3), (4, 3), (3, 6)])
>>> c = nx.communicability_exp(G)
r   Nr	   r
   )Úscipyr   r   r   r   Úexpmr   r   r   r   r   )	r   Úspr   r   ÚexpAr   r   r    r!   s	            r&   r   r   ]   s�   € óp ä�A‹w€HÜ
×Ò˜!Ó&€Aà€Aˆ3�h�Kà�9‰9�>‰>˜!Ó€DÜ”3�x¤¤s¨8£}Ó!5Ó6Ó7€GØ
€AÛˆØˆ‰ÛˆAÜ˜D¨¡¨W©ZÐ!7Ñ8Ó9ˆA‰D�‹Gó ñ ð €Hr'   )	Ú__doc__Únetworkxr   Únetworkx.utilsr   Ú__all__Ú_dispatchabler   r   © r'   r&   Ú<module>r3      sŠ   ðñó Ý .àÐ3Ð
4€ñ �ZÓ Ù�\Ó"Ø×ÑñLó ó #ó !ðLñ^ �ZÓ Ù�\Ó"Ø×ÑñCó ó #ó !ñCr'   