
    h5                         d dl mZ d dlZ ej                  d      Zd dlZdZd Zd Z	d Z
d Zd	 Zd
 Z G d d      Z G d d      Zy)    )sqrtNnumpy)tracemin_pcgtracemin_lulanczoslobpcgc                      t        j                  d       t        j                  dd      } t        j                  t        j
                        5  t        j                  | d       ddd       y# 1 sw Y   yxY wz.Test that "tracemin_chol" raises an exception.scipy      tracemin_cholmethodN)pytestimportorskipnxbarbell_graphraisesNetworkXErroralgebraic_connectivityGs    n/var/www/django_project/virt/lib/python3.12/site-packages/networkx/linalg/tests/test_algebraic_connectivity.py)test_algebraic_connectivity_tracemin_cholr      sY    
 
AA	r''	( =
!!!O<= = =   A00A9c                      t        j                  d       t        j                  dd      } t        j                  t        j
                        5  t        j                  | d       ddd       y# 1 sw Y   yxY wr
   )r   r   r   r   r   r   fiedler_vectorr   s    r   !test_fiedler_vector_tracemin_cholr      sY    
 
AA	r''	( 5
!O45 5 5r   c                      t        j                  d       t        j                  dd      } t        j                  t        j
                        5  t        j                  | d       ddd       y# 1 sw Y   yxY wr
   )r   r   r   r   r   r   spectral_orderingr   s    r   $test_spectral_ordering_tracemin_cholr"      sY    
 
AA	r''	( 8
Q78 8 8r   c                     t        j                  d       t        j                  dd      } t        j                  |       }t
        j                  t
        j                  j                  d|j                  d   f            j                  }t        j                  t        j                  d      5  t        j                  j                  j                  ||d	d
d       ddd       y# 1 sw Y   yxY w)z1Test that "tracemin_unknown" raises an exception.r   r   r      r   )sizezUnknown linear system solver)matchFg:0yE>tracemin_unknown
normalizedtolr   N)r   r   r   r   laplacian_matrixnpasarrayrandomnormalshapeTr   r   linalgalgebraicconnectivity_tracemin_fiedler)r   LXs      r   $test_fiedler_vector_tracemin_unknownr7   %   s    
 
AA
AA


299##!QWWQZ#9:<<A	r''/M	N 

		''99qU5G 	: 	

 
 
s   2/C**C3c                  ^   t        j                  d       t        j                  dd      } t        j                  |       }|h dh dfk(  sJ t        t        d            }t        j                  | |      } t        j                  |       }||d   |d   |d   h|d   |d	   |d
   hfk(  sJ y )Nr      r   >   r   r$      >   r9   r   r   badfecr$   r:   r   r   )r   r   r   r   spectral_bisectiondict	enumeraterelabel_nodes)r   Cmappings      r   test_spectral_bisectionrB   1   s    
 
AA
a AI&&&&9X&'G
G$A
a A	WQZ,	WQZ,       c                 D   t         j                  j                  |      }|t        j                  dd      k7  sJ | |z  }t         j                  j                  |      }||z  t        j                  ||z  d      k(  sJ |t        j                  ||z  d      k(  sJ y )Nr   Hz>abs)r,   r2   normr   approx)Alxr   ynys         r   check_eigenvectorrO   @   s    		Bqe,,,,	AA		Bq5FMM"r't4444q2v40000rC   c                   6   e Zd Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Z	d Z
ej                  j                  de      d        Zej                  j                  de      d        Zd Zej                  j                  de      d	        Zej                  j                  de      d
        Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  dddej&                  fddej(                  ff      ej                  j                  de      d               Zy)TestAlgebraicConnectivityr   c                     t        j                         }t        j                  t         j                  t         j
                  ||       t        j                  t         j                  t         j                  ||       y )Nr   )r   DiGraphr   r   NetworkXNotImplementedr   r   selfr   r   s      r   test_directedz'TestAlgebraicConnectivity.test_directedM   sN    JJL%%r'@'@!F	
 	b//1B1BAfUrC   c                    t        j                         }t        j                  t         j                  t         j
                  ||       t        j                  t         j                  t         j                  ||       |j                  dd       t        j                  t         j                  t         j
                  ||       t        j                  t         j                  t         j                  ||       y )Nr   r   )r   Graphr   r   r   r   r   add_edgerU   s      r   test_null_and_singletonz1TestAlgebraicConnectivity.test_null_and_singletonU   s    HHJb&&(A(A1VTb&&(9(91VL	

1ab&&(A(A1VTb&&(9(91VLrC   c                    t        j                         }|j                  t        d             t        j                  |      dk(  sJ t        j                  t         j                  t         j                  ||       |j                  ddd       t        j                  |      dk(  sJ t        j                  t         j                  t         j                  ||       y )Nr:   r   r   r$   weight)
r   rY   add_nodes_fromranger   r   r   r   r   rZ   rU   s      r   test_disconnectedz+TestAlgebraicConnectivity.test_disconnected^   s    HHJ	q"((+q000b&&(9(91VL	

1a
"((+q000b&&(9(91VLrC   c                 ,   t        j                  d       t        j                  d      }t        j                  t        j
                  t        j                  |d       t        j                  t        j
                  t        j                  |d       y )Nr   r   unknownr   )r   r   r   
path_graphr   r   r   r   rV   r   s     r   test_unrecognized_methodz2TestAlgebraicConnectivity.test_unrecognized_methodh   sZ    G$MM!b&&(A(A1YWb&&(9(91YOrC   c                 V   t        j                  d       t        j                         }|j	                  ddd       t        j
                  |      }t        j                  |d|      t        j                  dd	      k(  sJ t        j                  |d|      }t        |d|       y )
Nr   r   r$   r]   -q=r*   r   r:   rE   rF   )
r   r   r   rY   rZ   r+   r   rI   r   rO   rV   r   r   rJ   rL   s        r   test_two_nodesz(TestAlgebraicConnectivity.test_two_nodesn   s    G$HHJ	

1a
""((fE4J
 
 	
 
 aU6:!Q"rC   c                    t        j                  d       t        j                         }|j	                  ddd       |j	                  ddd       |j	                  ddd       dt        j
                  |d	      z  }t        j                  |dd
|      t        j                  dd      k(  sJ t        j                  |dd
|      }t        |d|       y )Nr   r   g    חA)spamr$   rm   r]   rh   )r^   r*   r      rE   rF   )
r   r   r   
MultiGraphrZ   r+   r   rI   r   rO   rj   s        r   test_two_nodes_multigraphz3TestAlgebraicConnectivity.test_two_nodes_multigraphz   s    G$MMO	

1ac
"	

1aa
 	

1ab
!$$Qv66((f%
]]1$'( 	( ( aE&I!Q"rC   c                 h   t        j                  d       t        j                  d      }t        j                  |      }dt        dt        d      z         z
  }t        j                  |dd      }|t        j                  |d      k(  sJ t        j                  |dd      }t        |||       y )	Nr      r:   rh   traceminri   rE   rF   
r   r   r   rd   r+   r   r   rI   r   rO   )rV   r   rJ   sigmaacrL   s         r   test_abbreviation_of_methodz5TestAlgebraicConnectivity.test_abbreviation_of_method   s    G$MM!"DT!W%%&&qeJGV]]5d3333aU:>!UA&rC   c                 h   t        j                  d       t        j                  d      }t        j                  |      }dt        dt        d      z         z
  }t        j                  |d|      }|t        j                  |d      k(  sJ t        j                  |d|      }t        |||       y Nr   rt   r:   rh   ri   rE   rF   rv   rV   r   r   rJ   rw   rx   rL   s          r   	test_pathz#TestAlgebraicConnectivity.test_path   s    G$MM!"DT!W%%&&qeFCV]]5d3333aU6:!UA&rC   c                 ^   t        j                  d       t        j                  d      }|j	                  ddg       t        j
                  |      }d}t        j                  |d|      }|t        j                  |d	      k(  sJ t        j                  |d|      }t        |||       y )
Nr   r   )r   r:   )r   r$   g׋ʄ?rh   ri   rE   rF   )
r   r   r   rd   add_edges_fromr+   r   rI   r   rO   r|   s          r   !test_problematic_graph_issue_2381z;TestAlgebraicConnectivity.test_problematic_graph_issue_2381   s    G$MM!	&&)*"&&qeFCV]]5d3333aU6:!UA&rC   c                 P   t        j                  d       t        j                  d      }t        j                  |      }dt        d      z
  }t        j                  |d|      }|t        j                  |d      k(  sJ t        j                  |d|      }t        |||       y r{   
r   r   r   cycle_graphr+   r   r   rI   r   rO   r|   s          r   
test_cyclez$TestAlgebraicConnectivity.test_cycle   s    G$NN1"DG&&qeFCV]]5d3333aU6:!UA&rC   c                 T   t        j                  d       t        j                  d      }t        j                  |      }dt        d      z
  }t        j                  |d|d      }|t        j                  |d      k(  sJ t        j                  |d|d      }t        |||       y )	Nr   rt   r:   rh   r$   )r*   r   seedrE   rF   r   r|   s          r   test_seed_argumentz,TestAlgebraicConnectivity.test_seed_argument   s    G$NN1"DG&&qeFKV]]5d3333aU6B!UA&rC   )r)   rw   laplacian_fnFg'?TgG'91Ŵ?c                 ~   t        j                  d       t        j                  g d      } ||      }	 t        j                  ||d|      t        j
                  |d      k(  sJ t        j                  ||d|      }t        |||       y # t        j                  $ r}|j                  dvr Y d }~y d }~ww xY w)Nr   )Z)r$   
   )r$   )   )r$   ;   )r:      )r:   *   )r:   <   )r9   rp   )r9   +   )r9   9   )r   rt   )r   ,   )r   :   )r      )r   8   )r   r   )rp   r   )rp      )      )r   r   )r   r   )rt   r   )rt       )	      )r   5   )r   r   )r      )      )r   r   )r   r   )r      )r   r   )r      )r      )r      )r   1   )r      )r   2   )      )r      )r   6   )r      )r   7   )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   3   )r   r   )r   4   )r   r   )   r   )r   r   )r   r   )   r   )r   r   )r   r   )r   /   )r   0   )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   rh   r(   rE   rF   ))zCholesky solver unavailable.)zLU solver unavailable.)
r   r   r   rY   r   rI   r   rO   r   args)	rV   r)   rw   r   r   r   rJ   rL   errs	            r   test_buckminsterfullerenez3TestAlgebraicConnectivity.test_buckminsterfullerene   s     	G$HH[]
| O	,,jeFu$/0 0 0 !!!
fUAa* 	xx    		s   AB B<#B77B<N)__name__
__module____qualname__r   markparametrizemethodsrW   r[   ra   rf   rk   rr   ry   r}   r   r   r   r   r+   normalized_laplacian_matrixr    rC   r   rQ   rQ   L   s   [[Xw/V 0V [[Xw/M 0M [[Xw/M 0MP [[Xw/	# 0	# [[Xw/# 0#' [[Xw/' 0' [[Xw/	' 0	' [[Xw/' 0' [[Xw/' 0' [[/&(;(;<&(F(FG	
 [[Xw/l 0lrC   rQ   c                      e Zd Zej                  ej
                  ej                  ej                  fZe	j                  j                  de      d        Ze	j                  j                  de      d        Zd Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d	        Ze	j                  j                  de      d
        Ze	j                  j                  ddg dg dgfdg dg dgff      e	j                  j                  de      d               Zy)TestSpectralOrderinggraphc                 x     |       }t        j                  t        j                  t        j                  |       y )N)r   r   r   r   r!   rV   r   r   s      r   test_nullgraphz#TestSpectralOrdering.test_nullgraph9  s%    Gb&&(<(<a@rC   c                      |       }|j                  d       t        j                  |      dgk(  sJ |j                  ddd       |j                  ddd       t        j                  |      dgk(  sJ y )NrL   r   r]   )add_noder   r!   rZ   r   s      r   test_singletonz#TestSpectralOrdering.test_singleton>  sn    G	

3##A&3%///	

3B
'	

3B
'##A&3%///rC   c                     t        j                  d      }t        j                  t         j                  t         j
                  |d       y )Nr   rc   r   )r   rd   r   r   r   r!   re   s     r   rf   z-TestSpectralOrdering.test_unrecognized_methodG  s.    MM!b&&(<(<a	RrC   r   c                 &   t        j                  d       t        j                         }|j	                  g dd       t        j
                  |d|      }t        |      t        |      k(  sJ ddht        |d d       t        |dd        fv sJ y )	Nr   )r$   r:   r$   r$   r9   r:   r:   r9   r$   rm   r]   )r^   r   r$   r9   )r   r   r   rY   add_weighted_edges_fromr!   setrV   r   r   orders       r   test_three_nodesz%TestSpectralOrdering.test_three_nodesK  s    G$HHJ	!!"CF!S$$QvfE5zSV###1v#eCRj/3uQRy>::::rC   c                     t        j                  d       t        j                         }|j	                  g d       t        j
                  ||      }t        |      t        |      k(  sJ ddht        |d d       t        |dd        fv sJ y )Nr   )r   r   r   )r:   r9   r:   r   r:   r9   r   r$   )r   r   r   MultiDiGraphr   r!   r   r   s       r   test_three_nodes_multigraphz0TestSpectralOrdering.test_three_nodes_multigraphT  s~    G$OO	!!"NO$$Qv65zSV###1v#eCRj/3uQRy>::::rC   c                 J   t        j                  d       t        t        d            }t        j
                  j                  |       t        j                         }t        j                  ||       t        j                  ||      }||t        t        |            fv sJ y )Nr   r   r   r   r   listr`   r,   r.   shuffler   rY   add_pathr!   reversedrV   r   pathr   r   s        r   r}   zTestSpectralOrdering.test_path]  sv    G$E"I
		$HHJ
At$$Qv6tHTN34444rC   c                 L   t        j                  d       t        t        d            }t        j
                  j                  |       t        j                         }t        j                  ||       t        j                  ||d      }||t        t        |            fv sJ y )Nr   r   r$   )r   r   r   r   s        r   r   z'TestSpectralOrdering.test_seed_argumentg  sx    G$E"I
		$HHJ
At$$QvA>tHTN34444rC   c           
      
   t        j                  d       t        j                         }t        j                  |t        ddd             t        j                  |t        ddd             t        j                  ||      }t        |      t        |      k(  sJ t        t        ddd            t        t        ddd	            t        t        ddd            t        t        d
dd	            g}|d d |v sJ |dd  |v sJ y )Nr   r   r   r:   r$   r   rt   r   rn   r   r   )	r   r   r   rY   r   r`   r!   r   r   )rV   r   r   r   seqss        r   ra   z&TestSpectralOrdering.test_disconnectedq  s    G$HHJ
AuQA'
AuQA'$$Qv65zSV###q"a!q"b!"q"a!q"b!"	
 RayD   QRyD   rC   )r)   expected_orderF)
r$   r:   r   r9   r   r   rp   r   r   rt   )
rt   r   r   rp   r   r   r9   r   r:   r$   T)
r$   r:   r9   r   r   r   r   rp   r   rt   )
rt   r   rp   r   r   r   r   r9   r:   r$   c                 d   t        j                  d       t        t        d            }t	        j
                         }t	        j                  ||d       |j                  |d   |d   d       t	        j                  |      j                         }t	        j                  |||      }||v sJ y )	Nr   r   r   r]   r   r   r$   )r)   r   )r   r   r   r`   r   rY   r   rZ   r+   todenser!   )rV   r)   r   r   r   r   rJ   r   s           r   r   zTestSpectralOrdering.test_cycle  s     	G$E"IHHJ
AtA&	

48T!WQ
/"**,$$Q:fM&&&rC   N)r   r   r   r   rY   rS   rq   r   _graphsr   r   r   r   r   rf   r   r   r   r}   r   ra   r   r   rC   r   r   r   6  s   xxR]]BOODG[[Wg.A /A [[Wg.0 /0S [[Xw/; 0; [[Xw/; 0; [[Xw/5 05 [[Xw/5 05 [[Xw/! 0!  [[(35STU24RST	
 [[Xw/' 0'rC   r   )mathr   r   r   r,   networkxr   r   r   r   r"   r7   rB   rO   rQ   r   r   rC   r   <module>r      s^     V! 
>=58	
	1g gT\' \'rC   