o
    ˷e 4                     @   sr   d dl mZ d dlZedZd dlZdZdd Zdd Z	d	d
 Z
dd Zdd ZG dd dZG dd dZdS )    )sqrtNnumpy)tracemin_pcgtracemin_lulanczoslobpcgc                  C   V   t d tdd} t tj tj| dd W d   dS 1 s$w   Y  dS z.Test that "tracemin_chol" raises an exception.scipy      tracemin_cholmethodN)pytestimportorskipnxbarbell_graphraisesNetworkXErroralgebraic_connectivityG r   h/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/linalg/tests/test_algebraic_connectivity.py)test_algebraic_connectivity_tracemin_chol   
   
"r   c                  C   r   r	   )r   r   r   r   r   r   fiedler_vectorr   r   r   r   !test_fiedler_vector_tracemin_chol   r   r   c                  C   r   r	   )r   r   r   r   r   r   spectral_orderingr   r   r   r   $test_spectral_ordering_tracemin_chol   r   r    c                  C   s   t d tdd} t| }ttjjd|j	d fdj
}t jtjdd tjjj||d	d
dd W d   dS 1 s@w   Y  dS )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Xr   r   r   $test_fiedler_vector_tracemin_unknown%   s   

 
"r4   c                 C   sr   t j|}|tjdddkrJ | | }t j|}|| tj|| ddks*J |tj|| ddks7J d S )Nr   Hz>abs)r)   r/   normr   approx)Alxr   ynyr   r   r   check_eigenvector1   s   r?   c                   @   s  e Zd Zejdedd Zejdedd Zejdedd Z	dd	 Z
ejded
d Zejdedd Zdd Zejdedd Zejdedd Zejdedd Zejdedd Zejdddejfddejffejdedd ZdS ) TestAlgebraicConnectivityr   c                 C   s8   t  }tjt jt j||d tjt jt j||d d S )Nr   )r   DiGraphr   r   NetworkXNotImplementedr   r   selfr   r   r   r   r   test_directed>   s
   z'TestAlgebraicConnectivity.test_directedc                 C   sp   t  }tjt jt j||d tjt jt j||d |dd tjt jt j||d tjt jt j||d d S )Nr   r   )r   Graphr   r   r   r   r   add_edgerC   r   r   r   test_null_and_singletonF   s   z1TestAlgebraicConnectivity.test_null_and_singletonc                 C   sz   t  }|td t |dksJ tjt jt j||d |j	dddd t |dks0J tjt jt j||d d S )N   r   r   r!   weight)
r   rF   add_nodes_fromranger   r   r   r   r   rG   rC   r   r   r   test_disconnectedO   s   z+TestAlgebraicConnectivity.test_disconnectedc                 C   sD   t d td}t jtjtj|dd t jtjtj|dd d S )Nr
   r   unknownr   )r   r   r   
path_graphr   r   r   r   rD   r   r   r   r   test_unrecognized_methodY   s   

z2TestAlgebraicConnectivity.test_unrecognized_methodc                 C   sn   t d t }|jdddd t|}tj|d|dt jddd	ks'J tj|d|d}t	|d| d S )
Nr
   r   r!   rJ   -q=r'   r   rI   r5   r6   )
r   r   r   rF   rG   r(   r   r9   r   r?   rD   r   r   r:   r<   r   r   r   test_two_nodes_   s   

z(TestAlgebraicConnectivity.test_two_nodesc                 C   s   t d t }|jdddd |jdddd |jdddd dtj|dd	 }tj|dd
|dt jdddks<J tj|dd
|d}t	|d| d S )Nr
   r   g    חA)spamr!   rW   rJ   rS   )rK   r'   r      r5   r6   )
r   r   r   
MultiGraphrG   r(   r   r9   r   r?   rU   r   r   r   test_two_nodes_multigraphk   s   
z3TestAlgebraicConnectivity.test_two_nodes_multigraphc                 C   sx   t d td}t|}dtdtd  }tj|ddd}|t j|ddks,J tj|ddd}t	||| d S )	Nr
      rI   rS   traceminrT   r5   r6   
r   r   r   rP   r(   r   r   r9   r   r?   )rD   r   r:   sigmaacr<   r   r   r   test_abbreviation_of_methody   s   


z5TestAlgebraicConnectivity.test_abbreviation_of_methodc                 C   sx   t d td}t|}dtdtd  }tj|d|d}|t j|ddks,J tj|d|d}t	||| d S Nr
   r]   rI   rS   rT   r5   r6   r_   rD   r   r   r:   r`   ra   r<   r   r   r   	test_path   s   


z#TestAlgebraicConnectivity.test_pathc                 C   sv   t d td}|ddg t|}d}tj|d|d}|t j|dd	ks+J tj|d|d}t	||| d S )
Nr
   r   )r   rI   )r   r!   g׋ʄ?rS   rT   r5   r6   )
r   r   r   rP   add_edges_fromr(   r   r9   r   r?   rd   r   r   r   !test_problematic_graph_issue_2381   s   


z;TestAlgebraicConnectivity.test_problematic_graph_issue_2381c                 C   sp   t d td}t|}dtd }tj|d|d}|t j|ddks(J tj|d|d}t	||| d S rc   
r   r   r   cycle_graphr(   r   r   r9   r   r?   rd   r   r   r   
test_cycle   s   


z$TestAlgebraicConnectivity.test_cyclec                 C   st   t d td}t|}dtd }tj|d|dd}|t j|ddks)J tj|d|dd}t	||| d S )	Nr
   r]   rI   rS   r!   )r'   r   seedr5   r6   rh   rd   r   r   r   test_seed_argument   s   


z,TestAlgebraicConnectivity.test_seed_argument)r&   r`   laplacian_fnFg'?TgG'91Ŵ?c           	   
   C   s   t d tg d}||}z$tj||d|dt j|ddks#J tj||d|d}t||| W d S  tjyN } z|j	dvrC W Y d }~d S d }~ww )Nr
   )Z)r!   
   )r!   )   )r!   ;   )rI      )rI   *   )rI   <   )   rZ   )rt   +   )rt   9   )r   r]   )r   ,   )r   :   )r      )r   8   )r   rv   )rZ   rn   )rZ      )      )r|   rz   )r|   rx   )r]   rq   )r]       )	      )r   5   )r   rp   )rn      )      )r   r   )r   rs   )rq      )ry   r}   )ry      )r}      )r      )r   1   )r      )r   2   )      )r      )r   6   )r      )r   7   )r   r   )r   ro   )r   r   )r   rr   )   r{   )r   !   )r   rv   )   r~   )r   "   )r   rx   )r   r   )r   #   )r   ru   )r   $   )r   rw   )r   3   )r   rp   )r   4   )r   rs   )   r   )r   r   )r   rz   )   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   )ro   r   )rr   r   )ru   r   )rw   r   )r   r   )r   r   )r   r   )r   r   )r   r   rS   r%   r5   r6   ))zCholesky solver unavailable.)zLU solver unavailable.)
r   r   r   rF   r   r9   r   r?   r   args)	rD   r&   r`   rm   r   r   r:   r<   errr   r   r   test_buckminsterfullerene   s&   
	^
z3TestAlgebraicConnectivity.test_buckminsterfullereneN)__name__
__module____qualname__r   markparametrizemethodsrE   rH   rN   rR   rV   r\   rb   re   rg   rj   rl   r   r(   normalized_laplacian_matrixr   r   r   r   r   r@   =   s:    


	











r@   c                   @   s
  e Zd ZejejejejfZe	j
dedd Ze	j
dedd Zdd Ze	j
ded	d
 Ze	j
dedd Ze	j
dedd Ze	j
dedd Ze	j
dedd Ze	j
ddg dg dgfdg dg dgffe	j
dedd ZdS )TestSpectralOrderinggraphc                 C   s   | }t tjtj| d S )N)r   r   r   r   r   rD   r   r   r   r   r   test_nullgraph*  s   z#TestSpectralOrdering.test_nullgraphc                 C   s\   | }| d t|dgksJ |jdddd |jdddd t|dgks,J d S )Nr<   r   rJ   )add_noder   r   rG   r   r   r   r   test_singleton/  s   
z#TestSpectralOrdering.test_singletonc                 C   s$   t d}tjt jt j|dd d S )Nr   rO   r   )r   rP   r   r   r   r   rQ   r   r   r   rR   8  s   
z-TestSpectralOrdering.test_unrecognized_methodr   c                 C   sx   t d t }|jg ddd tj|d|d}t|t|ks$J ddht|d d t|dd  fv s:J d S )	Nr
   )r!   rI   r!   r!   rt   rI   rI   rt   r!   rW   rJ   )rK   r   r!   rt   )r   r   r   rF   add_weighted_edges_fromr   setrD   r   r   orderr   r   r   test_three_nodes<  s   
0z%TestSpectralOrdering.test_three_nodesc                 C   sr   t d t }|g d tj||d}t|t|ks!J ddht|d d t|dd  fv s7J d S )Nr
   )r   r   r   )rI   rt   rI   r   rI   rt   r   r!   )r   r   r   MultiDiGraphr   r   r   r   r   r   r   test_three_nodes_multigraphE  s   
0z0TestSpectralOrdering.test_three_nodes_multigraphc                 C   s`   t d ttd}tj| t }t	|| tj
||d}||tt|fv s.J d S )Nr
   rn   r   r   r   listrM   r)   r+   shuffler   rF   add_pathr   reversedrD   r   pathr   r   r   r   r   re   N  s   
zTestSpectralOrdering.test_pathc                 C   sb   t d ttd}tj| t }t	|| tj
||dd}||tt|fv s/J d S )Nr
   rn   r!   )r   rk   r   r   r   r   r   rl   X  s   
z'TestSpectralOrdering.test_seed_argumentc                 C   s   t d t }t|tddd t|tddd tj||d}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 sVJ |dd  |v s`J d S )Nr
   r   rn   rI   r!   r   r]   r   rX   r   r   )	r   r   r   rF   r   rM   r   r   r   )rD   r   r   r   seqsr   r   r   rN   b  s   
z&TestSpectralOrdering.test_disconnected)r&   expected_orderF)
r!   rI   r   rt   r   r   rZ   r   r|   r]   )
r]   r|   r   rZ   r   r   rt   r   rI   r!   T)
r!   rI   rt   r   r   r   r   rZ   r|   r]   )
r]   r|   rZ   r   r   r   r   rt   rI   r!   c                 C   st   t d ttd}t }tj||dd |j|d |d dd t|	 }tj
|||d}||v s8J d S )	Nr
   rn   r   rJ   r   r   r!   )r&   r   )r   r   r   rM   r   rF   r   rG   r(   todenser   )rD   r&   r   r   r   r   r:   r   r   r   r   rj   s  s   
	zTestSpectralOrdering.test_cycleN)r   r   r   r   rF   rA   r[   r   _graphsr   r   r   r   r   rR   r   r   r   re   rl   rN   rj   r   r   r   r   r   '  s2    




	
	
r   )mathr   r   r   r)   networkxr   r   r   r   r    r4   r?   r@   r   r   r   r   r   <module>   s    
 k