§
    ¡éUg¨.  ã                   ó  — d dl mZ d dlZd dlmZmZ d dlZd dlm	Z	m
Z
mZ d dlmZmZ d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢g d¢g d¢gg d¢g d¢g d¢gg d¢g d¢g d¢gg d¢g d¢gg d¢g d¢gdd gdd gd d ggg¦  «        d!„ ¦   «         Zd"„ Zd#„ Zd$„ Z  ed%dgg d&¢g d'¢g d(¢gg d)¢fg d*¢g d+¢g d,¢gg d-¢fg d.¢g d/¢g d0¢gg d1¢fg d2¢g d3¢g d4¢gg d5¢fd6 e!d7¦  «         e!d7¦  «        g e!d7¦  «         e!d7¦  «        dg e!d7¦  «        d8 e!d7¦  «        ggg d1¢fg¦  «        Z"ej                             d9e"¦  «        d:„ ¦   «         Z#dS );é    )ÚproductN)Úassert_array_equalÚassert_equal)Ú
csr_matrixÚ
coo_matrixÚdiags)Úmaximum_bipartite_matchingÚ"min_weight_full_bipartite_matchingc                  ó¼   — t          j        t          ¦  «        5  t          j        ddgddgg¦  «        } t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   é   )ÚpytestÚraisesÚ	TypeErrorÚnpÚarrayr	   )Úgraphs    úg/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/sparse/csgraph/tests/test_matching.pyÚ5test_maximum_bipartite_matching_raises_on_dense_inputr      s    € Ý	Œ•yÑ	!Ô	!ð *ð *Ý”˜1˜a˜& 1 a &Ð)Ñ*Ô*ˆÝ" 5Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s   š*AÁAÁAc                  óÐ   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          j        g ¦  «        }t	          ||¦  «         t	          ||¦  «         d S )N©r   r   Úrow©Ú	perm_typeÚcolumn©r   r	   r   r   r   ©r   ÚxÚyÚexpected_matchings       r   Ú+test_maximum_bipartite_matching_empty_graphr       si   € Ý�vÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝœ ™œÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,ó    c                  óô   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g ¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )N©é   r   r   r   r   éÿÿÿÿ©r   r	   r   r   r   ©r   r   r   s      r   Ú4test_maximum_bipartite_matching_empty_left_partitionr(      so   € Ý�vÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x ‘|”| QÑ'Ô'Ð'Ý•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ð-Ð-r!   c                  óô   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g d¢¦  «        |¦  «         t          t          j        g ¦  «        |¦  «         d S )N©r   é   r   r   r   )r%   r%   r%   r&   r'   s      r   Ú5test_maximum_bipartite_matching_empty_right_partitionr,   $   so   € Ý�vÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x   Ñ-Ô-¨qÑ1Ô1Ð1Ý•r”x ‘|”| QÑ'Ô'Ð'Ð'Ð'r!   c                  óø   — t          d¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        ddg¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )N©r$   r$   r   r   r   r%   r&   r'   s      r   Ú3test_maximum_bipartite_matching_graph_with_no_edgesr/   ,   su   € Ý�vÑÔ€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝ•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ý•r”x  R Ñ)Ô)¨1Ñ-Ô-Ð-Ð-Ð-r!   c                  óà   — t          ddgddgg¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          j        ddg¦  «        }t	          ||¦  «         t	          ||¦  «         d S )Nr   r   r   r   r   r   r   s       r   Ú>test_maximum_bipartite_matching_graph_that_causes_augmentationr1   4   s~   € õ ˜˜A˜  A Ð'Ñ(Ô(€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝœ ! Q Ñ(Ô(ÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,r!   c                  ó
  — t          ddgddgddgg¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        g d¢¦  «        |¦  «         t          t          j        ddg¦  «        |¦  «         d S )Nr   r   r   r   r   ©r   r%   r   r$   r&   r'   s      r   ÚAtest_maximum_bipartite_matching_graph_with_more_rows_than_columnsr4   ?   sˆ   € Ý˜˜A˜  A ¨¨A¨Ð/Ñ0Ô0€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝ•r”x 
 
 
Ñ+Ô+¨QÑ/Ô/Ð/Ý•r”x  A Ñ'Ô'¨Ñ+Ô+Ð+Ð+Ð+r!   c                  ó  — t          g d¢g d¢g¦  «        } t          | d¬¦  «        }t          | d¬¦  «        }t          t          j        ddg¦  «        |¦  «         t          t          j        g d¢¦  «        |¦  «         d S )	N)r   r   r   ©r   r   r   r   r   r   r   r$   r3   r&   r'   s      r   ÚAtest_maximum_bipartite_matching_graph_with_more_columns_than_rowsr7   G   s‚   € Ý˜	˜	˜	 9 9 9Ð-Ñ.Ô.€EÝ" 5°HÐ=Ñ=Ô=€AÝ" 5°EÐ:Ñ:Ô:€AÝ•r”x  A Ñ'Ô'¨Ñ+Ô+Ð+Ý•r”x 
 
 
Ñ+Ô+¨QÑ/Ô/Ð/Ð/Ð/r!   c                  óö   — ddg} ddg}g d¢}t          | ||fd¬¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }t          j        ddg¦  «        }t	          ||¦  «         t	          ||¦  «         d S )	Nr   r   )r   r   r$   r.   ©Úshaper   r   r   r   )ÚdataÚindicesÚindptrr   r   r   r   s          r   Ú=test_maximum_bipartite_matching_explicit_zeros_count_as_edgesr>   O   s–   € Øˆqˆ6€DØ�!ˆf€GØˆYˆY€FÝ˜˜g vÐ.°fÐ=Ñ=Ô=€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AÝœ ! Q Ñ(Ô(ÐÝÐ(¨!Ñ,Ô,Ð,ÝÐ(¨!Ñ,Ô,Ð,Ð,Ð,r!   c                  ó0  — t          j        dt          ¬¦  «        } g d¢}g d¢}t          | ||fd¬¦  «        }t	          |d¬¦  «        }t	          |d	¬¦  «        }|d
k                         ¦   «         dk    sJ ‚|d
k                         ¦   «         dk    sJ ‚t          t          |j        d         ¦  «        |¦  «        D ]\  }}|d
k    r|||f         sJ ‚Œt          |t          |j        d         ¦  «        ¦  «        D ]\  }}|d
k    r|||f         sJ ‚Œd S )Né2   ©Údtype)2é   é   é   é   é   é   rF   r+   é   é
   rH   é   rC   rD   é   rH   rL   é   é   rF   r+   é   r+   rL   rM   rC   rD   rE   rF   rG   rH   rF   r+   rI   rJ   rH   rK   rC   rD   rL   rH   rL   rM   rN   rF   r+   rO   r+   rL   rM   )r   rH   é   rJ   rJ   rO   rN   rF   rF   rG   é   é   é    é#   rT   é(   é-   é/   rW   é0   r@   )rN   rQ   r9   r   r   r   r%   rL   r   r   )	r   ÚonesÚintr   r	   ÚsumÚzipÚranger:   )r;   r<   r=   r   r   r   ÚuÚvs           r   Ú5test_maximum_bipartite_matching_feasibility_of_resultr`   [   sN  € åŒ7�2�SÐ!Ñ!Ô!€DðJð Jð J€Gðð ð €Få˜˜g vÐ.°hÐ?Ñ?Ô?€EÝ" 5°EÐ:Ñ:Ô:€AÝ" 5°HÐ=Ñ=Ô=€AØ�ŠG�=Š=‰?Œ?˜bÒ Ð Ð Ð Ø�ŠG�=Š=‰?Œ?˜bÒ Ð Ð Ð å•E˜%œ+ aœ.Ñ)Ô)¨1Ñ-Ô-ð ð ‰ˆˆ1Ø�Š7ˆ7Ø˜˜A˜”;ÐÐÐøÝ�A•u˜Uœ[¨œ^Ñ,Ô,Ñ-Ô-ð ð ‰ˆˆ1Ø�Š7ˆ7Ø˜˜A˜”;ÐÐÐøðð r!   c                  óì  — t           j                             d¦  «         t          t          j        d¦  «        dd¬¦  «        } t           j                             d¦  «        }t           j                             d¦  «        }t          j        d¦  «        }|}t          j        dt          ¬¦  «        }t          |||ff¦  «         	                    ¦   «         }|}t          j        d¦  «        }t          j        dt          ¬¦  «        }	t          |	||ff¦  «         	                    ¦   «         }
|| z  |
z  }t          |d¬¦  «        }t          j        d¦  «        }|}t          j        dt          ¬¦  «        }t          |||ff¦  «         	                    ¦   «         }||z  }t          |d	¬¦  «        }|}t          j        d¦  «        }t          j        dt          ¬¦  «        }	t          |	||ff¦  «         	                    ¦   «         }
||
z  }t          t          |                     ¦   «         dk    ¦  «        d
¦  «         t          t          |                     ¦   «         dk    ¦  «        d
¦  «         d S )Né*   rQ   r   Úcsr)ÚoffsetsÚformatrA   r   r   r   F)r   ÚrandomÚseedr   rY   ÚpermutationÚarangerZ   r   Útocsrr	   r   ÚanyÚdiagonal)ÚAÚ	rand_permÚ
rand_perm2ÚRrowÚRcolÚRdataÚRmatÚCrowÚCcolÚCdataÚCmatÚBÚpermÚC1Úperm2ÚC2s                   r   ÚFtest_matching_large_random_graph_with_one_edge_incident_to_each_vertexr}   q   s  € Ý„I‡N‚N�2ÑÔÐÝ�bŒg�b‰kŒk 1¨UÐ3Ñ3Ô3€AÝ”	×%Ò% bÑ)Ô)€IÝ”×&Ò& rÑ*Ô*€JåŒ9�R‰=Œ=€DØ€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�u˜t T˜lÐ+Ñ,Ô,×2Ò2Ñ4Ô4€Dà€DÝŒ9�R‰=Œ=€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�u˜t T˜lÐ+Ñ,Ô,×2Ò2Ñ4Ô4€Dàˆq‰�4‰€Aõ & a°5Ð9Ñ9Ô9€DÝŒ9�R‰=Œ=€DØ€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�u˜t T˜lÐ+Ñ,Ô,×2Ò2Ñ4Ô4€DØ	�‰€Bõ ' q°HÐ=Ñ=Ô=€EØ€DÝŒ9�R‰=Œ=€DÝŒG�B�cÐ"Ñ"Ô"€EÝ�u˜t T˜lÐ+Ñ,Ô,×2Ò2Ñ4Ô4€DØ	
ˆT‰€Bõ •�R—[’[‘]”] aÒ'Ñ(Ô(¨%Ñ0Ô0Ð0Ý•�R—[’[‘]”] aÒ'Ñ(Ô(¨%Ñ0Ô0Ð0Ð0Ð0r!   znum_rows,num_cols)r   r#   r*   c                 ó    — t          || f¦  «        }t          |¦  «        \  }}t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚d S )Nr   )r   r
   Úlen)Únum_rowsÚnum_colsÚbiadjacency_matrixÚrow_indÚcol_inds        r   Ú+test_min_weight_full_matching_trivial_graphr…   ˜   s\   € å# X¨xÐ$8Ñ9Ô9ÐÝ9Ð:LÑMÔMÑ€GˆWÝˆw‰<Œ<˜1ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÐÐr!   r‚   )r   r   r   )r   r   r   r6   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r$   r   r   )r   r   r   )r   r$   r   r   r$   rH   c                 ó¢   — t          j        t          ¦  «        5  t          t	          | ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   r   Ú
ValueErrorr
   r   ©r‚   s    r   Ú1test_min_weight_full_matching_infeasible_problemsrŠ       s£   € õ 
Œ•zÑ	"Ô	"ð Kð KÝ*­:Ð6HÑ+IÔ+IÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Ks   šAÁAÁAc                  óR  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        } t          j        t          d¬¦  «        5  t          t          | ¦  «        ¦  «         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Œ   çü©ñÒMbP?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Œ   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Œ   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Œ   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Œ   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Œ   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Œ   g»ì|ä{ë½?rŒ   rŒ   gCðÏw}‹?gN•RDD9³?rŒ   rŒ   rŒ   g½­p¢ÈÀç?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   g<(@¹òé?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   rŒ   gI}þ 7èê?rŒ   rŒ   rŒ   rŒ   gÇ	vˆ?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   gV¾€ÁâŽê?rŒ   rŒ   rŒ   gÛY‰³\½?rŒ   rŒ   rŒ   gü!‘«š¼?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )gj]8J=È?rŒ   gÉ$]ë}¤?rŒ   rŒ   rŒ   rŒ   rŒ   gâ¦«à\Hè?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   gYI!åæ?rŒ   rŒ   rŒ   rŒ   rŒ   g³ðÿ$œ?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )g-™ Oé?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   gˆö-J;ûÂ?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   gzm�)Ô»?rŒ   rŒ   rŒ   gËz{!.Šì?rŒ   rŒ   rŒ   güoFI%°?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   g-Æe�nä?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   g¸ÐðÁÆÐç?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   gÂÅâ§7¹?rŒ   rŒ   gýqÒfbÛÇ?g¹]!¹Ñ?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   g‡Ÿæ�kç?rŒ   rŒ   gT#P¹Ý?g:àãáw²Ø?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   )gvÁCÅöâÒ?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   gŽŒ8»¾¸?rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   rŒ   zno full matching exists)Úmatch)r   Úasarrayr   r   rˆ   r
   r   )Úas    r   Ú.test_min_weight_full_matching_large_infeasibler‘   ®   s0  € å
Œ
ð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	Bð 	Bð 	Bð	"ð 	"ð 	"ð	Eð 	Eð 	Eð	Eð 	Eð 	Eð	ð 	ð 	ð	Jð 	Jð 	Jð	Jð 	Jð 	Jð	Jð 	Jð 	Jð	Eð 	Eð 	Eð	Bð 	Bð 	Bð	Eð 	Eð 	Eð	Fð 	Fð 	Fð	Gð 	Gð 	Gð	Eð 	Eð 	Eð[/
ñ /	ô /	€Aõ` 
Œ•zÐ)BÐ	CÑ	CÔ	Cð :ð :Ý*­:°a©=¬=Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   Á2BÂB Â#B c                  ó¦   — t          j        t          ¦  «        5  t          d¦  «        } t	          | ¦  «         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   ÚwarnsÚUserWarningr   r
   r‰   s    r   Ú!test_explicit_zero_causes_warningr•   ä   s”   € Ý	Œ•kÑ	"Ô	"ð ?ð ?Ý'Ð(IÑJÔJÐÝ*Ð+=Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   šAÁA
ÁA
c           
      ót  — |\  }}|dk    }| ||¦  «        z  }|t          j        |¦  «        z  } | ||¬¦  «        \  }}t          |t          j        |¦  «        ¦  «         t          |t          j        |||f         ¦  «                             ¦   «         ¦  «         |j        } | ||¬¦  «        \  }}t          |t          j        |¦  «        ¦  «         t          t          j        |¦  «        t          j        t          j        |||f         ¦  «        ¦  «                             ¦   «         ¦  «         d S )Nr%   )Úmaximize)r   r   r   ÚsortÚflattenÚT)	ÚsolverÚ
array_typeÚsignÚ	test_caseÚcost_matrixÚexpected_costr—   rƒ   r„   s	            r   Ú linear_sum_assignment_assertionsr¡   ì   sH  € ð "+Ñ€K�Ø�rŠz€HØ˜˜ KÑ0Ô0Ñ0€KØ�2œ8 MÑ2Ô2Ñ2€Mà�v˜k°HÐ=Ñ=Ô=Ñ€GˆWÝ�w¥¤¨Ñ 0Ô 0Ñ1Ô1Ð1Ý�}Ý”x ¨G°WÐ,<Ô =Ñ>Ô>×FÒFÑHÔHñJô Jð Jð ”-€KØ�v˜k°HÐ=Ñ=Ô=Ñ€GˆWÝ�w¥¤¨Ñ 0Ô 0Ñ1Ô1Ð1Ý•r”w˜}Ñ-Ô-Ý”w�rœxØ& w°Ð'7Ô8ñ :ô  :ñ ;ô ;ß;Bº7¹9¼9ñFô Fð Fð Fð Fr!   r%   )é�  é–   r¢   )r¢   éÂ  éX  )é,  éá   r¦   )r£   r¢   r¦   )r¢   r£   r¢   r   )r¢   r¤   r¥   r$   )r¦   r§   r¦   r+   )r£   r$   r¦   )rJ   rJ   rI   )é	   rI   r   )r¨   rP   é   )rJ   r   rP   )rJ   rJ   rI   rC   )r¨   rI   r   r   )r¨   rP   r©   rJ   )rJ   r   r©   rJ   ÚinfrP   zsign,test_casec                 ó>   — t          t          t          | |¦  «         d S r‡   )r¡   r
   r   )r�   rž   s     r   Ú*test_min_weight_full_matching_small_inputsr¬   #  s,   € å$Ý*­J¸¸iñIô Ið Ið Ið Ir!   )$Ú	itertoolsr   Únumpyr   Únumpy.testingr   r   r   Úscipy.sparser   r   r   Úscipy.sparse.csgraphr	   r
   r   r    r(   r,   r/   r1   r4   r7   r>   r`   r}   ÚmarkÚparametrizer…   rŠ   r‘   r•   r¡   ÚfloatÚ linear_sum_assignment_test_casesr¬   © r!   r   ú<module>r·      s½  ðØ Ð Ð Ð Ð Ð à Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø €€€à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð
*ð *ð *ð-ð -ð -ð.ð .ð .ð(ð (ð (ð.ð .ð .ð-ð -ð -ð,ð ,ð ,ð0ð 0ð 0ð	-ð 	-ð 	-ðð ð ð,$1ð $1ð $1ðN „×ÒÐ,Ð.FÐ.FÐ.FÑGÔGðð ñ HÔGðð „×ÒÐ-à&˜Y˜Y¨	¨	¨	°9°9°9Ð=Ø&˜Y˜Y¨	¨	¨	°9°9°9Ð=Ø)˜\˜\¨<¨<¨<¸¸¸ÐFØ&˜Y˜Y¨	¨	¨	Ð2Ø&˜Y˜Y¨	¨	¨	Ð2Ø ˜V a¨ V¨a°¨VÐ4ðñô ðKð Kñô ðKð
3:ð 3:ð 3:ðl?ð ?ð ?ðFð Fð Fð* $+ 7Øˆ€Gð ˆ/ˆ/Ø
ˆ/ˆ/Ø
ˆ/ˆ/ð
ð 
ˆˆð	ð Ð
Ð
Ø
Ð
Ð
Ø
Ð
Ð
ð
ð 
ˆˆð	ð
 ˆ+ˆ+Ø
ˆ)ˆ)Ø
ˆ)ˆ)ð
ð 
ˆˆð	ð ˆ/ˆ/Ø
ˆ,ˆ,Ø
ˆ-ˆ-ð
ð 
ˆˆð	ð ˆuˆu�U‰|Œ|˜U˜U 5™\œ\Ð
*Øˆ5�‰<Œ<˜˜˜u™œ qÐ
)Øˆ5�‰<Œ<˜˜E˜E %™LœLÐ
)ð
+ð 
ˆˆð	ð3ñ$ô $Ð  ðD „×ÒÐ)Ð+KÑLÔLðIð Iñ MÔLðIð Ið Ir!   