
    ިsg7                         d dl Z  e j                  d      Z e j                  d       d dlZd dlmZ d dlmZ  G d d      Z	d Z
d	 Zy)
    Nnumpyscipy)havel_hakimi_graph)margulis_gabber_galil_graphc                   (    e Zd Zed        Zd Zd Zy)TestLaplacianc                    g d}t        |      | _        t        j                  d | j                  j	                         D              | _        | j
                  j                  d       t        j                  | j                        | _        | j                  j                         | _
        | j                  j                         D ]  }| j                  j                  ||         t        j                         | _        | j                  j                  d       t        j                   | j                        | _        t        j                  d | j                  j	                         D              | _        | j                  j                         | _        | j&                  j                         D ]  }| j&                  j                  ||         y )N)      r      r   c              3   2   K   | ]  \  }}||d ddf  yw      ?333333?)weightotherN .0uvs      W/var/www/html/venv/lib/python3.12/site-packages/networkx/linalg/tests/test_laplacian.py	<genexpr>z,TestLaplacian.setup_class.<locals>.<genexpr>   s%      
6<q!QcC01
      
r   r   r   r
   )r
   r   )r
   r   )r
      )r   r   )r      )r   r   )r   r    )r    r   c              3   2   K   | ]  \  }}||d ddf  ywr   r   r   s      r   r   z,TestLaplacian.setup_class.<locals>.<genexpr>-   s%      
6<q!QcC01
r   )r   GnxGraphedgesWGadd_node
MultiGraphMGcopyGslnodesadd_edgeDiGraphDiGadd_edges_fromMultiDiGraphDiMGDiWGDiGsl)clsdegnodes      r   setup_classzTestLaplacian.setup_class   sD   "3' 
@C
 
 	suu% %%**,GGMMO 	)DGGT4(	)
 **,	
 ??377+:: 
@C
 
 GGLLN	IIOO% 	+DIItT*	+    c           	      N   t         j                  g dg dg dg dg dg      }d|z  }d|z  }t         j                  g dg d	g d
g dg dg dg      }d|z  }d|z  }t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                  ddg      j                         t         j                  ddgddgg             t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                  d      j                         |       t         j                  j                  t	        j
                  | j                  d      j                         |       t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                  ddg      j                         t         j                  ddgddgg             t         j                  j                  t	        j
                  | j                        j                         |       t         j                  j                  t	        j
                  | j                  d      j                         |       t         j                  j                  t	        j
                  | j                  d      j                         |       y)zGraph Laplacian)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   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;   )r   r   r   r;   r   r;   )r   r   r   r   r;   r   r   r   nodelistr;   Nr   r   r   )nparraytestingassert_equalr#   laplacian_matrixr"   todenser)   r&   r/   r2   r3   )selfNLWLOLDiNLDiWLDiOLs          r   test_laplacianzTestLaplacian.test_laplacian4   s    XX+++++	- . 2X2Xxx1111113 4 TzTz


 3 3DFF ; C C ErJ


 3 3DGG < D D FK


!Q8@@BHHq"gAw'(	
 	

 3 3DGG < D D FK


 3 3DGGD I Q Q SUWX


8@@BB	
 	

 3 3DHH = E E GN


 3 3DII > F F H$O


Aq6:BBDHHq"g1v&'	
 	

 3 3DII > F F H$O


		$7??A4	
 	

		':BBDd	
r9   c           	      4	   t         j                  g dg dg dg dg dg      }t         j                  g dg dg dg dg dg      }t         j                  g dg dg dg d	g dg      }t         j                  g d
g dg dg dg dg dg      }t         j                  g d
g dg dg dg dg dg      }t         j                  g dg dg dg dg dg dg      }t         j                  j                  t	        j
                  | j                  t        d            j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                  d      j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                  t        dd            j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       t         j                  j                  t	        j
                  | j                  d      j                         |d       t         j                  j                  t	        j
                  | j                        j                         |d       y) zGeneralized Graph Laplacian)      ?&1ڿrO   X9v        )rO   rN         rQ   rQ   )rO   rR   rN   rQ   rQ   )rP   rQ   rQ   rN   rQ   )rQ   rQ   rQ   rQ   rQ   )      ?登zҿrT   eaֿrQ   )rT   K=U?ioTտrQ   rQ   )rT   rW   rV   rQ   rQ   )rU   rQ   rQ   r   rQ   )rN   rQ   rڿrQ   rQ   rQ   )rQ   rQ   rQ   rQ   rQ   rQ   )rX   rQ   rN   rQ   rX   rQ   )rQ   rQ   rQ   rN   rR   -)rQ   rQ   rQ   rR   rN   rY   )rQ   rQ   rQ   rY   rQ   rN   )rX   rQ   rN   rX   rQ   rQ   )rQ   rQ   rQ   rQ   rY   rN   )rV   gzrT   rQ   rQ   rQ   )rT   rR   rS   rT   rQ   rQ   )rQ   rQ   rQ   rV   rW   rX   )rQ   rQ   rQ   rW   rV   rX   )rQ   rQ   rQ   rQ   rX   r   r   r<   r
   decimalr   r>   r      N)r?   r@   rA   assert_almost_equalr#   normalized_laplacian_matrixr"   rangerD   r)   r&   r+   r/   r2   r3   r4   )rE   r"   GLLslr/   DiGLDiLsls          r   test_normalized_laplacianz'TestLaplacian.test_normalized_laplacianc   s    HH;;;;;	= >
 XX?????	A B
 hhEEEEE	G H hhNNNNNNP Q xxOOOOOOQ R PPPPPPR S 	

&&**466E!HEMMO 	' 	

 	

&&**4662::<b! 	' 	
 	

&&**4773;;=r1 	' 	
 	

&&**4773;;=r1 	' 	
 	

&&**4777CKKM 	' 	

 	

&&**4884<<>Q 	' 	
 	

&&**q% gi 	' 	
 	

&&**4884<<>a 	' 	
 	

&&**4995==?q 	' 	
 	

&&**4995==?q 	' 	
 	

&&**499WEMMO 	' 	

 	

&&**4::6>>@%QR 	' 	
r9   N)__name__
__module____qualname__classmethodr8   rL   rd   r   r9   r   r   r      s!    %+ %+N-
^V
r9   r   c            	         t        j                         } | j                  d       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       	      }t        j                  j                  ||d
       | j                  d       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       d      }t        j                  j                  ||d
       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       d      }t        j                  j                  ||d
       t        j                         } | j                  d       t        j	                  g dg dg dg d g      }t        j
                  | dt        |       	      }t        j                  j                  ||d
       y!)"zDirected Laplacianr   )ŏ1w?:pΈҿ*Dؿ\ Ac̝着&}гY)rk   g7d?8gDioͿS!uqGx$(篔ec])rl   rp   rj   PkwǺݵ|г)rm   rq   rt   rj   H}8߿\(\)rn   rr   ru   rw   rj   )0ʿ)ro   rs   rv   rx   ry   rj   ?alphar=   r
   rZ   )r   r   )r    r   )rN   @ǘӿfj+޿rQ   rQ   ,ԚԿ)r~   rN   	h"lx¿rQ   [<ԿrQ   )r   r   rN   rQ   o_rQ   )rQ   rQ   rQ   rN   rR   rR   )rQ   r   r   rR   rN         п)r   rQ   rQ   rR   r   rN   randomr|   r=   	walk_type)r   @ǘÿfj+οrQ   rQ   TĿ)r   r   ]m{rQ   [<ĿrQ   )r   r   r   rQ   +eXrQ   )rQ   rQ   rQ   r   r   r   )rQ   r   r   r   r         )r   rQ   rQ   r   r   r   lazy)r   )r   r   )r   r   r   )r
   r   )r   I+ƿr   r   )r   r   rQ   r   )r   rQ   r   r   )r   r   r   r   N)	r#   r.   r0   r?   r@   directed_laplacian_matrixsortedrA   r]   )r"   r`   Ls      r   test_directed_laplacianr      s   
 	

A	
 
IIIIIIK 
LB 	$$QcF1IFAJJ""1b!"4 %&	IIIIIIK 
LB 	$$	vayH	A JJ""1b!"4 
IIIIIIK 
LB 	$$QcF1IQWXAJJ""1b!"4 	

A=>	33335 
6B
 	$$QcF1IFAJJ""1b!"4r9   c            	         t        j                         } | j                  d       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       	      }t        j                  j                  ||d
       | j                  d       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       d      }t        j                  j                  ||d
       t        j	                  g dg dg dg dg dg dg      }t        j
                  | dt        |       d      }t        j                  j                  ||d
       t        j                  t        d            }t        j
                  |      }t        j	                  g dg dg dg d g      }t        j                  j                  ||d!       t        j                  t         j                        5  t        j
                  | d"d#$       d%d%d%       t        j                  t         j                        5  t        j
                  | d&'       d%d%d%       y%# 1 sw Y   MxY w# 1 sw Y   y%xY w)(z Directed combinatorial Laplacianr   )g46<?F%uK=U_QkMb`_vOf)r   g
ףp=
?Aǘŏ1w-!a+eylxz,C|)r   r   gZӼ?y&1lSt$r   )r   r   r   g|Pk?z6>W[<Nё\˿)r   r   r   r   gt?B`"۩)r   r   r   r   r   gjt?rz   r{   r
   rZ   r}   )gB`"?Biޡ+ΧrQ   rQ   :H)r   g+η?rQ   r   rQ   )r   r   Biޱ?rQ   r   rQ   )rQ   rQ   rQ   KY8?KY8Žr   )rQ   r   r   r   r   r   )r   rQ   rQ   r   r   r   r   r   )r   5;Nё$ۗrQ   rQ   rm   )r   g+Χ?wrQ   r   rQ   )r   r   gBiޡ?rQ   r   rQ   )rQ   rQ   rQ   KY8Ž?r   r   )rQ   r   r   r   r   rm   )rm   rQ   rQ   r   rm   r   r   r   )K}\UU?iKGUUr   rQ   )r   r   rQ   r   )r   rQ   r   r   )rQ   r   r   r   r    pagerankd   )r   r|   Nsilly)r   )r#   r.   r0   r?   r@   'directed_combinatorial_laplacian_matrixr   rA   r]   r   pytestraisesNetworkXError)r"   r`   r   Eexpecteds        r   %test_directed_combinatorial_laplacianr     s3   
 	

A	
 
IIIIIIK 
LB 	221C&QR)TAJJ""1b!"4 %& 
IIIIIIK 
LB 	22	vayH	A JJ""1b!"4 
IIIIIIK 
LB 	22	vayF	A JJ""1b!"4


.q12A
2215Axx	=	=	=	=	?H JJ""1h":	r''	( W
221
RUVW	r''	( I
221HI IW WI Is   I5J5I>J
)r   importorskipr?   networkxr#   networkx.generators.degree_seqr   networkx.generators.expandersr   r   r   r   r   r9   r   <module>r      sN    V!   G   = En
 n
bC5LNIr9   