o
    3ήc~	                     @   sX   d dl Z d dlZd dlmZ dd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )    N)maxcutc                 C   s<   | |}|t| jksJ t|t| |  ksJ d S )N)unionsetnodeslennumber_of_nodes)Gset1set2r    r   Z/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/approximation/tests/test_maxcut.py_is_valid_cut   s   
 r   c                 C   s:   t |D ]\}}tjj| ||h dd}||ksJ qd S )Nweightr   )	enumeratenx
algorithmscut_size)r   r   r	   inodecut_size_without_noder   r   r   _cut_is_locally_optimal   s   r   c                  C   s0   t d} tj| dd\}\}}t| || d S )N   )seed)r   complete_graphr   randomized_partitioningr   r   _r	   r
   r   r   r   test_random_partitioning   s   
r   c                  C   sT   t d} tj| dd\}\}}t| || t||  ks J t|dks(J d S )Nr      )pr   )r   r   r   r   r   r   r   r   r   r   r   #test_random_partitioning_all_to_one   s
   
r!   c                  C   s   t d} td | jddD ]\}}}tdddd |d< qttjt| 	 dd	}t
j| |ddd
\}\}}t| || t| || d S )Nr   Tdataid   r   
   r   kr   r   )r   r   randomr   edges	randranger   samplesortedr   r   one_exchanger   r   r   uvwinitial_cutr   r	   r
   r   r   r   test_one_exchange_basic$   s   

r4   c                  C   s   t  } | jdddd | jdddd | jdddd | jdddd | jdddd tj| ddd\}\}}t| || t| || |d	ksJJ d S )
Nr         r      r   r   r(      )r   Graphadd_edger   r.   r   r   )r   r   r	   r
   r   r   r   test_one_exchange_optimal3   s   r;   c                  C   s   t d} td | jddD ]\}}}dt  |d< qttjt|  dd}t	j
| |dd\}\}}t| || t| || t|t| jksWt|t| jksYJ d S d S )Nr   Tr"   r   r&   r   )r   r   r)   r   r*   r   r,   r-   r   r   r.   r   r   r   r/   r   r   r   test_negative_weightsD   s   

0r=   )r)   networkxr   !networkx.algorithms.approximationr   r   r   r   r!   r4   r;   r=   r   r   r   r   <module>   s    	