
    Vht(                     4   d dl Z d dlZd dlmZ d dlmZmZ d dlm	Z	 ej                  ej                  ej                  ej                  ej                  gZddZd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%y)    N)flow)minimum_st_edge_cutminimum_st_node_cutarbitrary_elementc              #      K   d}	 t        j                  ddd      }t        j                  |      rt        j                  |      sd}| n|| k\  rd| d}t	        |      |dz  }ew)	Nr   d   gq=
ףp?*   seedzTried z times: no suitable Graph.   )nxfast_gnp_random_graphis_connectedis_biconnected	Exception)max_attemptsattemptsGmsgs       `/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/connectivity/tests/test_cuts.py_generate_no_biconnectedr      st     H
$$S&r:??1b&7&7&:HG<'xj(BCn$A s   A)A+c                  D   t               } t        D ]  }d|j                   }t        d      D ]n  }t	        |       }t        j                  ||      }t        |      dk(  sJ |       |j                         t        t        j                  |            v riJ |         y )NAssertion failed in function: r   	flow_func)r   
flow_funcs__name__rangenextr   minimum_node_cutlenpopsetarticulation_points)Ggenr   errmsgir   cuts         r   test_articulation_pointsr*   "   s    #%D G	1)2D2D1EFq 	GAT
A%%a9=Cs8q=(&(=779B$:$:1$= >>FF>		GG    c            	         t        j                         } | j                  g d       t        D ]O  }d|i}d|j                   }dt        t        j                  | ddfi |      k(  sJ |       t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      rJ |       dd	ht        | ddfi |k(  sJ |       dd	ht        j                  | ddfi |k(  sJ |       t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      sKJ |        y )
N)r      )r      )r      )r      )r.   r/   )r.      r/   r0   )r/   r2   )r0   r2   )r0      )r1   r4   )r2      )r2   	   )r4   r5   )r4   
   )r5      )r6   r7   )r6   r8   )r7   r8   r   r   r/   r   r8   r.   r2   r4   )r   Graphadd_edges_fromr   r   r"   minimum_edge_cutcopyremove_edges_fromr   r   r!   remove_nodes_fromr   r   kwargsr'   edge_cutHnode_cuts          r   test_brandes_erlebach_bookrD   -   s    	
A	
.   .	y)1)2D2D1EFC++Aq"??@@H&H@&&q3F3CM!)6)!FFH	H%??1%-v-%1v,Q2@@@H&H@1v,,Q2@@@H&H@&&q3F3CM!)6)!FFH	H%??1%-v-%%.r+   c                     t        j                  t        j                  d      t        j                  d            } | j                  d       t	        dd      D ]  }| j                  d|        t        j                  | t        j                  d            } | j                  | j                         dz
         t	        dd      D ]  }| j                  d|        t        D ]  }d|i}d|j                   }t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      rJ |       t        j                  | fi |}dh|k(  sJ |       | j                         }|j                  |       t        j                  |      sJ |        y )	Nr0   r4   r   r   r7   r   r   r/   )r   disjoint_unioncomplete_graphremove_noder   add_edgeorderr   r   r;   r"   r<   r=   r   r!   r>   )r   r(   r   r@   r'   rA   rB   rC   s           r   test_white_harary_paperrK   ]   s   
 	"++A.0A0A!0DEAMM!1a[ 	

1a
!R..q12AMM!'')a- 1b\ 	

1a .	y)1)2D2D1EF&&q3F3CM!)6)!FFH	H%??1%-v-%&&q3F3sh&&FFH	H%??1%-v-%.r+   c                     t        j                         } t        D ]  }d|i}d|j                   }t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      rJ |       t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      sJ |        y )Nr   r   r/   )r   petersen_graphr   r   r;   r"   r<   r=   r   r!   r>   r?   s          r   test_petersen_cutsetrN   {   s    
A .	y)1)2D2D1EF&&q3F3CM!)6)!FFH	H%??1%-v-%&&q3F3CM!)6)!FFH	H%??1%-v-%.r+   c                     t        j                         } t        D ]  }d|i}d|j                   }t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      rJ |       t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      sJ |        y )Nr   r   r0   )r   octahedral_graphr   r   r;   r"   r<   r=   r   r!   r>   r?   s          r   test_octahedral_cutsetrQ      s    
A .	y)1)2D2D1EF&&q3F3CM!)6)!FFH	H%??1%-v-%&&q3F3CM!)6)!FFH	H%??1%-v-%.r+   c                     t        j                         } t        D ]  }d|i}d|j                   }t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      rJ |       t        j                  | fi |}dt        |      k(  sJ |       | j                         }|j                  |       t        j                  |      sJ |        y )Nr   r   r1   )r   icosahedral_graphr   r   r;   r"   r<   r=   r   r!   r>   r?   s          r   test_icosahedral_cutsetrT      s    
A .	y)1)2D2D1EF&&q3F3CM!)6)!FFH	H%??1%-v-%&&q3F3CM!)6)!FFH	H%??1%-v-%.r+   c                      t        j                         } | j                  ddg       t        D ]7  }t	        j
                  t         j                  t         j                  | |       9 y )Nr-   r3   r   )r   r9   r:   r   pytestraisesNetworkXErrorr!   r   r   s     r   test_node_cutset_exceptionrZ      sO    

Aff%& U	b&&(;(;Q)TUr+   c                  (   t         D ]  } d| j                   }t        d      D ]  }t        j                  ddd      }t        j
                  |      sLt        t        j                  |            }t        t        |            |j                  fd|D               t        j                  ||       }t        j                  |      t        |      k(  sJ |       |j                  |       t        j
                  |      sJ |        
 y )	Nr   r/   2         ?r
   r   c              3   8   K   | ]  }t        |      f  y wNr   .0cstarts     r   	<genexpr>z1test_node_cutset_random_graphs.<locals>.<genexpr>         L1%):1)=!> L   r   )r   r   r   r   r   r   iterconnected_componentsr   r    r:   r!   node_connectivityr"   r>   r   r'   r(   r   ccscutsetrc   s         @r   test_node_cutset_random_graphsrm           2	1)2D2D1EFq 		2A((T;A??1%222156)$s)4   L LL((i@F''*c&k9A6A9'q)161)		22r+   c                  (   t         D ]  } d| j                   }t        d      D ]  }t        j                  ddd      }t        j
                  |      sLt        t        j                  |            }t        t        |            |j                  fd|D               t        j                  ||       }t        j                  |      t        |      k(  sJ |       |j                  |       t        j
                  |      sJ |        
 y )	Nr   r/   r\   r]   r
   r   c              3   8   K   | ]  }t        |      f  y wr_   r   r`   s     r   rd   z1test_edge_cutset_random_graphs.<locals>.<genexpr>   re   rf   r   )r   r   r   r   r   r   rg   rh   r   r    r:   r;   edge_connectivityr"   r=   rj   s         @r   test_edge_cutset_random_graphsrr      rn   r+   c                  P   t        j                         } t        j                         }t         j                  t         j                  fD ][  }t
        D ]P  }t        j                  t         j                  || |       t        j                  t         j                  |||       R ] y )Nr   )	r   r9   DiGraphr!   r;   r   rV   rW   NetworkXPointlessConcept)r   Dinterface_funcr   s       r   test_empty_graphsrx      s    

A


A..0C0CD # 	IMM++^Q) MM++^Q)		r+   c            
      ~    t        j                  d      } t        D ]  }dt        t	        | dd|            k(  rJ  y )Nr1   r0   r   r   )r   rG   r   r"   r   rY   s     r   test_unboundedrz      sB    
!A K	C+Aq!yIJJJJKr+   c            
          t        j                  d      } t         j                  t         j                  fD ]6  }t        D ]+  }t        j                  t         j                  || dd|       - 8 y )Nr0   r7   r   r   r   
path_graphr;   r!   r   rV   rW   rX   r   rw   r   s      r   test_missing_sourcer      s^    
aA..0C0CD # 	IMM  .!Ri	r+   c            
          t        j                  d      } t         j                  t         j                  fD ]6  }t        D ]+  }t        j                  t         j                  || dd|       - 8 y )Nr0   r   r7   r   r|   r~   s      r   test_missing_targetr      s^    
aA..0C0CD # 	IMM  .!Qi	r+   c                  :   t        j                         } t        j                  | g d       t        j                  | ddg       t         j                  t         j                  fD ]4  }t
        D ])  }t        j                  t         j                  || |       + 6 y N)r   r.   r/   r0   r1   r   )	r   rt   add_pathr;   r!   r   rV   rW   rX   r~   s      r   test_not_weakly_connectedr      sx    


AKK9KKAq6..0C0CD T# 	TIMM"**NAS	TTr+   c                  :   t        j                         } t        j                  | g d       t        j                  | ddg       t         j                  t         j                  fD ]4  }t
        D ])  }t        j                  t         j                  || |       + 6 y r   )	r   r9   r   r;   r!   r   rV   rW   rX   r~   s      r   test_not_connectedr     sx    

AKK9KKAq6..0C0CD T# 	TIMM"**NAS	TTr+   c            	          t        j                  d      } t         j                  t         j                  fD ]%  }t        D ]  }dt         || |            k(  rJ  ' y Nr1   r0   r   )r   rG   r;   r!   r   r"   r~   s      r   tests_min_cut_completer     s_    
!A..0C0CD D# 	DIN1	BCCCC	DDr+   c            	          t        j                  d      } | j                         } t         j                  t         j                  fD ]%  }t
        D ]  }dt         || |            k(  rJ  ' y r   )r   rG   to_directedr;   r!   r   r"   r~   s      r   tests_min_cut_complete_directedr     sj    
!A	A..0C0CD D# 	DIN1	BCCCC	DDr+   c                      t        j                         } | j                  g d       | j                  g d       t	        | dd      }|t               k(  sJ y )N)r   r   r.   r/   r4   r5   r8      ))r4   r8   )r   r8   )r   r   )r   r5   )r   r   r4   r8   )r   r9   add_nodes_fromr:   r   r$   )r   nodelists     r   tests_minimum_st_node_cutr     sI    

A/0AB"1a,Hsur+   c                      t        j                  d      } t        j                  t         j                  t
        | dd|        y )Nr1   r   r/   )	auxiliary)r   rG   rV   rW   rX   r   )r   s    r   test_invalid_auxiliaryr   '  s/    
!A
MM"""$7AqANr+   c                      t        j                  d      } t         j                  t         j                  fD ])  }t	        j
                  t         j                  || d       + y )Nr1   r   )sr   rG   r!   r;   rV   rW   rX   r   rw   s     r   test_interface_only_sourcer   ,  L    
!A..0C0CD @b&&Q?@r+   c                      t        j                  d      } t         j                  t         j                  fD ])  }t	        j
                  t         j                  || d       + y )Nr1   r/   )tr   r   s     r   test_interface_only_targetr   2  r   r+   )r\   )&rV   networkxr   networkx.algorithmsr    networkx.algorithms.connectivityr   r   networkx.utilsr   boykov_kolmogorovdinitzedmonds_karppreflow_pushshortest_augmenting_pathr   r   r*   rD   rK   rN   rQ   rT   rZ   rm   rr   rx   rz   r   r   r   r   r   r   r   r   r   r    r+   r   <module>r      s      $ U , 	KK!!
G-.`.<.&.&.&U22
KTTDDO
@@r+   