Ë
    ©Ó^j#ˆ  ã                   óÚ   — d dl Z d dlmZmZmZ d dlmZ d dlZd dlZ	d dl
mZmZ d„ Z G d„ d«      Zd„ Zd	„ Zd
„ Zd„ Zd„ Z G d„ d«      Z G d„ d«      Zd„ Z G d„ d«      Z G d„ d«      Zy)é    N)ÚchainÚisliceÚtee)Úinf)ÚFORWARDÚREVERSEc                 óž  — t        | «      dk(  ry t        j                  d«      }t        j                  d«      }t        j                  «       }| D ]  }t        j
                  ||«       Œ t        j                  |d¬«      }|j                  j                  |j                  «       d d¬«      }|j                  d   |z
  t        | «      k(  sJ ‚y )	Nr   ÚnumpyÚscipyT)ÚorientedF)ÚtolÚ	hermitiané   )ÚlenÚpytestÚimportorskipÚnxÚGraphÚ	add_cycleÚincidence_matrixÚlinalgÚmatrix_rankÚtoarrayÚshape)ÚbasisÚnpÚspÚHÚbÚincÚranks          úp/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_cycles.pyÚcheck_independentr#      sª   € Ü
ˆ5ƒz�Q‚Øä	×	Ñ	˜WÓ	%€BÜ	×	Ñ	˜WÓ	%€Bä
�‰‹
€AØò ˆÜ
�‰�Q˜Õðä
×
Ñ
˜a¨$Ô
/€CØ�9‰9× Ñ  §¡£°DÀEÐ ÓJ€DØ�9‰9�Q‰<˜$Ñ¤# e£*Ò,Ð,Ñ,ó    c                   óv   — e Zd Ze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)Ú
TestCyclesc                 óî   — t        j                  «       }t        j                  |g d¢«       t        j                  |g d¢«       t        j                  |g d¢«       |j                  dd«       || _        y )N©r   r   é   é   ©r   r*   é   é   ©r   r   é   é   é   r1   é	   )r   r   r   Úadd_edgeÚG)Úclsr4   s     r"   Úsetup_classzTestCycles.setup_class   sL   € ä�H‰H‹JˆÜ
�‰�QšÔ%Ü
�‰�QšÔ%Ü
�‰�QšÔ(Ø	�
‰
�1�aÔØˆ�r$   c                 ó„   ‡‡‡— t        |«      Št        ‰«      ‰k7  ry||z   Št        ˆˆˆfd„t        ‰«      D «       «      S )NFc              3   ó4   •K  — | ]  }‰||‰z    ‰k(  –— Œ y ­w©N© )Ú.0Úir   ÚlÚns     €€€r"   ú	<genexpr>z3TestCycles.is_cyclic_permutation.<locals>.<genexpr>)   s    øè ø€ Ò7¨�1�Q˜˜Q™�< 1Õ$Ñ7ùs   ƒ)r   ÚanyÚrange)ÚselfÚar   r=   r>   s     `@@r"   Úis_cyclic_permutationz TestCycles.is_cyclic_permutation$   s8   ú€ Ü�‹FˆÜˆq‹6�QŠ;ØØ�‰EˆÜÕ7¬e°A«hÔ7Ó7Ð7r$   c                 ó4  — | j                   }t        j                  |d«      }t        d„ |D «       «      }|g d¢g d¢g d¢gk(  sJ ‚t        j                  |d«      }t        d„ |D «       «      }|g d¢g d¢g d¢gk(  sJ ‚t        j                  |d«      }t        d	„ |D «       «      }|g d¢g d¢g d¢gk(  sJ ‚t        j                  |d
«       t        j                  |d«      }t        d„ |d d D «       «      t        |d   «      gz   }|g d¢g d¢g d¢g d¢gk(  sJ ‚y )Nr   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr9   ©Úsorted©r;   Úcs     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>.   ó   è ø€ Ò/ qœ ŸÑ/ùó   ‚r(   r.   r+   r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>1   rK   rL   r2   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>4   rK   rL   ÚABCc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>9   s   è ø€ Ò4 qœ ŸÑ4ùrL   éÿÿÿÿ)ÚAÚBÚC)r4   r   Úcycle_basisrH   r   ©rB   r4   ÚcyÚsort_cys       r"   Útest_cycle_basiszTestCycles.test_cycle_basis+   s  € Ø�F‰FˆÜ�^‰^˜A˜qÓ!ˆÜÑ/¨BÔ/Ó/ˆØš<ªº,ÐGÒGÐGÐGÜ�^‰^˜A˜qÓ!ˆÜÑ/¨BÔ/Ó/ˆØš<ªº,ÐGÒGÐGÐGÜ�^‰^˜A˜qÓ!ˆÜÑ/¨BÔ/Ó/ˆØš<ªº,ÐGÒGÐGÐGä
�‰�Q˜ÔÜ�^‰^˜A˜qÓ!ˆÜÑ4¨B¨s°¨GÔ4Ó4¼¸rÀ"¹v»Ð7GÑGˆØš<ªº,ÊÐXÒXÐXÑXr$   c                 óÈ   — t        j                  t        j                  «      5  t        j                  «       }t        j
                  |d«      }d d d «       y # 1 sw Y   y xY w©Nr   )r   Úraisesr   ÚNetworkXNotImplementedÚDiGraphrU   ©rB   r4   rW   s      r"   Útest_cycle_basis2zTestCycles.test_cycle_basis2<   sD   € Ü�]‰]œ2×4Ñ4Ó5ñ 	&Ü—
‘
“ˆAÜ—‘  1Ó%ˆB÷	&÷ 	&ñ 	&úó   ¤+AÁA!c                 óÈ   — t        j                  t        j                  «      5  t        j                  «       }t        j
                  |d«      }d d d «       y # 1 sw Y   y xY wr[   )r   r\   r   r]   Ú
MultiGraphrU   r_   s      r"   Útest_cycle_basis3zTestCycles.test_cycle_basis3A   sD   € Ü�]‰]œ2×4Ñ4Ó5ñ 	&Ü—‘“ˆAÜ—‘  1Ó%ˆB÷	&÷ 	&ñ 	&úra   c                 ó’  — t        j                  d«      }|j                  t        j                  t        dd«      «      «       t        j                  |«      }dddœ}t        j
                  ||«      }t        j                  |«      D ��cg c]"  }|D �cg c]  }|j                  ||«      ‘Œ c}‘Œ$ }}}||k(  sJ ‚y c c}w c c}}w )Nr-   r*   r1   r   r   ©r   r   )r   Úcycle_graphÚupdaterA   rU   Úrelabel_nodesÚget)rB   r4   ÚcbGÚpermr   Úcycr>   ÚcbHs           r"   Útest_cycle_basis_orderedz#TestCycles.test_cycle_basis_orderedF   s™   € ä�N‰N˜1ÓˆØ	�‰”—‘¤ a¨£Ó,Ô-Ü�n‰n˜QÓˆà˜‰|ˆÜ×Ñ˜Q Ó%ˆÜ8:¿¹ÀqÓ8I×J°¨Ö, 1�—‘˜˜A•Ô,ÐJˆÑJØ�cŠzÐ‰zùò -ùÓJs   Â	CÂB>Â.CÂ>Cc                 óþ   — t        j                  «       }t        j                  |g d¢«       t        j                  |g d¢«       t        j                  |«      }t	        d„ |D «       «      }|dgg d¢g d¢g d¢gk(  sJ ‚y)	z-Tests the function for graphs with self loopsr(   )r   r   r/   r)   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr9   rG   rI   s     r"   r?   z8TestCycles.test_cycle_basis_self_loop.<locals>.<genexpr>W   rK   rL   r   ©r   r   r)   )r   r)   r*   )r   r)   r/   N)r   r   r   rU   rH   rV   s       r"   Útest_cycle_basis_self_loopz%TestCycles.test_cycle_basis_self_loopQ   s`   € ä�H‰H‹JˆÜ
�‰�QšÔ%Ü
�‰�QšÔ%Ü�^‰^˜AÓˆÜÑ/¨BÔ/Ó/ˆØ˜A˜3¢	ª9²iÐ@Ò@Ð@Ñ@r$   c                 ó  ‡ ‡— g d¢}t        j                  |«      }t        t        j                  |«      «      }dgg d¢ddgddgdgg}t	        |«      t	        |«      k(  sJ ‚|D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ y )N)©r   r   ©r   r   ©r   r)   ©r   r)   ©r)   r   ©r)   r   ©r)   r)   r   rr   r)   r   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   ©rD   ©r;   ÚrcrJ   rB   s     €€r"   r?   z0TestCycles.test_simple_cycles.<locals>.<genexpr>a   ó   øè ø€ ÒF¸R�t×1Ñ1°!°R×8ÑFùó   ƒ)r   r^   rH   Úsimple_cyclesr   r@   )rB   Úedgesr4   ÚccÚcarJ   s   `    @r"   Útest_simple_cycleszTestCycles.test_simple_cyclesZ   s‚   ù€ ÚHˆÜ�J‰J�uÓˆÜ”B×$Ñ$ QÓ'Ó(ˆØˆc’9˜q !˜f q¨! f¨q¨cÐ2ˆÜ�2‹wœ#˜b›'Ò!Ð!Ð!Øò 	GˆAÜÔFÀ2ÔFÕFÐFÐFñ	Gr$   c                 óz   — t        j                  dg«      }t        t        j                  |«      «      dggk(  sJ ‚y )Nru   r   )r   r   Úlistr‚   ©rB   r4   s     r"   Útest_simple_cycles_singletonz'TestCycles.test_simple_cycles_singletonc   s4   € Ü�H‰H�f�XÓˆÜ”B×$Ñ$ QÓ'Ó(¨a¨S¨EÒ1Ð1Ñ1r$   c                 ó¸   — t        j                  «       }t        j                  |ddg«       t        t        j                  |«      «      }t        |«      dk(  sJ ‚y )NrC   r   )r   r^   r   rˆ   r‚   r   ©rB   r4   rJ   s      r"   Útest_unsortablezTestCycles.test_unsortableg   sF   € ô �J‰J‹LˆÜ
�‰�Q˜˜a˜Ô!Ü”×!Ñ! !Ó$Ó%ˆÜ�1‹v˜Š{Ð‰{r$   c                 óÆ  ‡ ‡— t        j                  «       }t        j                  |g d¢«       t        t        j                  |«      «      Št        ‰«      dk(  sJ ‚‰ j                  ‰d   g d¢«      sJ ‚t        j                  |g d¢«       t        t        j                  |«      «      }t        |«      dk(  sJ ‚g d¢g d¢g}|D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ y )N)r   r)   r*   r   r   )é
   é   é   r)   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   r}   r~   s     €€r"   r?   z6TestCycles.test_simple_cycles_small.<locals>.<genexpr>z   r€   r�   )r   r^   r   rH   r‚   r   rD   r@   )rB   r4   r„   r…   rJ   s   `   @r"   Útest_simple_cycles_smallz#TestCycles.test_simple_cycles_smallo   s½   ù€ Ü�J‰J‹LˆÜ
�‰�Qš	Ô"Ü”2×#Ñ# AÓ&Ó'ˆÜ�1‹v˜Š{Ðˆ{Ø×)Ñ)¨!¨A©$²	Ô:Ð:Ð:Ü
�‰�QšÔ%Ü”B×$Ñ$ QÓ'Ó(ˆÜ�2‹w˜!Š|Ðˆ|ÚšÐ&ˆØò 	GˆAÜÔFÀ2ÔFÕFÐFÐFñ	Gr$   c                 ór   — t        j                  «       }t        t        j                  |«      «      g k(  sJ ‚y r9   )r   r^   rˆ   r‚   r‰   s     r"   Útest_simple_cycles_emptyz#TestCycles.test_simple_cycles_empty|   s+   € Ü�J‰J‹LˆÜ”B×$Ñ$ QÓ'Ó(¨BÒ.Ð.Ñ.r$   c                 ón  — t        j                  «       }t        d|dz   «      D ])  }|j                  d|«       |j                  ||dz   «       Œ+ |j                  d|z  dz   d«       t        |dz   d|z  dz   «      D ]/  }|j                  |d|z  dz   «       |j                  ||dz   «       Œ1 |j                  d|z  dz   |dz   «       t        d|z  dz   d|z  dz   «      D ]2  }|j                  d|z  dz   |«       |j                  |d|z  dz   «       Œ4 |j                  d|z  dz   d|z  dz   «       |S )Nr)   r   r*   )r   r^   rA   r3   )rB   Úkr4   r>   s       r"   Úworst_case_graphzTestCycles.worst_case_graph€   s=  € ô �J‰J‹LˆÜ�q˜!˜a™%“ò 	!ˆAØ�J‰J�q˜!ÔØ�J‰J�q˜!˜a™%Õ ð	!ð 	
�
‰
�1�q‘5˜1‘9˜aÔ Ü�q˜1‘u˜a !™e a™iÓ(ò 	!ˆAØ�J‰J�q˜!˜a™% !™)Ô$Ø�J‰J�q˜!˜a™%Õ ð	!ð 	
�
‰
�1�q‘5˜1‘9˜a !™eÔ$Ü�q˜1‘u˜q‘y ! a¡%¨!¡)Ó,ò 	%ˆAØ�J‰J�q˜1‘u˜q‘y !Ô$Ø�J‰J�q˜!˜a™% !™)Õ$ð	%ð 	
�
‰
�1�q‘5˜1‘9˜a !™e a™iÔ(Øˆr$   c                 óª   — t        dd«      D ]D  }| j                  |«      }t        t        t	        j
                  |«      «      «      }|d|z  k(  rŒDJ ‚ y )Nr*   r�   )rA   r˜   r   rˆ   r   r‚   )rB   r—   r4   r=   s       r"   Útest_worst_case_graphz TestCycles.test_worst_case_graph’   sQ   € ä�q˜"“ò 	ˆAØ×%Ñ% aÓ(ˆAÜ”Dœ×)Ñ)¨!Ó,Ó-Ó.ˆAØ˜˜A™“:Ð�:ñ	r$   c                 óp  ‡ ‡‡— t        dd«      D ]¤  }‰ j                  |«      }t        t        j                  |«      «      }t        t        j
                  |«      «      }t        |«      t        |«      k(  sJ ‚|D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ |D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ Œ¦ y )Nr)   r�   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   r}   )r;   ÚrrJ   rB   s     €€r"   r?   z;TestCycles.test_recursive_simple_and_not.<locals>.<genexpr>    s   øè ø€ ÒIÀ˜4×5Ñ5°a¸×;ÑIùr�   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   r}   ©r;   rJ   r   rB   s     €€r"   r?   z;TestCycles.test_recursive_simple_and_not.<locals>.<genexpr>¢   s   øè ø€ ÒIÀ˜4×5Ñ5°b¸!×<ÑIùr�   )rA   r˜   rH   r   r‚   Úrecursive_simple_cyclesr   r@   )rB   r—   r4   r„   ÚrccrJ   r   s   `    @@r"   Útest_recursive_simple_and_notz(TestCycles.test_recursive_simple_and_not™   s´   ú€ Ü�q˜"“ò 	JˆAØ×%Ñ% aÓ(ˆAÜœ×(Ñ(¨Ó+Ó,ˆBÜœ×3Ñ3°AÓ6Ó7ˆCÜ�r“7œc #›hÒ&Ð&Ð&Øò J�ÜÔIÀSÔIÕIÐIÐIðJàò J�ÜÔIÀbÔIÕIÐIÐIñJñ	Jr$   c                 óž  ‡ ‡‡— t        j                  «       }g d¢}|j                  |«       t        t        j                  |«      «      }t        |«      dk(  sJ ‚t        t        j                  |«      «      }t        |«      t        |«      k(  sJ ‚|D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ |D ]  Št        ˆˆ fd„|D «       «      rŒJ ‚ y )N)rw   )r   r*   rf   ©r   r*   rz   )r)   r,   ©r*   r)   ©r*   r,   )r,   r   )r,   r   ©r,   r-   ©r-   r   ©r-   r   )r-   r)   )r-   r*   é   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   r}   r~   s     €€r"   r?   zATestCycles.test_simple_graph_with_reported_bug.<locals>.<genexpr>½   s   øè ø€ ÒG¸R�t×1Ñ1°!°R×8ÑGùr�   c              3   óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wr9   r}   rŸ   s     €€r"   r?   zATestCycles.test_simple_graph_with_reported_bug.<locals>.<genexpr>¿   s   øè ø€ ÒE¸Q�t×1Ñ1°"°a×8ÑEùr�   )r   r^   Úadd_edges_fromrH   r‚   r   r    r@   )rB   r4   rƒ   r„   r¡   rJ   r   s   `    @@r"   Ú#test_simple_graph_with_reported_bugz.TestCycles.test_simple_graph_with_reported_bug¤   s¿   ú€ Ü�J‰J‹Lˆò
ˆð" 	
×Ñ˜ÔÜ”B×$Ñ$ QÓ'Ó(ˆÜ�2‹w˜"Š}Ðˆ}Ü”R×/Ñ/°Ó2Ó3ˆÜ�2‹wœ#˜c›(Ò"Ð"Ð"Øò 	HˆAÜÔGÀ3ÔGÕGÐGÐGð	Hàò 	FˆBÜÔEÀ"ÔEÕEÐEÐEñ	Fr$   N)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr6   rD   rY   r`   rd   ro   rs   r†   rŠ   r�   r“   r•   r˜   rš   r¢   r®   r:   r$   r"   r&   r&      se   „ Øñó ðò8òYò"&ò
&ò
	òAòGò2òòGò/òò$ò	JóFr$   r&   c                 óN   — t        | «      \  }}t        |d «       t        ||«      S r9   )r   ÚnextÚzip)ÚiterablerC   r   s      r"   Úpairwiser·   Â   s$   € Üˆx‹=�D€A€qÜˆˆD„MÜˆq�!‹9Ðr$   c           	      ó@   — t        t        | t        | d«      «      «      S ©Nr   )r·   r   r   ©rJ   s    r"   Úcycle_edgesr»   È   s   € Ü”E˜!œV A q›\Ó*Ó+Ð+r$   c                 ó*   — t        t        | «      «      S r9   )Ú	frozensetr»   rº   s    r"   Údirected_cycle_edgesetr¾   Ì   s   € Ü”[ “^Ó$Ð$r$   c                 óŠ   — t        | «      dk(  rt        t        | «      «      S t        t        t        t        | «      «      «      S r¹   ©r   r½   r»   Úmaprº   s    r"   Úundirected_cycle_edgesetrÂ   Ð   s2   € Ü
ˆ1ƒv�‚{Üœ Q›Ó(Ð(Ü”Sœ¤K°£NÓ3Ó4Ð4r$   c                 óŠ   — t        | «      dk  rt        t        | «      «      S t        t        t        t        | «      «      «      S )Nr)   rÀ   rº   s    r"   Úmultigraph_cycle_edgesetrÄ   Ö   s2   € Ü
ˆ1ƒv�‚{Üœ Q›Ó(Ð(äœœY¬°A«Ó7Ó8Ð8r$   c                   ó¾   — e Zd Zed„ «       Zed„ «       Zed„ «       Zd„ Z	 	 	 dd„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y)ÚTestCycleEnumerationc                 ó,   — t        j                  | «      S r9   )r   Úcomplete_graph©r>   s    r"   ÚKzTestCycleEnumeration.KÞ   s   € ä× Ñ  Ó#Ð#r$   c                 óH   — t        j                  | «      j                  «       S r9   )r   rÈ   Úto_directedrÉ   s    r"   ÚDzTestCycleEnumeration.Dâ   s   € ä× Ñ  Ó#×/Ñ/Ó1Ð1r$   c                 óf   — | j                  «       rt        S | j                  «       rt        S t        S r9   )Úis_directedr¾   Úis_multigraphrÄ   rÂ   )Úgs    r"   Úedgeset_functionz%TestCycleEnumeration.edgeset_functionæ   s'   € à�=‰=Œ?Ü)Ð)Ø�_‰_ÔÜ+Ð+ä+Ð+r$   c	                 ó²  ‡— |�t        |«      |kD  rt        d|› d|› �«      ‚|dk(  r"||v rt        d|› d�«      ‚t        |«      ||<   n%||v r|j                  |«       nt        d|› d�«      ‚t	        ˆfd„|D «       «      st        |› d|› d	�«      ‚|rBt        ‰j                  |«      j                  «      t        |«      kD  rt        |› d
|› d�«      ‚y y )Núcomputed cycle z exceeds length bound Úcomputedz has already been found!zexpected cycle z was not computedc              3   ó<   •K  — | ]  } ‰j                   |Ž –— Œ y ­wr9   ©Úhas_edge)r;   ÚerÑ   s     €r"   r?   z3TestCycleEnumeration.check_cycle.<locals>.<genexpr>  s   øè ø€ Ò. a�:�1—:‘:˜q”>Ñ.ùs   ƒz claimed cycle z is not a cycle of gz cycle z is not chordless)r   ÚRuntimeErrorÚtupleÚpopÚallÚsubgraphrƒ   )	rB   rÑ   rJ   ÚesÚcacheÚsourceÚ
original_cÚlength_boundÚ	chordlesss	    `       r"   Úcheck_cyclez TestCycleEnumeration.check_cycleï   s  ø€ ØÐ#¬¨A«°Ò(=ÜØ! * Ð-CÀLÀ>ÐRóð ð �ZÒØ�U‰{Ü"Ø% j \Ð1IÐJóð ô " *Ó-��b’	à�U‰{Ø—	‘	˜"•ä" _°Z°LÐ@QÐ#RÓSÐSäÓ.¨2Ô.Ô.ÜØ�(˜/¨*¨Ð5IÐJóð ñ œ˜QŸZ™Z¨›]×0Ñ0Ó1´C¸³FÒ:Ü & ¨°°Ð<MÐNÓOÐOð ;ˆ9r$   Nc                 ód  — |€"|rt         j                  nt         j                  }t        t	        t        |«      «      «      }t        j                  d«      }|j                  |«       t        t        ||«      «      }t        t        ||«      «      }	t        j                  ||d¬«      }
| j                  |
«      }i }|�||d<   i } ||
fi |¤ŽD ]4  }|D �cg c]  }|	|   ‘Œ	 }} ||«      }| j                  |
|||d|||«       Œ6 t        |t        «      r)t        |«      |k7  rt!        d|› dt        |«      › �«      ‚y |D ]4  }|D �cg c]  }||   ‘Œ	 }} ||«      }| j                  |
|||d|||«       Œ6 t        |«      r$|j#                  «       D ]  }t!        d	|› d
�«      ‚ y y c c}w c c}w )Né*   T)Úcopyrã   rÕ   z	expected z cycles, got ÚexpectedrÔ   z, is valid but not in the expected cycle set!)r   Úchordless_cyclesr‚   rˆ   rA   r   ÚrandomÚRandomÚshuffleÚdictrµ   ri   rÒ   rå   Ú
isinstanceÚintrÚ   Úvalues)rB   rÑ   Úexpected_cyclesrã   rä   Ú	algorithmÚrelabelÚrngÚlabelÚunlabelÚhÚedgesetÚparamsÚcycle_cacherJ   Úxrâ   rß   s                     r"   Úcheck_cycle_algorithmz*TestCycleEnumeration.check_cycle_algorithm  sÞ  € ð ÐÙ/8œ×+Ò+¼b×>NÑ>NˆIô ”uœS ›V“}Ó%ˆÜ�m‰m˜BÓˆØ�‰�GÔÜ”S˜˜G“_Ó%ˆÜ”s˜7 A“Ó'ˆÜ×Ñ˜Q ¨DÔ1ˆà×'Ñ'¨Ó*ˆàˆØÐ#Ø%1ˆF�>Ñ"àˆÙ˜1Ñ' Ñ'ò 	ˆAØ./Ö0¨˜' !›*Ð0ˆJÐ0Ù˜“ˆBØ×ÑØ�1�b˜+ z°:¸|ÈYõð	ô �o¤sÔ+Ü�;Ó ?Ò2Ü"Ø Ð0°¼cÀ+Ó>NÐ=OÐPóð ð Ø)ò 	ˆJØ#-Ö.˜a��q“Ð.ˆAÐ.Ù˜“ˆBØ×ÑØ�1�b˜+ z°:¸|ÈYõð	ô ˆ{ÔØ ×'Ñ'Ó)ò �Ü"Ø% a SÐ(TÐUóð ñð ùò' 1ùò /s   ÃF(ÅF-c                 óX   — t        ||«      D ]  \  }}| j                  |||||¬«       Œ y )N)rã   rä   ró   )rµ   rý   )rB   Úg_familyÚcycle_countsrã   rä   ró   rÑ   Ú
num_cycless           r"   Ú(check_cycle_enumeration_integer_sequencez=TestCycleEnumeration.check_cycle_enumeration_integer_sequence?  s@   € ô ! ¨<Ó8ò 	‰MˆAˆzØ×&Ñ&ØØØ)Ø#Ø#ð 'õ ñ	r$   c                 ó¢  — t        j                  «       }t        j                  |t        d«      «       t        j                  |t        d«      d d d…   «       |j	                  dd«       g d¢}| j                  ||d¬«       | j                  ||dd¬«       |D �cg c]  }t        |«      dk  sŒ|‘Œ }}| j                  ||dd	¬«       y c c}w )
Nr-   rQ   r   ))r   rx   ©r)   r*   r¦   T©rä   r)   ©rä   rã   r   )r   r^   r   rA   r3   rý   r   )rB   rÑ   rò   rJ   s       r"   Ú$test_directed_chordless_cycle_digonsz9TestCycleEnumeration.test_directed_chordless_cycle_digonsP  s´   € Ü�J‰J‹LˆÜ
�‰�Qœ˜a›Ô!Ü
�‰�Qœ˜a›¡ 2 ™Ô'Ø	�
‰
�1�aÔÚ8ˆØ×"Ñ" 1 oÀÐ"ÔFà×"Ñ" 1 oÀÐTUÐ"ÔVà&5ÖD ¼¸Q»À!»š1ÐDˆÐDØ×"Ñ" 1 oÀÐTUÐ"ÕVùò Es   ÂCÂ0Cc                 óÆ   — t        j                  g d¢«      }dgdgg}| j                  ||d¬«       |j                  g d¢«       dgdgddgg}| j                  ||d¬«       y )	N))r   r   r{   rx   rx   r   r)   Tr  )r  r¦   r¦   r¤   r*   r,   )r   rc   rý   r­   )rB   r4   rò   s      r"   Ú+test_chordless_cycles_multigraph_self_loopsz@TestCycleEnumeration.test_chordless_cycles_multigraph_self_loops]  sk   € Ü�M‰MÒ:Ó;ˆØ˜3  ˜*ˆØ×"Ñ" 1 oÀÐ"ÔFà	×ÑÒ9Ô:Ø˜3   a¨ VÐ,ˆØ×"Ñ" 1 oÀÐ"ÕFr$   c                 óª  — t        j                  g d¢«      }ddg}| j                  ||d¬«       t        j                  «       }t        j                  |t	        d«      «       t        j                  |t	        dd«      «       |j                  d	d
«       g d¢}| j                  ||d¬«       |j                  d
d	«       g d¢}| j                  ||d¬«       dg}| j                  ||dd¬«       |j                  d	d
«       ddg}| j                  ||d¬«       t        j                  d„ t	        d«      D «       «      }g }| j                  ||d¬«       y )N)rx   r  r¦   r§   r¨   r©   rw   )r   r)   r*   r,   r-   )r   r)   r*   r,   r-   Tr  r-   r,   r2   r0   r*   )©r   r   r)   r*   r,   )r*   r,   r-   r/   r0   ©r,   r-   r/   r0   r1   )r  ©r*   r0   r  r  r  r  r  c              3   óD   K  — | ]  }t        |«      D ]  }||f–— Œ
 Œ y ­wr9   ©rA   )r;   r<   Újs      r"   r?   zPTestCycleEnumeration.test_directed_chordless_cycle_undirected.<locals>.<genexpr>}  s$   è ø€ ÒC !¼%À»(ÒC°Q˜˜1”vÐC�vÑCùó   ‚ r�   )r   r^   rý   r   rA   r3   Úremove_edge)rB   rÑ   rò   s      r"   Ú(test_directed_chordless_cycle_undirectedz=TestCycleEnumeration.test_directed_chordless_cycle_undirectedf  s/  € Ü�J‰JÒOÓPˆØ*¨OÐ<ˆØ×"Ñ" 1 oÀÐ"ÔFä�J‰J‹LˆÜ
�‰�Qœ˜a›Ô!Ü
�‰�Qœ˜a ›Ô$Ø	�
‰
�1�aÔÚMˆØ×"Ñ" 1 oÀÐ"ÔFà	�
‰
�1�aÔÚDˆØ×"Ñ" 1 oÀÐ"ÔFà!˜(ˆØ×"Ñ" 1 oÀÐTUÐ"ÔVà	�‰�a˜ÔØ*¨OÐ<ˆØ×"Ñ" 1 oÀÐ"ÔFä�J‰JÑC¤u¨R£yÔCÓCˆØˆØ×"Ñ" 1 oÀÐ"ÕFr$   c           	      ó  — t        j                  «       }t        j                  |t        d«      «       t        j                  |t        dd«      «       g t        d«      ¢g t        dd«      ¢g}| j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       |j                  dd«       |j                  g t        dd	«      ¢«       | j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       |j                  dd«       ddg|d
<   | j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       |j                  «        |j                  dd«       | j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       y c c}w c c}w c c}w c c}w )Nr-   r,   é   Tr  ©rã   rä   r0   r*   r1   rQ   )
r   r^   r   rA   rý   r   r3   ÚappendrÜ   r  ©rB   r4   ré   rJ   s       r"   Útest_chordless_cycles_directedz3TestCycleEnumeration.test_chordless_cycles_directed�  s×  € Ü�J‰J‹LˆÜ
�‰�Qœ˜a›Ô!Ü
�‰�Qœ˜a ›Ô%Ø”e˜A“h�K ¤5¨¨B£< Ð1ˆØ×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#ô 	
ð 	
�
‰
�1�aÔØ�‰˜œ%  1›+˜Ô'Ø×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#ô 	
ð 	
�
‰
�1�aÔØ˜1�vˆ�‰Ø×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#ô 	
ð 	�‰ŒØ	�‰�a˜ÔØ×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#õ 	
ùò) 4ùò 4ùò 4ùò 4s0   ÂG2
Â'G2
ÄG7
ÄG7
Å'G<
Å;G<
ÇH
Ç#H
c                 óD  — t        d«      D �cg c]  }| j                  |«      ‘Œ }}t        d«      D �cg c]  }||z  |z
  dz  ‘Œ }}| j                  ||d¬«       t        d«      D �cg c]  }||z  |z
  dz  ‘Œ }}| j                  ||d¬«       y c c}w c c}w c c}w )Nr�   r)   Tr  ©rã   )rA   rÍ   r  )rB   r>   rÿ   rò   s       r"   Ú&test_directed_chordless_cycle_dicliquez;TestCycleEnumeration.test_directed_chordless_cycle_diclique   s­   € Ü',¨R£yÖ1 !�D—F‘F˜1•IÐ1ˆÐ1Ü5:¸2³YÖ?°˜A ™E A™I¨!Ó+Ð?ˆÐ?Ø×5Ñ5Ø�o°ð 	6ô 	
ô 6;¸2³YÖ?°˜A ™E A™I¨!Ó+Ð?ˆÐ?Ø×5Ñ5Ø�o°Að 	6õ 	
ùò 2ùÚ?ùò
 @s   ŽBµBÁ*Bc                 óð  — t        j                  d„ t        d«      D «       «      }t        j                  |t        d«      «       t        d«      D �cg c]  }|f‘Œ }}| j	                  ||d¬«       | j	                  ||d¬«       t        j
                  |«      }|j                  d„ t        ddd	«      D «       «       t        ddd	«      D �cg c]  }|f‘Œ }}| j	                  ||d¬«       y c c}w c c}w )
Nc              3   ó$   K  — | ]  }||f–— Œ
 y ­wr9   r:   ©r;   r<   s     r"   r?   zMTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<genexpr>­  s   è ø€ Ò1 !˜˜1”vÑ1ùó   ‚r�   Tr  r   r  c              3   ó$   K  — | ]  }||f–— Œ
 y ­wr9   r:   r  s     r"   r?   zMTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<genexpr>µ  s   è ø€ Ò9 A˜!˜QœÑ9ùr   r   r)   )r   r^   rA   r   rý   ÚMultiDiGraphr­   )rB   rÑ   r<   rò   s       r"   Ú%test_directed_chordless_loop_blockadez:TestCycleEnumeration.test_directed_chordless_loop_blockade¬  sÕ   € Ü�J‰JÑ1¤u¨R£yÔ1Ó1ˆÜ
�‰�Qœ˜b›	Ô"Ü).¨r«Ö3 A˜Aš4Ð3ˆÐ3Ø×"Ñ" 1 oÀÐ"ÔFà×"Ñ" 1 oÀAÐ"ÔFä�O‰O˜AÓˆØ	×ÑÑ9¬¨q°"°a«Ô9Ô9Ü).¨q°"°a«Ö9 A˜Aš4Ð9ˆÐ9Ø×"Ñ" 1 oÀÐ"ÕFùò 4ùò :s   Á
C.Ã
C3c                 ó”  — t        dd«      D �cg c]  }| j                  |«      ‘Œ }}g d¢}| j                  ||d¬«       d„ }t        dd«      D �cg c]  }| j                  |«      ‘Œ }}|D �cg c]  }d|z  ‘Œ	 }}| j                  ||d|¬«       d„ }g d	¢}t        d
d«      D �cg c]  }| j                  |«      ‘Œ }}| j                  ||d|¬«       |D �cg c]  }d|z  ‘Œ	 }}t        d
d«      D �cg c]  }| j                  |«      ‘Œ }}| j                  ||d|¬«       g d¢}t        d
d«      D �cg c]  }| j                  |«      ‘Œ }}| j                  ||«       g d¢}t        d«      D �cg c]  }| j                  |«      ‘Œ }}| j                  ||«       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr)   r  )r   r   r,   r�   r�   é#   é8   éT   éx   é¥   éÜ   r*   r  c              ;   óZ   K  — d„ t        j                  | fi |¤ŽD «       E d {  –—†  y 7 Œ­w)Nc              3   ó>   K  — | ]  }t        |«      d k(  sŒ|–— Œ y­w©r*   N©r   rI   s     r"   r?   zfTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.triangles.<locals>.<genexpr>Â  ó   è ø€ ÒP˜aÄCÈÃFÈaÃKœÑPùó   ‚–©r   r‚   ©rÑ   Úkwargss     r"   Ú	triangleszSTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.trianglesÁ  ó$   è ø€ ÙP¤2×#3Ñ#3°AÑ#@¸Ñ#@ÔP×PÒPúó   ‚!+£)¤+)rã   ró   c              ;   óZ   K  — d„ t        j                  | fi |¤ŽD «       E d {  –—†  y 7 Œ­w)Nc              3   ó>   K  — | ]  }t        |«      d k(  sŒ|–— Œ y­w)r,   Nr.  rI   s     r"   r?   zhTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.four_cycles.<locals>.<genexpr>Ì  r/  r0  r1  r2  s     r"   Úfour_cycleszUTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.four_cyclesË  r5  r6  )r   r   r   r*   é   é-   éi   éÒ   iz  iv  iÞ  r   r,   r:  )r   r   r-   r�   r'  i™  i=	  r1   )r   r   r   r   r0   é%   éÅ   i”  ©rA   rÊ   r  rÍ   )rB   r>   rÿ   ré   r4  rÙ   r9  s          r"   Ú+test_simple_cycles_notable_clique_sequencesz@TestCycleEnumeration.test_simple_cycles_notable_clique_sequences¹  sÒ  € ä',¨Q°£|Ö4 !�D—F‘F˜1•IÐ4ˆÐ4Ú?ˆØ×5Ñ5Ø�h¨Qð 	6ô 	
ò	Qô (-¨Q°£|Ö4 !�D—F‘F˜1•IÐ4ˆÐ4Ø#+Ö,˜a�A˜“EÐ,ˆÐ,Ø×5Ñ5Ø�h¨Q¸)ð 	6ô 	
ò	Qò AˆÜ',¨Q°£|Ö4 !�D—F‘F˜1•IÐ4ˆÐ4Ø×5Ñ5Ø�h¨Q¸+ð 	6ô 	
ð
 $,Ö,˜a�A˜“EÐ,ˆÐ,Ü',¨Q°£|Ö4 !�D—F‘F˜1•IÐ4ˆÐ4Ø×5Ñ5Ø�h¨Q¸+ð 	6ô 	
ò
 0ˆÜ',¨Q°£{Ö3 !�D—F‘F˜1•IÐ3ˆÐ3Ø×5Ñ5°hÀÔIò 2ˆÜ',¨Q£xÖ0 !�D—F‘F˜1•IÐ0ˆÐ0Ø×5Ñ5°hÀÕIùòS 5ùò 5ùÚ,ùò 5ùò -ùÚ4ùò 4ùò
 1s/   �F"ÁF'Á0F,Â(F1ÃF6Ã7F;Ä8G Å5Gc                 óŠ  — t        j                  «       }t        j                  |t        d«      «       g t        d«      ¢g}| j	                  ||d¬«       t        j                  |t        d«      «       g t        t        d«      «      ¢}| j	                  ||d¬«       t        j                  |t        d«      «       g }| j	                  ||d¬«       t        j                  «       }t        j                  |t        d«      «       g t        d«      ¢g}| j	                  ||d¬«       t        j                  |t        d«      «       | j	                  |g d¬«       t        j                  |t        d«      «       | j	                  |g d¬«       t        j                  «       }t        j                  |t        d«      «       t        j                  |t        d«      d d d…   «       g t        t        d«      «      ¢}| j	                  ||d¬«       t        j                  |t        d«      «       | j	                  |g d¬«       y )Nr-   Tr  rQ   )r   rc   r   rA   rý   r»   r"  )rB   rÑ   ré   s      r"   Ú1test_directed_chordless_cycle_parallel_multiedgeszFTestCycleEnumeration.test_directed_chordless_cycle_parallel_multiedgesæ  sÀ  € Ü�M‰M‹Oˆä
�‰�Qœ˜a›Ô!Ø”e˜A“h�K�=ˆØ×"Ñ" 1 h¸$Ð"Ô?ä
�‰�Qœ˜a›Ô!Ø+”[¤ q£Ó*Ð+ˆØ×"Ñ" 1 h¸$Ð"Ô?ä
�‰�Qœ˜a›Ô!ØˆØ×"Ñ" 1 h¸$Ð"Ô?ä�O‰OÓˆä
�‰�Qœ˜a›Ô!Ø”e˜A“h�K�=ˆØ×"Ñ" 1 h¸$Ð"Ô?ä
�‰�Qœ˜a›Ô!Ø×"Ñ" 1 b°DÐ"Ô9ä
�‰�Qœ˜a›Ô!Ø×"Ñ" 1 b°DÐ"Ô9ä�O‰OÓˆä
�‰�Qœ˜a›Ô!Ü
�‰�Qœ˜a›¡ 2 ™Ô'Ø+”[¤ q£Ó*Ð+ˆØ×"Ñ" 1 h¸$Ð"Ô?ä
�‰�Qœ˜a›Ô!Ø×"Ñ" 1 b°DÐ"Õ9r$   c           	      ó�  — t        j                  «       }t        j                  |t        d«      «       t        j                  |t        dd«      «       g t        d«      ¢g t        dd«      ¢g}| j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       |j                  dd«       |j                  g t        dd	«      ¢«       |j                  g d
¢«       | j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       y c c}w c c}w )Nr-   r,   r  Tr  r  r0   r*   r1   )r,   r*   r0   r1   r2   r�   é   )r   r   r   rA   rý   r   r3   r  r  s       r"   Útest_chordless_cycles_graphz0TestCycleEnumeration.test_chordless_cycles_graph  s  € Ü�H‰H‹JˆÜ
�‰�Qœ˜a›Ô!Ü
�‰�Qœ˜a ›Ô%Ø”e˜A“h�K ¤5¨¨B£< Ð1ˆØ×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#ô 	
ð 	
�
‰
�1�aÔØ�‰˜œ%  1›+˜Ô'Ø�‰Ò/Ô0Ø×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#õ 	
ùò 4ùò 4s   ÂD>
Â'D>
ÄE
Ä/E
c           
      ó(  — d}|dz  dk(  sJ ‚t        j                  «       }t        |«      D ]7  }|dz  s|j                  ||dz   |z  «       |j                  ||dz   |z  «       Œ9 g t        d|d«      ¢gt        d|d«      D ��cg c]"  }t        ||dz   «      D �cg c]  }||z  ‘Œ	 c}‘Œ$ c}}z   }| j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       d	}|dz  dk(  sJ ‚t        j                  «       }t        |«      D ]8  }|j                  ||dz   |z  «       |dz  rŒ!|j                  |dz   |z  |«       Œ: g t        |dz
  d
d
«      ¢gt        d|d«      D ��cg c]"  }t        ||dz   «      D �cg c]  }||z  ‘Œ	 c}‘Œ$ c}}z   }| j	                  ||d¬«       | j	                  ||D �cg c]  }t        |«      dk  sŒ|‘Œ c}dd¬«       y c c}w c c}}w c c}w c c}w c c}}w c c}w )Niè  r)   r   r   r*   Tr  r  éd   éþÿÿÿ)r   r   rA   r3   rý   r   r^   )rB   r>   r4   Úvr<   rü   ré   rJ   s           r"   Ú'test_chordless_cycles_giant_hamiltonianz<TestCycleEnumeration.test_chordless_cycles_giant_hamiltonian  s%  € ð ˆØ�1‰u˜ŠzÐˆzÜ�H‰H‹JˆÜ�q“ò 	'ˆAØ�q’5Ø—
‘
˜1˜q 1™u¨™kÔ*Ø�J‰J�q˜1˜q™5 A™+Õ&ð	'ð
 &”e˜A˜q !“nÐ%Ð&Ü6;¸A¸qÀ!³n÷*
Ø12œE ! Q¨¡U›OÖ,�qˆQ�‹UÔ,ó*
ñ 
ˆð 	×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#ô 	
ð ˆØ�1‰u˜ŠzÐˆzÜ�J‰J‹LˆÜ�q“ò 	+ˆAØ�J‰J�q˜1˜q™5 A™+Ô&Ø�q“5Ø—
‘
˜A ™E Q™;¨Õ*ð	+ð
 ,”e˜A ™E 2 rÓ*Ð+Ð,Ü6;¸A¸qÀ!³n÷0
Ø12œE ! Q¨¡U›OÖ,�qˆQ�‹UÔ,ó0
ñ 
ˆð 	×"Ñ" 1 h¸$Ð"Ô?Ø×"Ñ"Ø˜8Ö3�a¤s¨1£v°£{’Ò3À!Ètð 	#õ 	
ùò9 -ùó*
ùò
 4ùò* -ùó0
ùò
 4sH   ÂG9ÂG4Â'G9ÃG?
Ã*G?
Æ H	ÆHÆ"H	ÇH
Ç%H
Ç4G9ÈH	c                 ó  — d}t        j                  d„ t        |«      D «       «      }| j                  |g «       | j                  |g d¬«       t        |dz   «      D ]+  }| j                  |g |¬«       | j                  |g |d¬«       Œ- y )Nr�   c              3   óD   K  — | ]  }t        |«      D ]  }||f–— Œ
 Œ y ­wr9   r  )r;   rü   Úys      r"   r?   zMTestCycleEnumeration.test_simple_cycles_acyclic_tournament.<locals>.<genexpr>O  s$   è ø€ ÒB !¼¸q»ÒB°A˜˜1”vÐB�vÑBùr  Tr  r   r  r  )r   r^   rA   rý   )rB   r>   r4   r—   s       r"   Ú%test_simple_cycles_acyclic_tournamentz:TestCycleEnumeration.test_simple_cycles_acyclic_tournamentM  s‰   € ØˆÜ�J‰JÑB¤u¨Q£xÔBÓBˆØ×"Ñ" 1 bÔ)Ø×"Ñ" 1 b°DÐ"Ô9ä�q˜1‘u“ò 	NˆAØ×&Ñ& q¨"¸1Ð&Ô=Ø×&Ñ& q¨"¸1ÈÐ&ÕMñ	Nr$   c                 ó(  — t        j                  d«      }t        t        d«      «      }| j	                  ||g«       |j                  dd«       t        j                  |g d¢«       | j	                  ||g«       |j                  t        j                  t        dd«      «      «       t        t        dd«      «      }| j	                  |||g«       |j                  t        j                  t        dd«      «      «       t        t        dd«      «      }h d£}| j	                  ||«       t        |«      dk(  sJ ‚t        j                  d«      }|j                  t        j                  g d	¢«      j                  «       d
}| j	                  ||«       y )Nr1   r,   rQ   )r*   rI  éýÿÿÿéüÿÿÿé   r  >   ©r   r   r)   r*   r,   r-   r/   r0   ©r,   r-   r/   r0   r1   r2   r�   rE  ©r1   r2   r�   rE  r  é   é   r:  ©
r   r   r)   r*   r,   rE  r�   r2   r1   r0   ©
r,   r-   r/   r0   r1   r:  rX  rW  r  rE  ©r   r   r)   r*   r,   rE  r  rW  rX  r:  r1   r0   r/   )r  r�   rW  r)   rX  r,   r:  r1   r�   )
r   rg   rÛ   rA   rý   r3   Úadd_pathrh   r   rƒ   )rB   ÚtestGÚcyc1Úcyc2Úcyc3ré   s         r"   Útest_simple_cycles_graphz-TestCycleEnumeration.test_simple_cycles_graphW  s3  € Ü—‘˜qÓ!ˆÜ”U˜1“X‹ˆØ×"Ñ" 5¨4¨&Ô1à�‰�q˜"ÔÜ
�‰�Eš?Ô+Ø×"Ñ" 5¨4¨&Ô1à�‰”R—^‘^¤E¨!¨R£LÓ1Ô2Ü”U˜1˜b“\Ó"ˆØ×"Ñ" 5¨4°¨,Ô7à�‰”R—^‘^¤E¨!¨R£LÓ1Ô2Ü”U˜1˜b“\Ó"ˆò
ˆð 	×"Ñ" 5¨(Ô3Ü�8‹} Ò.Ð.Ð.ô, —‘˜rÓ"ˆØ�‰”R—^‘^Ò$AÓB×HÑHÔIØ"ˆØ×"Ñ" 5¨(Õ3r$   c           	      ó.  — t        j                  «       }g }t        d«      D ]Y  }t        j                  |t        |«      «       |j	                  |«       t        |«      D ]  \  }}| j                  |||¬«       Œ Œ[ t        j                  «       }d}g }t        d«      D ]r  }|j	                  |dk  r|n|dz
  «       |dk(  rŒ$t        j                  |t        |||z   «      «       ||z  }t        |«      D ]  \  }}| j                  |||¬«       Œ Œt y )Nr�   r  r   r)   r   )r   r^   rA   r   r  Ú	enumeraterý   r   )rB   Údré   r>   r—   rÙ   rÑ   Útops           r"   Útest_simple_cycles_boundedz/TestCycleEnumeration.test_simple_cycles_boundedŠ  s  € ô �J‰J‹LˆØˆÜ�r“ò 	AˆAÜ�L‰L˜œE !›HÔ%Ø�O‰O˜AÔÜ! (Ó+ò A‘��1Ø×*Ñ*¨1¨a¸aÐ*Õ@ñAð	Aô �H‰H‹JˆØˆØˆÜ�r“ò 	AˆAØ�O‰O  Q¢™A¨A°©EÔ2Ø�AŠvàÜ�L‰L˜œE # s¨Q¡wÓ/Ô0Ø�1‰HˆCÜ! (Ó+ò A‘��1Ø×*Ñ*¨1¨a¸aÐ*Õ@ñAñ	Ar$   c                 ó   — t        j                  d«      }t        j                  dt         j                  ¬«      }t        t        j                  |d¬«      «      g k(  sJ ‚t        t        j                  |d¬«      «      g k(  sJ ‚t        t        j
                  |d¬«      «      g k(  sJ ‚t        t        j
                  |d¬«      «      g k(  sJ ‚y )Nr,   )Úcreate_usingr   r  )r   rg   r^   rˆ   r‚   rê   )rB   r4   ÚDGs      r"   Ú%test_simple_cycles_bound_corner_casesz:TestCycleEnumeration.test_simple_cycles_bound_corner_cases¤  s¤   € Ü�N‰N˜1ÓˆÜ�^‰^˜A¬B¯J©JÔ7ˆÜ”B×$Ñ$ Q°QÔ7Ó8¸BÒ>Ð>Ð>Ü”B×$Ñ$ R°aÔ8Ó9¸RÒ?Ð?Ð?Ü”B×'Ñ'¨¸Ô:Ó;¸rÒAÐAÐAÜ”B×'Ñ'¨¸Ô;Ó<ÀÒBÐBÑBr$   c                 óþ  — t        j                  t        «      5  t        j                  «       }t        j
                  |d«      D ]  }J ‚ 	 d d d «       t        j                  t        «      5  t        j                  «       }t        j
                  |d«      D ]  }J ‚ 	 d d d «       t        j                  t        «      5  t        j                  «       }t        j                  |d«      D ]  }J ‚ 	 d d d «       t        j                  t        «      5  t        j                  «       }t        j                  |d«      D ]  }J ‚ 	 d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   Œ½xY w# 1 sw Y   ŒvxY w# 1 sw Y   y xY w)NrQ   )r   r\   Ú
ValueErrorr   r^   r‚   r   rê   rŒ   s      r"   Útest_simple_cycles_bound_errorz3TestCycleEnumeration.test_simple_cycles_bound_error¬  sA  € Ü�]‰]œ:Ó&ñ 	Ü—
‘
“ˆAÜ×%Ñ% a¨Ó,ò �Ø�uñ÷	ô
 �]‰]œ:Ó&ñ 	Ü—‘“
ˆAÜ×%Ñ% a¨Ó,ò �Ø�uñ÷	ô
 �]‰]œ:Ó&ñ 	Ü—‘“
ˆAÜ×(Ñ(¨¨BÓ/ò �Ø�uñ÷	ô
 �]‰]œ:Ó&ñ 	Ü—
‘
“ˆAÜ×(Ñ(¨¨BÓ/ò �Ø�uñ÷	ð 	÷	ñ 	ú÷
	ð 	ú÷
	ð 	ú÷
	ð 	ús/   š1EÁ-1EÃ 1E'Ä1E3ÅEÅE$Å'E0Å3E<c                 óZ  — t        dd«      D �cg c]  }| j                  |«      ‘Œ }}g d¢}| j                  ||d¬«       t        d«      D �cg c]  }||z  |z
  dz  ‘Œ }}t        d«      D �cg c]  }| j                  |«      ‘Œ }}| j                  ||d¬«       y c c}w c c}w c c}w )Nr)   r:  )r   r   r,   r�   r�   r%  r&  r'  r(  r)  r*  i  il  Tr  r@  )rB   r>   rÿ   ré   s       r"   Útest_chordless_cycles_cliquez1TestCycleEnumeration.test_chordless_cycles_cliqueÁ  s®   € Ü',¨Q°£|Ö4 !�D—F‘F˜1•IÐ4ˆÐ4ÚIˆØ×5Ñ5Ø�h¨$ð 	6ô 	
ô
 /4°B«iÖ8¨�Q˜‘U˜Q‘Y 1Ó$Ð8ˆÐ8Ü',¨R£yÖ1 !�D—F‘F˜1•IÐ1ˆÐ1Ø×5Ñ5Ø�h¨$ð 	6õ 	
ùò 5ùò 9ùÚ1s   �BÁB#Á/B()NFN)r¯   r°   r±   ÚstaticmethodrÊ   rÍ   rÒ   rå   rý   r  r  r	  r  r  r  r#  rA  rC  rF  rK  rO  ra  rf  rj  rm  ro  r:   r$   r"   rÆ   rÆ   Ý   s¿   „ Øñ$ó ð$ð ñ2ó ð2ð ñ,ó ð,òPð: ØØó5ðv ØØóò"WòGòGò6
ò>

òGò+JòZ#:òJ
ò$.
ò`Nò14òfAò4Còó*
r$   rÆ   c                   ó‚   — e Zd Ze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)ÚTestFindCyclec                 ó(   — g d¢| _         g d¢| _        y )Nr(   ))rQ   r   rv   rf   rf   rz   ©r*   r   )Únodesrƒ   )r5   s    r"   r6   zTestFindCycle.setup_classÖ  s   € â ˆŒ	ÚEˆ�	r$   c                 óÒ   — t        j                  | j                  «      }t        j                  t         j
                  j                  t         j                  || j                  «       y r9   )	r   r   rƒ   r   r\   Ú	exceptionÚNetworkXNoCycleÚ
find_cycleru  r‰   s     r"   Útest_graph_nocyclez TestFindCycle.test_graph_nocycleÛ  s8   € Ü�H‰H�T—Z‘ZÓ ˆÜ�‰”b—l‘l×2Ñ2´B·M±MÀ1ÀdÇjÁjÕQr$   c                 óÎ   — t        j                  | j                  «      }|j                  dd«       t	        t        j
                  || j                  «      «      }g d¢}||k(  sJ ‚y )Nr)   r   ©rv   rx   ry   ©r   r   rƒ   r3   rˆ   ry  ru  ©rB   r4   rü   Úx_s       r"   Útest_graph_cyclezTestFindCycle.test_graph_cycleß  sK   € Ü�H‰H�T—Z‘ZÓ ˆØ	�
‰
�1�aÔÜ”—‘˜q $§*¡*Ó-Ó.ˆÚ%ˆØ�BŠwˆ‰wr$   c                 óÒ   — t        j                  | j                  «      }|j                  dd«       t	        t        j
                  || j                  d ¬«      «      }g d¢}||k(  sJ ‚y )Nr)   r   ©Úorientationr|  r}  r~  s       r"   Útest_graph_orientation_nonez)TestFindCycle.test_graph_orientation_noneæ  sM   € Ü�H‰H�T—Z‘ZÓ ˆØ	�
‰
�1�aÔÜ”—‘˜q $§*¡*¸$Ô?Ó@ˆÚ%ˆØ�BŠwˆ‰wr$   c                 óþ   — t        j                  | j                  «      }|j                  dd«       t	        t        j
                  || j                  d¬«      «      }ddt        fddt        fddt        fg}||k(  sJ ‚y )Nr)   r   Úoriginalr‚  r   )r   r   rƒ   r3   rˆ   ry  ru  r   r~  s       r"   Útest_graph_orientation_originalz-TestFindCycle.test_graph_orientation_originalí  sf   € Ü�H‰H�T—Z‘ZÓ ˆØ	�
‰
�1�aÔÜ”—‘˜q $§*¡*¸*ÔEÓFˆØ�!”Wˆo  1¤g˜°°A´w°Ð@ˆØ�BŠwˆ‰wr$   c                 óª   — t        j                  | j                  «      }t        t        j                  || j
                  «      «      }ddg}||k(  sJ ‚y )Nrv   rf   ©r   r^   rƒ   rˆ   ry  ru  r~  s       r"   Útest_digraphzTestFindCycle.test_digraphô  sB   € Ü�J‰J�t—z‘zÓ"ˆÜ”—‘˜q $§*¡*Ó-Ó.ˆØ�fÐˆØ�BŠwˆ‰wr$   c                 ó®   — t        j                  | j                  «      }t        t        j                  || j
                  d ¬«      «      }ddg}||k(  sJ ‚y )Nr‚  rv   rf   r‰  r~  s       r"   Útest_digraph_orientation_nonez+TestFindCycle.test_digraph_orientation_noneú  sD   € Ü�J‰J�t—z‘zÓ"ˆÜ”—‘˜q $§*¡*¸$Ô?Ó@ˆØ�fÐˆØ�BŠwˆ‰wr$   c                 óÊ   — t        j                  | j                  «      }t        t        j                  || j
                  d¬«      «      }ddt        fddt        fg}||k(  sJ ‚y )Nr†  r‚  r   r   ©r   r^   rƒ   rˆ   ry  ru  r   r~  s       r"   Ú!test_digraph_orientation_originalz/TestFindCycle.test_digraph_orientation_original   sP   € Ü�J‰J�t—z‘zÓ"ˆÜ”—‘˜q $§*¡*¸*ÔEÓFˆØ�!”Wˆo  1¤g˜Ð/ˆØ�BŠwˆ‰wr$   c                 óÜ   — t        j                  | j                  «      }t        t        j                  || j
                  «      «      }ddg}|d   |d   k(  sJ ‚|d   d d |d   d d k(  sJ ‚y )N©r   r   r   )r   r   r   r   r   r)   )r   rc   rƒ   rˆ   ry  ru  r~  s       r"   Útest_multigraphzTestFindCycle.test_multigraph  sm   € Ü�M‰M˜$Ÿ*™*Ó%ˆÜ”—‘˜q $§*¡*Ó-Ó.ˆØ˜Ð#ˆà�‰t�r˜!‘uŠ}Ðˆ}Ø�‰t�B�Qˆx˜2˜a™5  !˜9Ò$Ð$Ñ$r$   c                 óÜ   — t        j                  | j                  «      }t        t        j                  || j
                  «      «      }ddg}|d   |d   k(  sJ ‚|d   d d |d   d d k(  sJ ‚y )Nr‘  )r   r   r   r   r   r)   )r   r"  rƒ   rˆ   ry  ru  r~  s       r"   Útest_multidigraphzTestFindCycle.test_multidigraph  sm   € Ü�O‰O˜DŸJ™JÓ'ˆÜ”—‘˜q $§*¡*Ó-Ó.ˆØ˜Ð#ˆØ�‰t�r˜!‘uŠ}Ðˆ}Ø�‰t�B�Qˆx˜2˜a™5  !˜9Ò$Ð$Ñ$r$   c                 óÊ   — t        j                  | j                  «      }t        t        j                  || j
                  d¬«      «      }ddt        fddt        fg}||k(  sJ ‚y )NÚignorer‚  r   r   rŽ  r~  s       r"   Útest_digraph_ignorez!TestFindCycle.test_digraph_ignore  sP   € Ü�J‰J�t—z‘zÓ"ˆÜ”—‘˜q $§*¡*¸(ÔCÓDˆØ�!”Wˆo  1¤g˜Ð/ˆØ�BŠwˆ‰wr$   c                 óÊ   — t        j                  | j                  «      }t        t        j                  || j
                  d¬«      «      }ddt        fddt        fg}||k(  sJ ‚y )NÚreverser‚  r   r   )r   r^   rƒ   rˆ   ry  ru  r   r~  s       r"   Útest_digraph_reversez"TestFindCycle.test_digraph_reverse  sP   € Ü�J‰J�t—z‘zÓ"ˆÜ”—‘˜q $§*¡*¸)ÔDÓEˆØ�!”Wˆo  1¤g˜Ð/ˆØ�BŠwˆ‰wr$   c                 ó&  — t        j                  | j                  «      }t        t        j                  || j
                  d¬«      «      }dddt        fdddt        fg}|d   |d   k(  sJ ‚|d   d d |d   d d k(  sJ ‚|d   d   |d   d   k(  sJ ‚y )Nr–  r‚  r   r   r)   r*   )r   r"  rƒ   rˆ   ry  ru  r   r~  s       r"   Útest_multidigraph_ignorez&TestFindCycle.test_multidigraph_ignore!  sŸ   € Ü�O‰O˜DŸJ™JÓ'ˆÜ”—‘˜q $§*¡*¸(ÔCÓDˆØ�!�QœÐ  1 a¨¬GÐ"4Ð5ˆØ�‰t�r˜!‘uŠ}Ðˆ}Ø�‰t�B�Qˆx˜2˜a™5  !˜9Ò$Ð$Ð$Ø�‰t�A‰w˜"˜Q™% ™(Ò"Ð"Ñ"r$   c                 ó®   — t        j                  g d¢«      }t        t        j                  |g d¢d¬«      «      }dddt        fdddt
        fg}||k(  sJ ‚y )N)rv   rx   rx   rr   r–  r‚  r   r)   r   )r   r"  rˆ   ry  r   r   r~  s       r"   Útest_multidigraph_ignore2z'TestFindCycle.test_multidigraph_ignore2)  sO   € ä�O‰OÒ4Ó5ˆÜ”—‘˜q¢)¸ÔBÓCˆØ�!�QœÐ  1 a¨¬GÐ"4Ð5ˆØ�BŠwˆ‰wr$   c                 ó¶   — t        j                  g d¢«      }t        j                  t         j                  j
                  t         j                  |g d¢d¬«       y )N)rv   rx   r  )r,   r)   r  r†  r‚  )r   r"  r   r\   rw  rx  ry  r‰   s     r"   Útest_multidigraph_originalz(TestFindCycle.test_multidigraph_original0  s<   € ô
 �O‰OÒ<Ó=ˆÜ�‰Ü�L‰L×(Ñ(Ü�M‰MØÚØ"ö	
r$   c                 ó.  — t        j                  g d¢«      }t        j                  t         j                  j
                  t         j                  |d¬«       t        t        j                  |d¬«      «      }|ddt        fddt        fddt        fgk(  sJ ‚y )N)rv   rw   rx   r†  r‚  r–  r   r   r)   )
r   r^   r   r\   rw  rx  ry  rˆ   r   r   )rB   r4   rü   s      r"   Útest_dagzTestFindCycle.test_dag>  sr   € Ü�J‰JÒ/Ó0ˆÜ�‰Ü�L‰L×(Ñ(¬"¯-©-¸È
õ	
ô ”—‘˜q¨hÔ7Ó8ˆØ�a˜œG�_ q¨!¬W o¸¸1¼g°ÐGÒGÐGÑGr$   c                 ó¶  — t        j                  «       }|j                  g d¢«       t        j                  t         j
                  t         j                  |d¬«       t        t        j                  |d«      «      }ddg}||k(  sJ ‚t        t        j                  |d«      «      }ddg}||k(  sJ ‚t        t        j                  |«      «      }ddg}||k(  sJ ‚y )N)rf   ry   rx   rz   r   ©rá   r   rx   rz   r)   )r   r^   r­   r   r\   rx  ry  rˆ   r~  s       r"   Útest_prev_exploredz TestFindCycle.test_prev_exploredF  s¶   € ô �J‰J‹LˆØ	×ÑÒ9Ô:Ü�‰”b×(Ñ(¬"¯-©-¸À1ÕEÜ”—‘˜q !Ó$Ó%ˆØ�fÐˆØ�BŠwˆˆwä”—‘˜q !Ó$Ó%ˆØ�fÐˆØ�BŠwˆˆwä”—‘˜qÓ!Ó"ˆØ�fÐˆØ�BŠwˆ‰wr$   c                 ó"  — t        j                  «       }|j                  g d¢«       t        j                  t         j
                  t         j                  |d¬«       t        j                  t         j
                  t         j                  |«       y )N)rx   ry   rt  r¥   r   r¤  )r   r^   r­   r   r\   rx  ry  r‰   s     r"   Útest_no_cyclezTestFindCycle.test_no_cycleX  sT   € ô �J‰J‹LˆØ	×ÑÒ9Ô:Ü�‰”b×(Ñ(¬"¯-©-¸À1ÕEÜ�‰”b×(Ñ(¬"¯-©-¸Õ;r$   N)r¯   r°   r±   r²   r6   rz  r€  r„  r‡  rŠ  rŒ  r�  r’  r”  r—  rš  rœ  rž  r   r¢  r¥  r§  r:   r$   r"   rr  rr  Õ  sm   „ ØñFó ðFòRòòòòòòò%ò%òòò#òò
òHòó$<r$   rr  c                 ó6   — t        | «      t        |«      k(  sJ ‚y r9   rG   )rC   r   s     r"   Úassert_basis_equalr©  a  s   € Ü�!‹9œ˜q›	Ò!Ð!Ñ!r$   c                   óL   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚTestMinimumCycleBasisc                 ó–   — t        j                  «       }t        j                  |g d¢d¬«       |j                  ddd¬«       || _        y )N)r   r)   r*   r,   r   ©Úweightr)   r,   r-   )r   r   r   r3   Údiamond_graph)r5   ÚTs     r"   r6   z!TestMinimumCycleBasis.setup_classf  s7   € ä�H‰H‹JˆÜ
�‰�Qš¨QÕ/Ø	�
‰
�1�a ˆ
Ô"ØˆÕr$   c                 óf   — t        j                  | j                  «      }t        |g d¢g d¢g«       y )N©r)   r,   r   )r*   r,   r)   ©r   Úminimum_cycle_basisr¯  r©  ©rB   Úmcbs     r"   Útest_unweighted_diamondz-TestMinimumCycleBasis.test_unweighted_diamondm  s'   € Ü×$Ñ$ T×%7Ñ%7Ó8ˆÜ˜3¢ªIÐ 6Õ7r$   c                 ój   — t        j                  | j                  d¬«      }t        |g d¢g d¢g«       y )Nr®  r­  r²  )r,   r*   r)   r   r³  rµ  s     r"   Útest_weighted_diamondz+TestMinimumCycleBasis.test_weighted_diamondq  s)   € Ü×$Ñ$ T×%7Ñ%7ÀÔIˆÜ˜3¢ªLÐ 9Õ:r$   c                 ó6  — d}t        dd|z   «      D ]…  }t        j                  dd|¬«      }|j                  «       }|j	                  «       }t        j
                  |«      }t        j                  |«      }t        |«      ||z
  |z   k(  sJ ‚t        |«       Œ‡ y )Nr�   iÒ  g333333Ó?©Úseed)	rA   r   Úerdos_renyi_graphÚnumber_of_nodesÚnumber_of_edgesÚnumber_connected_componentsr´  r   r#   )rB   Úntrialr¼  ÚrgÚnnodesÚnedgesÚncompr¶  s           r"   Útest_dimensionalityz)TestMinimumCycleBasis.test_dimensionalityu  s”   € àˆÜ˜$  v¡Ó.ò 	#ˆDÜ×%Ñ% b¨#°DÔ9ˆBØ×'Ñ'Ó)ˆFØ×'Ñ'Ó)ˆFÜ×2Ñ2°2Ó6ˆEä×(Ñ(¨Ó,ˆCÜ�s“8˜v¨™°Ñ6Ò6Ð6Ð6Ü˜cÕ"ñ	#r$   c                 ó–   — t        j                  d«      }t        j                  |«      }t        d„ |D «       «      sJ ‚t	        |«       y )Nr-   c              3   ó8   K  — | ]  }t        |«      d k(  –— Œ y­wr-  r.  )r;   Úcycles     r"   r?   z<TestMinimumCycleBasis.test_complete_graph.<locals>.<genexpr>…  s   è ø€ Ò4 u”3�u“: •?Ñ4ùs   ‚)r   rÈ   r´  rÝ   r#   )rB   Úcgr¶  s      r"   Útest_complete_graphz)TestMinimumCycleBasis.test_complete_graph‚  s>   € Ü×Ñ˜qÓ!ˆÜ×$Ñ$ RÓ(ˆÜÑ4°Ô4Ô4Ð4Ð4Ü˜#Õr$   c                 ó^   — t        j                  dd«      }t        j                  |«      rJ ‚y )Nr*   )r   Úbalanced_treer´  )rB   Útgs     r"   Útest_tree_graphz%TestMinimumCycleBasis.test_tree_graphˆ  s+   € Ü×Ñ˜a Ó#ˆÜ×)Ñ)¨"Ô-Ð-Ð-Ð-r$   c                 ó€  ‡‡— t        j                  «       Št        t        j                  ‰«      «      }g d¢g d¢g d¢g d¢g d¢g d¢gŠt	        |«      t	        ‰«      k(  sJ ‚t        ˆfd„|D «       «      sJ ‚|D ]7  }t        ˆfd„t         j                  j                  |d	¬
«      D «       «      rŒ7J ‚ t        |«       y )N)r,   r2   r0   r-   r   )r   r)   r*   r,   r   )r   r/   r1   r-   r   )r,   r*   r1   r-   r   )r   r/   r2   r,   r   )r   r)   r0   r-   r   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr9   r:   ©r;   rJ   ré   s     €r"   r?   z<TestMinimumCycleBasis.test_petersen_graph.<locals>.<genexpr>˜  ó   øè ø€ Ò. Q�1˜”=Ñ.ùó   ƒc              3   óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr9   r×   )r;   ÚurJ  r4   s      €r"   r?   z<TestMinimumCycleBasis.test_petersen_graph.<locals>.<genexpr>œ  s    øè ø€ ÒV©D¨A¨q�q—z‘z ! Q×'ÑVùs   ƒ"T)Úcyclic)	r   Úpetersen_graphrˆ   r´  r   rÝ   Úutilsr·   r#   )rB   r¶  rJ   r4   ré   s      @@r"   Útest_petersen_graphz)TestMinimumCycleBasis.test_petersen_graphŒ  s±   ù€ Ü×ÑÓˆÜ”2×)Ñ)¨!Ó,Ó-ˆâÚÚÚÚÚð
ˆô �3‹xœ3˜x›=Ò(Ð(Ð(ÜÓ.¨#Ô.Ô.Ð.Ð.ð ò 	WˆAÜÓV´B·H±H×4EÑ4EÀaÐPTÐ4EÓ4UÔVÕVÐVÐVð	Wô 	˜#Õr$   c           	      óx  — d}t        j                  |«      }|j                  |j                  D ��cg c]
  \  }}||df‘Œ c}}«       |j                  t        j                  |«      j                  D ��cg c]
  \  }}||df‘Œ c}}«       t        j
                  |d¬«      }t        |«       y c c}}w c c}}w )Nr1   r2   r   r®  r­  )r   rÈ   Úadd_weighted_edges_fromrƒ   rg   r´  r#   )rB   ÚNrÊ  rÖ  rJ  r¶  s         r"   Ú,test_gh6787_variable_weighted_complete_graphzBTestMinimumCycleBasis.test_gh6787_variable_weighted_complete_graph   s“   € ØˆÜ×Ñ˜qÓ!ˆØ
×"Ñ"¸"¿(¹(×#C±$°!°Q Q¨¨1¢IÓ#CÔDØ
×"Ñ"¼"¿.¹.ÈÓ:K×:QÑ:Q×#R±$°!°Q Q¨¨1¢IÓ#RÔSÜ×$Ñ$ R°Ô9ˆÜ˜#Õùó $DùÛ#Rs   ²B0
Á6B6
c                 ó¾  ‡— t        j                  d«      }|j                  ddgd¬«       g d¢g d¢g d¢gŠt        t        j                  |d¬«      «      }t        |«      t        ‰«      k(  sJ ‚t        ˆfd	„|D «       «      sJ ‚g d¢g d¢g d
¢gŠt        t        j                  |«      «      }t        |«      t        ‰«      k(  sJ ‚t        ˆfd„|D «       «      sJ ‚y )Nr,   )r   r)   r�   )r   r*   r�   Údistr­  )r   r*   r   )r*   r)   r   r   )r   r)   r   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr9   r:   rÒ  s     €r"   r?   zMTestMinimumCycleBasis.test_gh6787_and_edge_attribute_names.<locals>.<genexpr>®  rÓ  rÔ  )r*   r)   r   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr9   r:   rÒ  s     €r"   r?   zMTestMinimumCycleBasis.test_gh6787_and_edge_attribute_names.<locals>.<genexpr>´  rÓ  rÔ  )r   rg   rÜ  rˆ   r´  r   rÝ   )rB   r4   r¶  ré   s      @r"   Ú$test_gh6787_and_edge_attribute_namesz:TestMinimumCycleBasis.test_gh6787_and_edge_attribute_names¨  sÃ   ø€ Ü�N‰N˜1ÓˆØ	×!Ñ! :¨zÐ":À6Ð!ÔJÚš|ªYÐ7ˆÜ”2×)Ñ)¨!°FÔ;Ó<ˆÜ�3‹xœ3˜x›=Ò(Ð(Ð(ÜÓ.¨#Ô.Ô.Ð.Ð.ò šyª)Ð4ˆÜ”2×)Ñ)¨!Ó,Ó-ˆÜ�3‹xœ3˜x›=Ò(Ð(Ð(ÜÓ.¨#Ô.Ô.Ð.Ñ.r$   N)r¯   r°   r±   r²   r6   r·  r¹  rÆ  rË  rÏ  rÚ  rÞ  rã  r:   r$   r"   r«  r«  e  s<   „ Øñó ðò8ò;ò#òò.òò(ó/r$   r«  c                   óä  — e Zd Zej                  j                  d ej                  «       df ej                  «       df ej                  «       df ej                  «       df ej                  «       df ej                  dd¬«      ef ej                  d«      ef ej                   e e ed«      «       e edd«      «      «      «      df ej                  g d¢«      d	ff	«      d
„ «       Zy)Ú	TestGirth)r4   ré   r,   r-   r/   r�   rç   r»  ))r   r/   )r   r1   )r   r2   )r   r1   )r)   r1   )r)   r2   )r,   r2   )r-   r2   )r/   r1   )r/   r2   )r0   r1   r*   c                 ó8   — t        j                  |«      |k(  sJ ‚y r9   )r   Úgirth)rB   r4   ré   s      r"   Ú
test_girthzTestGirth.test_girth¸  s   € ô@ �x‰x˜‹{˜hÒ&Ð&Ñ&r$   N)r¯   r°   r±   r   ÚmarkÚparametrizer   Úchvatal_graphÚtutte_graphrØ  Úheawood_graphÚpappus_graphÚrandom_labeled_treer   Úempty_graphr   r   r»   rA   rè  r:   r$   r"   rå  rå  ·  sü   „ Ø‡[�[×ÑØàˆR×ÑÓ Ð#ØˆR�^‰^Ó˜qÐ!ØˆR×ÑÓ  !Ð$ØˆR×ÑÓ Ð#ØˆR�_‰_Ó Ð"Ø#ˆR×#Ñ# B¨RÔ0°#Ð6ØˆR�^‰^˜BÓ Ð%ØˆR�X‰X‘e™K©¨a«Ó1±;¹uÀQÈ»|Ó3LÓMÓNÐPQÐRà�—‘òóð ð!ð	
óñ>'ó?ñ>'r$   rå  )rë   Ú	itertoolsr   r   r   Úmathr   r   Únetworkxr   Ú%networkx.algorithms.traversal.edgedfsr   r   r#   r&   r·   r»   r¾   rÂ   rÄ   rÆ   rr  r©  r«  rå  r:   r$   r"   ú<module>rõ     s}   ðÛ ß (Ñ (Ý ã ã ß Bò-÷eFñ eFòPò,ò%ò5ò9÷p
ñ p
÷pI<ñ I<òX"÷O/ñ O/÷d!'ò !'r$   