§
    fŠtj&  ã                   óV  — d dl Zd dlmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZmZmZ ddgZd„ Zd	„ Zd
„ Zd„ Zd„ Zej                             de¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zej                             de¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zej                             dg gg fd gd ggg fg d¢g d¢g d¢gg d¢fg d¢g d ¢g d¢gg d!¢fg¦  «        d"„ ¦   «         Z ej                             d#g gg fd ggg fd$ggd gfd d$gd%d ggd$d gfg d¢g d&¢g d'¢gg d(¢fg¦  «        d)„ ¦   «         Z!ej                             d#g gg fd ggg fd$ggd gfd d$gd%d ggd d$gfg d¢g d&¢g d'¢gg d*¢fg¦  «        d+„ ¦   «         Z"dS ),é    N)Úassert_array_equal)Ú	csr_arrayÚ	csc_arrayÚ
csr_matrix)Úmaximum_flow)Ú_add_reverse_edgesÚ_make_edge_pointersÚ_make_tailsÚedmonds_karpÚdinicc                  óæ   — t          j        t          ¦  «        5  t          j        ddgddgg¦  «        } t          | dd¦  «         t          | ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   é   r   ©Úmethod)ÚpytestÚraisesÚ	TypeErrorÚnpÚarrayr   ©Úgraphs    úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/sparse/csgraph/tests/test_flow.pyÚtest_raises_on_dense_inputr      s»   € Ý	Œ•yÑ	!Ô	!ð 9ð 9Ý”˜1˜a˜& 1 a &Ð)Ñ*Ô*ˆÝ�U˜A˜qÑ!Ô!Ð!Ý�U˜A˜q¨Ð8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   š?A&Á&A*Á-A*c                  óÜ   — t          j        t          ¦  «        5  t          ddgddgg¦  «        } t	          | dd¦  «         t	          | ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )r   r   r   r   r   r   s    r   Útest_raises_on_csc_inputr      s¹   € Ý	Œ•yÑ	!Ô	!ð 9ð 9Ý˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ�U˜A˜qÑ!Ô!Ð!Ý�U˜A˜q¨Ð8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9ó   š:A!Á!A%Á(A%c                  óô   — t          j        t          ¦  «        5  t          ddgddggt          j        ¬¦  «        } t          | dd¦  «         t          | ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   g      ø?©Údtyper   r   r   )r   r   Ú
ValueErrorr   r   Úfloat64r   r   s    r   Ú#test_raises_on_floating_point_inputr#      sÀ   € Ý	Œ•zÑ	"Ô	"ð 9ð 9Ý˜A˜s˜8 a¨ VÐ,µB´JÐ?Ñ?Ô?ˆÝ�U˜A˜qÑ!Ô!Ð!Ý�U˜A˜q¨Ð8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   šAA-Á-A1Á4A1c                  ó¶   — t          j        t          ¦  «        5  t          g d¢g d¢g¦  «        } t	          | dd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r   r   é   )r%   r   r   r   r   ©r   r   r!   r   r   r   s    r   Útest_raises_on_non_square_inputr'   "   s¢   € Ý	Œ•zÑ	"Ô	"ð "ð "Ý˜9˜9˜9 i i iÐ0Ñ1Ô1ˆÝ�U˜A˜qÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   š'AÁAÁAc                  óÜ   — t          j        t          ¦  «        5  t          ddgddgg¦  «        } t	          | dd¦  «         t	          | ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   r&   r   s    r   Útest_raises_when_source_is_sinkr)   (   s¹   € Ý	Œ•zÑ	"Ô	"ð 9ð 9Ý˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ�U˜A˜qÑ!Ô!Ð!Ý�U˜A˜q¨Ð8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9r   r   Úsource)éÿÿÿÿr%   é   c                 óº   — t          j        t          ¦  «        5  t          ddgddgg¦  «        }t	          || d|¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   r   r   r&   )r*   r   r   s      r   Ú(test_raises_when_source_is_out_of_boundsr/   /   s©   € õ 
Œ•zÑ	"Ô	"ð 6ð 6Ý˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ�U˜F A¨fÐ5Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6ó   š)AÁAÁAÚsinkc                 óº   — t          j        t          ¦  «        5  t          ddgddgg¦  «        }t	          |d| |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r.   r&   )r1   r   r   s      r   Ú&test_raises_when_sink_is_out_of_boundsr3   7   s©   € õ 
Œ•zÑ	"Ô	"ð 4ð 4Ý˜A˜q˜6 A q 6Ð*Ñ+Ô+ˆÝ�U˜A˜t¨FÐ3Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4r0   c                 óò   — t          ddgddgg¦  «        }t          |dd| ¬¦  «        }|j        dk    sJ ‚t          j        ddgddgg¦  «        }t          |j                             ¦   «         |¦  «         d S )Nr   é   r   r   éûÿÿÿ©r   r   Ú
flow_valuer   r   r   ÚflowÚtoarray©r   r   ÚresÚexpected_flows       r   Útest_simple_graphr>   ?   s‡   € õ ˜˜1�v  1˜vÐ&Ñ'Ô'€EÝ
�u˜a ¨6Ð
2Ñ
2Ô
2€CØŒ>˜QÒÐÐÐÝ”H˜q !˜f r¨1 gÐ.Ñ/Ô/€MÝ�s”x×'Ò'Ñ)Ô)¨=Ñ9Ô9Ð9Ð9Ð9ó    c                 ó  — t          ddgddgg¦  «        }t          t          |dd| ¬¦  «        j        t           ¦  «        sJ ‚t	          ddgddgg¦  «        }t          t          |dd| ¬¦  «        j        t          ¦  «        sJ ‚d S )Nr   r5   r   r   )r   Ú
isinstancer   r9   r   )r   r   s     r   Útest_return_typerB   J   s�   € å˜˜1�v  1˜vÐ&Ñ'Ô'€EÝ•l 5¨!¨Q°vÐ>Ñ>Ô>ÔCÅYÑOÔOÐOÐOÐOÝ˜˜A˜  A Ð'Ñ(Ô(€EÝ•l 5¨!¨Q°vÐ>Ñ>Ô>ÔCÅZÑPÔPÐPÐPÐPÐPÐPr?   c                 óþ   — t          g d¢g d¢g d¢g¦  «        }t          |dd| ¬¦  «        }|j        dk    sJ ‚t          j        g d¢g d	¢g d
¢g¦  «        }t          |j                             ¦   «         |¦  «         d S )N)r   r5   r   ©r   r   r,   ©r   r   r   r   r%   r   r,   ©r   r,   r   )éýÿÿÿr   r,   )r   rG   r   r7   r;   s       r   Útest_bottle_neck_graphrH   R   s“   € õ �y�y�y ) ) )¨Y¨Y¨YÐ7Ñ8Ô8€EÝ
�u˜a ¨6Ð
2Ñ
2Ô
2€CØŒ>˜QÒÐÐÐÝ”H˜i˜i˜i¨¨¨°Z°Z°ZÐ@ÑAÔA€MÝ�s”x×'Ò'Ñ)Ô)¨=Ñ9Ô9Ð9Ð9Ð9r?   c                 ó:  — t          g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |dd	| ¬
¦  «        }|j        dk    sJ ‚t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |j                             ¦   «         |¦  «         d S )N)r   é
   r   r   rJ   r   r   r   )r   r   rJ   r   r   r   r   r   )r   r   r   rJ   r   r   r   r   )r   r   r   r   r   r   r   rJ   )r   r   r   rJ   r   rJ   r   r   )r   r   r   r   r   r   rJ   r   )r   r   r   r   r   r   r   r   r   é   r   é   )éöÿÿÿr   rJ   r   r   r   r   r   )r   rM   r   rJ   r   r   r   r   )r   r   rM   r   r   r   r   rJ   )rM   r   r   r   r   rJ   r   r   )r   r   r   r   rM   r   rJ   r   )r   r   r   r   r   rM   r   rJ   )r   r   r   rM   r   r   rM   r   r7   r;   s       r   Útest_backwards_flowrN   ]   s  € õ Ð1Ð1Ð1Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø1Ð1Ð1Ø0Ð0Ð0Ø0Ð0Ð0Ø/Ð/Ð/ð1ñ 2ô 2€Eõ �u˜a ¨6Ð
2Ñ
2Ô
2€CØŒ>˜RÒÐÐÐÝ”HÐ8Ð8Ð8Ø9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9Ø:Ð:Ð:ð<ñ =ô =€Mõ �s”x×'Ò'Ñ)Ô)¨=Ñ9Ô9Ð9Ð9Ð9r?   c           	      ó"  — t          g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |dd| ¬	¦  «        }|j        d
k    sJ ‚t          j        g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |j                             ¦   «         |¦  «         d S )N)r   é   é   r   r   r   )r   r   rJ   é   r   r   )r   é   r   r   é   r   )r   r   é	   r   r   rL   )r   r   r   rK   r   rS   )r   r   r   r   r   r   r   r5   r   é   )r   rR   é   r   r   r   )éôÿÿÿr   r   rR   r   r   )éõÿÿÿr   r   r   rW   r   )r   rX   r   r   iùÿÿÿé   )r   r   rY   rK   r   rS   )r   r   r   iíÿÿÿéüÿÿÿr   r7   r;   s       r   Ú#test_example_from_clrs_chapter_26_1r\   x   së   € õ
 Ð+Ð+Ð+Ø+Ð+Ð+Ø*Ð*Ð*Ø*Ð*Ð*Ø)Ð)Ð)Ø)Ð)Ð)ð+ñ ,ô ,€Eõ �u˜a ¨6Ð
2Ñ
2Ô
2€CØŒ>˜RÒÐÐÐÝ”HÐ2Ð2Ð2Ø3Ð3Ð3Ø3Ð3Ð3Ø4Ð4Ð4Ø2Ð2Ð2Ø3Ð3Ð3ð5ñ 6ô 6€Mõ �s”x×'Ò'Ñ)Ô)¨=Ñ9Ô9Ð9Ð9Ð9r?   c                 ó
  — t          g d¢g d¢g d¢g d¢g¦  «        }t          |dd| ¬¦  «        }|j        dk    sJ ‚t          j        dt          j        ¬¦  «        }t          |j                             ¦   «         |¦  «         d S )	N)r   r5   r   r   )r   r   r   r   )r   r   rU   r,   r   r,   r   )rS   rS   r   )	r   r   r8   r   ÚzerosÚint32r   r9   r:   r;   s       r   Útest_disconnected_graphr`   Ž   s˜   € õ �|�|�|Ø#�|�|Ø#�|�|Ø#�|�|ð%ñ &ô &€Eõ �u˜a ¨6Ð
2Ñ
2Ô
2€CØŒ>˜QÒÐÐÐÝ”H˜V­2¬8Ð4Ñ4Ô4€MÝ�s”x×'Ò'Ñ)Ô)¨=Ñ9Ô9Ð9Ð9Ð9r?   c                 ó>  — d}t          j        d|¦  «        }t          j        t          t	          |¦  «        ¦  «        |dz
  gz   ¦  «        }t          j        |dz
  t           j        ¬¦  «        }t          |||f||f¬¦  «        }t          |d|dz
  | ¬¦  «        }|j	        dk    sJ ‚|| 
                    ¦   «         z
  }t          |j        j        |j        ¦  «         t          |j        j        |j        ¦  «         t          |j        j        |j        ¦  «         d S )Ni † r   r   )Úshaper   r   )r   Úaranger   ÚlistÚrangeÚonesr_   r   r   r8   Ú	transposer   r9   ÚdataÚindicesÚindptr)r   Únri   rj   rh   r   r<   r=   s           r   Ú"test_add_reverse_edges_large_graphrl   œ   s  € ð 	€AÝŒi˜˜1‰oŒo€GÝŒX•d�5 ™8œ8‘n”n¨¨A© wÑ.Ñ/Ô/€FÝŒ7�1�q‘5¥¤Ð)Ñ)Ô)€DÝ�t˜W fÐ-°a¸°VÐ<Ñ<Ô<€EÝ
�u˜a  Q¡¨vÐ
6Ñ
6Ô
6€CØŒ>˜QÒÐÐÐØ˜EŸOšOÑ-Ô-Ñ-€MÝ�s”x”} mÔ&8Ñ9Ô9Ð9Ý�s”xÔ'¨Ô)>Ñ?Ô?Ð?Ý�s”x”¨Ô(<Ñ=Ô=Ð=Ð=Ð=r?   za,b_data_expected)r   r   r%   rE   rF   )r   r%   r   r   r,   )rU   é   rK   )rS   r5   é   )rU   rm   rK   rS   r5   rn   r   r   c                 ó¾   — t          | t          j        t          | ¦  «        t          | ¦  «        f¬¦  «        } t	          | ¦  «        }t          |j        |¦  «         dS )zRTest that the reversal of the edges of the input graph works
    as expected.
    )r    rb   N)r   r   r_   Úlenr   r   rh   )ÚaÚb_data_expectedÚbs      r   Útest_add_reverse_edgesrt   ¬   sP   € õ 	�!�2œ8­C°©F¬FµC¸±F´FÐ+;Ð<Ñ<Ô<€AÝ˜1ÑÔ€AÝ�q”v˜Ñ/Ô/Ð/Ð/Ð/r?   z
a,expectedr   rJ   rD   )rS   r5   r   )r   r,   rS   r   r%   c                 óz   — t          | t          j        ¬¦  «        } t          | ¦  «        }t	          ||¦  «         d S ©Nr   )r   r   r_   r	   r   )rq   ÚexpectedÚrev_edge_ptrs      r   Útest_make_edge_pointersry   º   s;   € õ 	�!�2œ8Ð$Ñ$Ô$€AÝ& qÑ)Ô)€LÝ�| XÑ.Ô.Ð.Ð.Ð.r?   )r   r   r   r%   r%   c                 óz   — t          | t          j        ¬¦  «        } t          | ¦  «        }t	          ||¦  «         d S rv   )r   r   r_   r
   r   )rq   rw   Útailss      r   Útest_make_tailsr|   Ç   s9   € õ 	�!�2œ8Ð$Ñ$Ô$€AÝ˜‰NŒN€EÝ�u˜hÑ'Ô'Ð'Ð'Ð'r?   )#Únumpyr   Únumpy.testingr   r   Úscipy.sparser   r   r   Úscipy.sparse.csgraphr   Úscipy.sparse.csgraph._flowr   r	   r
   Úmethodsr   r   r#   r'   r)   ÚmarkÚparametrizer/   r3   r>   rB   rH   rN   r\   r`   rl   rt   ry   r|   © r?   r   ú<module>r†      s‰  ðØ Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø €€€à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ˜7Ð
#€ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð"ð "ð "ð9ð 9ð 9ð „×Ò˜ 7Ñ+Ô+Ø„×Ò˜ : : :Ñ.Ô.ð6ð 6ñ /Ô.ñ ,Ô+ð6ð „×Ò˜ 7Ñ+Ô+Ø„×Ò˜   Ñ,Ô,ð4ð 4ñ -Ô,ñ ,Ô+ð4ð „×Ò˜ 7Ñ+Ô+ð:ð :ñ ,Ô+ð:ð „×Ò˜ 7Ñ+Ô+ðQð Qñ ,Ô+ðQð „×Ò˜ 7Ñ+Ô+ð:ð :ñ ,Ô+ð:ð „×Ò˜ 7Ñ+Ô+ð:ð :ñ ,Ô+ð:ð4 „×Ò˜ 7Ñ+Ô+ð:ð :ñ ,Ô+ð:ð* „×Ò˜ 7Ñ+Ô+ð
:ð 
:ñ ,Ô+ð
:ð „×Ò˜ 7Ñ+Ô+ð>ð >ñ ,Ô+ð>ð „×ÒÐ,Ø€Tˆ2€JØ€cˆAˆ3€Z�ÐØ€i€i���˜I˜I˜IÐ&¨¨¨Ð8Ø€i€i���˜I˜I˜IÐ&Ð(@Ð(@Ð(@ÐAð	/Cñ Dô Dð
0ð 0ñDô Dð
0ð „×Ò˜Ø€Tˆ2€JØ€c€UˆB€KØ€c€UˆQˆC€LØˆ!€fˆr�1ˆgÐ˜˜A˜ÐØ€i€i���˜I˜I˜IÐ&¨¨¨Ð8ð(ñ ô ð/ð /ñô ð/ð „×Ò˜Ø€Tˆ2€JØ€c€UˆB€KØ€c€UˆQˆC€LØˆ!€fˆr�1ˆgÐ˜˜A˜ÐØ€i€i���˜I˜I˜IÐ&¨¨¨Ð8ð(ñ ô ð(ð (ñô ð(ð (ð (r?   