
    Vh7!                        d dl Z d dlZd dlZd dlmZ d dlmZ dZej                  ej                  ej                  ej                  ej                  gZd Zd Zd Zej$                  j&                  d        Zd	 Zd
 Zd Zd Zd ZddZd Zd Zd Zej$                  j&                  d        Zd Zd Z d Z!d Z"d Z#d Z$y)    N)flow)_is_separating_set   c                     t        j                  t        j                  ddg      d      } t        j                  | d      }|j	                         D ci c]  \  }}||
 }}}|d   |d   f|d   |d   f|d   |d	   f|d
   |d   ffD ]F  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |dz   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | j                  |dz   |dz          I | S c c}}w )N   labelslabel_attributer   r      r   r   r   r   r      r   r   r   r   r   r   r   r   r         r      r      
         nxconvert_node_labels_to_integers
grid_graphget_node_attributesitemsorderpetersen_graphdisjoint_unionadd_edgecomplete_graphremove_node)Grlabelskvr   nodesnew_nodePKnbrsnbrs              d/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/connectivity/tests/test_kcutsets.pygraph_example_1r3      s   
**
q!fx	A $$Q1G&}}/tq!ad/F/ 
(	(	(	(	 0 779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+	

8b=(Q,/506 H; 0s   Gc                     t        j                  t        j                  ddg      d      } t        j                  | d      }|j	                         D ci c]  \  }}||
 }}}|d   |d   f|d   |d   ffD ]F  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d	          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |d
z   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | j                  |dz   |dz          I |d   |d   f|d   |d   ffD ]f  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d	          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |d
z   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | |dz      }| j                  |dz          |D ]  }
| j                  |dz   |
        i | S c c}}w )Nr   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/   r0   r1   nbrs2s               r2   torrents_and_ferraro_graphr9   >   s2   
**
q!fx	A $$Q1G&}}/tq!ad/F/&>6&>2VF^VF^4TU 0779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+ 	


8b=(Q,//02 &>6&>2VF^VF^4TU +779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+(Q,	hl# 	+CJJx"}c*	+/+2 Hi 0s   Mc           	         t        j                  |       D ]  }t        |      dk  r| j                  |      }t        j                  |      }t        j
                  |      }t        j                  |t              D ]>  }|t        |      k(  sJ t        j                  t        j                  | |g             s>J   y )Nr   )r   connected_componentslensubgraphnode_connectivityall_node_cuts	itertoolsisliceMAX_CUTSETS_TO_TESTis_connectedrestricted_view)r(   ccGc	node_connall_cutscuts         r2   _check_separating_setsrJ   {   s    %%a( 	Gr7Q;ZZ^((,	##B'##H.AB 	GCC(((r'9'9!S"'EFFF	G	G    c                  .    t               } t        |        y N)r9   rJ   r(   s    r2   test_torrents_and_ferraro_graphrO      s    "$A1rK   c                  .    t               } t        |        y rM   )r3   rJ   rN   s    r2   test_example_1rQ      s    A1rK   c                  J    t        j                  ddd      } t        |        y )Nd   g?*   seed)r   gnp_random_graphrJ   rN   s    r2   test_random_gnprX      s    
C2.A1rK   c                  P    ddg} t        j                  | d      }t        |       y )N)   P   g?)r[      g333333?rT   rU   )r   random_shell_graphrJ   )constructorr(   s     r2   
test_shellr_      s&     .1K
k3A1rK   c                      t        j                  ddd      } t        j                  t        j                  |             }|j	                  t        j
                  |             t        |       y )NrS   r   H   )triesrV   )r   random_powerlaw_tree_sequenceGraphconfiguration_modelremove_edges_fromselfloop_edgesrJ   )deg_seqr(   s     r2   test_configurationri      sP    ..s!"EG
''01A))!,-1rK   c                  B    t        j                         } t        |        y rM   )r   karate_club_graphrJ   rN   s    r2   test_karaterl      s    
A1rK   c              #      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   rS   gq=
ףp?rT   rU   zTried z times: no suitable Graph.r   )r   fast_gnp_random_graphrC   is_biconnected	Exception)max_attemptsattemptsr(   msgs       r2   _generate_no_biconnectedrt      st     H
$$S&r:??1b&7&7&:HG<'xj(BCn$A s   A)A+c                      t               } t        d      D ]P  }t        |       }t        j                  |      D cg c]  }|h }}t        j
                  |      D ]  }||v rJ  R y c c}w )Nr   )rt   rangenextr   articulation_pointsr?   )Ggenir(   arx   rI   s         r2   test_articulation_pointsr|      ss    #%D1X .J,.,B,B1,EFqsFF##A& 	.C----	..Fs   
A*c                      t        j                  dd      } ddhddhddhdd	hg}t        j                  |       D ]  }||v rJ  y )
Nr   r   r   r   r   )r   r   r   )r   r   )r   r   r   )r   grid_2d_graphr?   )r(   solutionrI   s      r2   test_grid_2d_graphr      s^     	AA 66"2VV4DvvFVWH" hrK   c                      t        j                  ddd      } t        j                  |       }t        j                  t         j
                  t        |       y )NrS   g{Gz?rT   rU   )r   rn   r?   pytestraisesNetworkXErrorrw   )r(   cutss     r2   test_disconnected_graphr      s<    
  d4AAD
MM"""D$/rK   c            
         t        j                  dd      t        j                  d      g} | D ]  }t        j                  |      }t        D ]t  }t        j
                  ||      }t        j                  |t              D ]>  }|t        |      k(  sJ t        j                  t        j                  ||g             s>J  v  y )Nr   r   )	flow_func)r   r   cycle_graphr>   
flow_funcsr?   r@   rA   rB   r<   rC   rD   )graphsr(   rG   r   rH   rI   s         r2   test_alternative_flow_functionsr      s    q!$bnnQ&78F K((+	# 	KI''Y?H ''2EF K CH,,,??2+=+=ab+IJJJK	KKrK   c                  N    t        j                  d      } t        | h d      sJ y )Nr   >   r   r   r   r   )r   r&   r   rN   s    r2   %test_is_separating_set_complete_graphr      s"    
!Aa...rK   c                      dD ]=  } t        j                  |       }t        ||j                        }t	        ||h      r=J  y )N)r   r      key)r   
star_graphmaxdegreer   )rz   r(   max_degree_nodes      r2   test_is_separating_setr      sB     8MM!aQXX.!!o%67778rK   c                  R   t        j                         } t        t        t        j                  |             t
              }| j                  |      }ddhddhddhddhddhg}t        t        j                  |            }t        |      t        |      k(  sJ |D ]  }||v rJ  y )	Nr       !   r   r   r   r      )r   rk   r   listbiconnected_componentsr<   r=   r?   )r/   bccr(   r   r   rI   s         r2   test_non_repeated_cutsr      s     	A
d2,,Q/0c
:C	

3AR1b'Aq6Aq6B8<H  #$Dx=CI%%% hrK   c                      t        j                  d      } ddhddhddhddhddhg}t        t        j                  |             }t	        |      t	        |      k(  sJ |D ]  }||v rJ  y )Nr   r   r   r   r   r   )r   r   r   r?   r<   )r(   r   r   rI   s       r2   test_cycle_graphr      sz    
qAAAAAA7H  #$Dx=CI%%% hrK   c                      t        j                  d      } t        j                  |       dk(  sJ t        t        j                  |             g k(  sJ y )Nr   r   )r   r&   r>   r   r?   rN   s    r2   test_complete_graphr     sI    
!A"a'''  #$***rK   c                      t        j                  d      } | j                  ddg       h dh dg}t        t        j                  |             }t        |      t        |      k(  sJ |D ]  }||v rJ  y )Nr   r~   r   >   r   r   r   >   r   r   r   )r   r&   rf   r   r?   r<   )r(   expectedactualrI   s       r2   test_all_node_cuts_simple_caser     su    
!A()9%H"""1%&Fv;#h-''' hrK   )2   )%r@   r   networkxr   networkx.algorithmsr   )networkx.algorithms.connectivity.kcutsetsr   rB   boykov_kolmogorovdinitzedmonds_karppreflow_pushshortest_augmenting_pathr   r3   r9   rJ   markslowrO   rQ   rX   r_   ri   rl   rt   r|   r   r   r   r   r   r   r   r   r    rK   r2   <module>r      s       $ H  	KK!!
"J9z
G  



.0 	K 	K/
8
+rK   