
    h                         S SK r\R                  " SS9S\S4S j5       r " S S5      r " S S	\5      r " S
 S\5      r " S S\5      rg)    Nweight)
edge_attrsluc              #     #    SS K n[        [        [        S.nU R	                  5       n[
        R                  " U [        U5      US9R                  S5      nUR                  U5      nXS   " XrS9nUR                  n	[        S U R                  5        5       5       HS  u  pUR                  XS9nX
   U   R                  US5      nXX-  '   U* XU	-  '   XR                  X5      -  nXU44v   MU     g 7f)Nr   )fullr   cg)nodelistr   cscdtypec              3   >   #    U  H  u  p[        X45      v   M     g 7fN)sorted).0uvs      \/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/centrality/flow_matrix.py	<genexpr>"flow_matrix_row.<locals>.<genexpr>   s     <)$!vqf~~)s   g      ?)numpyFullInverseLaplacianSuperLUInverseLaplacianCGInverseLaplaciannumber_of_nodesnxlaplacian_matrixrangeasformatastypewr   edgeszerosgetget_rows)Gr   r   solvernp
solvernamenLCr    r   r   Bcrows                  r   flow_matrix_rowr/      s       %% J
 	
A
Aa@II%PA	A1*A	A<!'')<<HHQH$DGKK$!%2a% **Q""q6k =s   C2C4c                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)InverseLaplacian$   Nc                    SS K qUR                  u    nX0l        X@l        Uc  U R                  U5      U l        OX l        [        R                  U R                  U4US9U l        USS 2SS 24   U l	        U R                  U5        g )Nr   r      )r   r'   shaper   r)   widthr    r"   r+   L1init_solver)selfr*   r6   r   r)   s        r   __init__InverseLaplacian.__init__%   sr    A
=ZZ]DFF4661+U3ABF)    c                     g r    r9   r*   s     r   r8   InverseLaplacian.init_solver4   s    r<   c                 .    [         R                  " S5      eNzImplement solverr   NetworkXErrorr9   rs     r   solveInverseLaplacian.solve7       122r<   c                 .    [         R                  " S5      erB   rC   rE   s     r   solve_inverseInverseLaplacian.solve_inverse:   rI   r<   c                     [        XS-   5       H1  nU R                  U5      U R                  X0R                  -  SS 24'   M3     U R                  $ Nr4   )r   rK   r+   r    )r9   r1r2rF   s       r   r$   InverseLaplacian.get_rows=   sC    r6"A%)%7%7%:DFF1vv:qr>" #vvr<   c                     U R                  U5      U R                  XR                  -  SS 24'   U R                  XR                  -     $ rN   )rK   r+   r    rE   s     r   get_rowInverseLaplacian.get_rowB   s<    !%!3!3A!6q66z12~vva&&j!!r<   c                     Sn[        U5       Hc  u  p4Sn[        R                  U5      S   n[        U5      S:  d  M0  Xc-
  nUR	                  5       UR                  5       -
  S-   n[	        XR5      nMe     U$ )Nr   r4   )	enumerater'   nonzerolenmaxmin)r9   r*   mir.   r    yr   s           r   r6   InverseLaplacian.widthF   sk    lFAA

3#A1vzEEEGaeeg%)I # r<   )r+   r7   r   r)   r    )NN)__name__
__module____qualname____firstlineno__r:   r8   rG   rK   r$   rS   r6   __static_attributes__r>   r<   r   r1   r1   $   s%    33
"	r<   r1   c                   &    \ rS rSrS rS rS rSrg)r   R   c                     [         R                  UR                  U R                  S9U l        [         R
                  R                  U R                  R                  5       5      U R                  SS 2SS 24'   g Nr   r4   )	r'   r"   r5   r   ILlinalginvr7   todenser?   s     r   r8    FullInverseLaplacian.init_solverS   sK    ((177$**(5))--(9:ABr<   c                 t    [         R                  UR                  U R                  S9nU R                  U-  nU$ )Nr   )r'   r"   r5   r   ri   r9   rhsss      r   rG   FullInverseLaplacian.solveW   s.    HHSYYdjjH1GGcMr<   c                 (    U R                   USS 24   $ rN   ri   rE   s     r   rK   "FullInverseLaplacian.solve_inverse\   s    wwq!"u~r<   rt   Nr`   ra   rb   rc   r8   rG   rK   rd   r>   r<   r   r   r   R   s    ;
r<   r   c                   &    \ rS rSrS rS rS rSrg)r   `   c                     SS K nUR                  R                  R                  U R                  R                  5       5      U l        g )Nr   )scipysparserj   
factorizedr7   tocsclusolve)r9   r*   sps      r   r8   #SuperLUInverseLaplacian.init_solvera   s+    yy''22477==?Cr<   c                     [         R                  U R                  U R                  S9nSX!'   U R	                  USS  5      $ rh   )r'   r"   r)   r   r~   r9   rF   rp   s      r   rK   %SuperLUInverseLaplacian.solve_inversef   s8    hhtvvTZZh0||CG$$r<   c                     [         R                  UR                  U R                  S9nU R	                  USS  5      USS & U$ rh   )r'   r"   r5   r   r~   ro   s      r   rG   SuperLUInverseLaplacian.solvek   s;    HHSYYdjjH1SW%!"r<   )r~   N)r`   ra   rb   rc   r8   rK   rG   rd   r>   r<   r   r   r   `   s    D
%
r<   r   c                   &    \ rS rSrS rS rS rSrg)r   q   c                    SS K q[        R                  R                  R	                  U R
                  R                  5       5      nU R                  S-
  n[        R                  R                  R                  X34UR                  S9U l
        g )Nr   r4   )r5   matvec)rz   r   r{   rj   spilur7   r}   r)   LinearOperatorrG   M)r9   r*   ilur)   s       r   r8   CGInverseLaplacian.init_solverr   s]    ii$$TWW]]_5FFQJ!!00vcii0Pr<   c                     [         R                  UR                  U R                  S9n[        R
                  R                  R                  U R                  USS  U R                  SS9S   USS & U$ )Nr   r4   r   r   atol)
r'   r"   r5   r   r   r{   rj   r   r7   r   ro   s      r   rG   CGInverseLaplacian.solvez   s]    HHSYYdjjH1		  ##DGGSWQ#GJ!"r<   c                     [         R                  U R                  U R                  5      nSX!'   [        R
                  R                  R                  U R                  USS  U R                  SS9S   $ )Nr4   r   r   )
r'   r"   r)   r   r   r{   rj   r   r7   r   r   s      r   rK    CGInverseLaplacian.solve_inverse   sX    hhtvvtzz*yy""477CGtvvA"FqIIr<   )r   Nrv   r>   r<   r   r   r   q   s    Q
Jr<   r   )	networkxr   _dispatchablefloatr/   r1   r   r   r   r>   r<   r   <module>r      sd     X&"%  ':+ +\+ . "J) Jr<   