Ë
    D^(hÅ$  ã                   óH   — d dl Z d dlZd dlmZ  G d„ d«      Z G d„ d«      Zy)é    N)Úconvert_node_labels_to_integersc                   óT   — e 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)ÚTestCliquesc           	      óŽ  — g d¢}t        t        j                  j                  |«      d¬«      | _        t        t        j                  | j                  «      «      | _        t        j                  d«      }t        j                  |t        d«      D �ci c]  }||dz   “Œ
 c}«      }|j                  g d¢«       || _        y c c}w )N)é   é   r   r   é   r   r	   é   r
   r
   r
   r
   )Úfirst_labelé   ))r	   r   )r	   é   )r	   r   )r
   r   )r   r   )ÚcnltiÚnxÚ
generatorsÚhavel_hakimi_graphÚGÚlistÚfind_cliquesÚclÚcomplete_graphÚrelabel_nodesÚrangeÚremove_edges_fromÚH)ÚselfÚzr   Úis       úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_clique.pyÚsetup_methodzTestCliques.setup_method   s‘   € Ú-ˆÜ”r—}‘}×7Ñ7¸Ó:ÈÔJˆŒÜ”r—‘ t§v¡vÓ.Ó/ˆŒÜ×Ñ˜aÓ ˆÜ×Ñ˜Q´5¸³8Ö <¨a  A¨¡E¡Ò <Ó=ˆØ	×ÑÒDÔEØˆ�ùò !=s   ÂC
c                 óˆ  — t        t        j                  | j                  «      «      }t        j                  | j                  «      }g d¢g d¢g d¢ddgddgg}t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚y )N©r	   r   r
   r   ©r	   r   r   )r   r   é   é   é	   é
   é   )r   r   r   r   Úfind_cliques_recursiveÚsortedÚmap©r   r   ÚrclÚexpecteds       r   Útest_find_cliques1zTestCliques.test_find_cliques1   s�   € Ü”"—/‘/ $§&¡&Ó)Ó*ˆÜ×'Ñ'¨¯©Ó/ˆÚ ¢)ªY¸¸A¸ÀÀRÀÐIˆÜ”cœ& "“oÓ&¬&´´V¸SÓ1AÓ*BÒBÐBÐBÜ”cœ& "“oÓ&¬&´´V¸XÓ1FÓ*GÒGÐGÑGó    c                 óÈ  ‡— | j                   j                  dd«       t        t        j                  | j                   «      «      }t        t        j
                  | j                   «      «      }t        t        t        |«      «      t        t        t        |«      «      k(  sJ ‚h d£h d£h d£ddhddhgŠt        ‰«      t        |«      k(  sJ ‚t        ˆfd	„|D «       «      sJ ‚y )
Nr
   >   r
   r	   r   r   >   r	   r   r   >   r   r   r#   r$   r%   r&   r'   c              3   ó8   •K  — | ]  }t        |«      ‰v –— Œ y ­w©N)Úset)Ú.0ÚcÚanswers     €r   ú	<genexpr>z-TestCliques.test_selfloops.<locals>.<genexpr>   s   øè ø€ Ò0¨”3�q“6˜VÔ#Ñ0ùs   ƒ)r   Úadd_edger   r   r   r(   r3   r*   Ú	frozensetÚlenÚall)r   r   r,   r6   s      @r   Útest_selfloopszTestCliques.test_selfloops   s­   ø€ Ø�‰�‰˜˜1ÔÜ”"—/‘/ $§&¡&Ó)Ó*ˆÜ”2×,Ñ,¨T¯V©VÓ4Ó5ˆÜ”3”y "Ó%Ó&¬#¬c´)¸SÓ.AÓ*BÒBÐBÐBÚ¢	ª9°q¸!°f¸rÀ2¸hÐGˆÜ�6‹{œc "›gÒ%Ð%Ð%ÜÓ0¨RÔ0Ô0Ð0Ñ0r/   c                 ó¨   — t        t        j                  | j                  «      «      }t	        t        t        |«      «      ddgg d¢ddgg d¢gk(  sJ ‚y )Nr
   r	   )r
   r   r   r   r   )r   r   r   )r   r   r   r   r)   r*   )r   Úhcls     r   Útest_find_cliques2zTestCliques.test_find_cliques2!   sD   € Ü”2—?‘? 4§6¡6Ó*Ó+ˆÜ”cœ& #Ó&Ó'¨Q°¨F²LÀ1ÀaÀ&Ê)Ð+TÒTÐTÑTr/   c                 óJ  — t        t        j                  | j                  dg«      «      }t        j                  | j                  dg«      }g d¢g d¢g}t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        j                  | j                  ddg«      «      }t        j                  | j                  ddg«      }g d¢g}t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        j                  | j                  g d¢«      «      }t        j                  | j                  g d¢«      }g d¢g}t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        j                  | j                  g d¢«      «      }t        j                  | j                  g d¢«      }g d¢g}t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        t        t
        |«      «      t        t        t
        |«      «      k(  sJ ‚t        j                  t        «      5  t        t        j                  | j                  g d¢«      «       d d d «       t        j                  t        «      5  t        t        j                  | j                  g d¢«      «       d d d «       y # 1 sw Y   ŒWxY w# 1 sw Y   y xY w)Nr	   r!   r"   r   )r	   r   r   r
   )
r   r   r   r   r(   r)   r*   ÚpytestÚraisesÚ
ValueErrorr+   s       r   Útest_find_cliques3zTestCliques.test_find_cliques3%   s•  € ô ”"—/‘/ $§&¡&¨1¨#Ó.Ó/ˆÜ×'Ñ'¨¯©°°Ó4ˆÚ ¢)Ð,ˆÜ”cœ& #Ó&Ó'¬6´#´f¸hÓ2GÓ+HÒHÐHÐHÜ”cœ& "“oÓ&¬&´´V¸XÓ1FÓ*GÒGÐGÐGä”"—/‘/ $§&¡&¨1¨a¨&Ó1Ó2ˆÜ×'Ñ'¨¯©°°A°Ó7ˆÚ �>ˆÜ”cœ& #Ó&Ó'¬6´#´f¸hÓ2GÓ+HÒHÐHÐHÜ”cœ& "“oÓ&¬&´´V¸XÓ1FÓ*GÒGÐGÐGä”"—/‘/ $§&¡&ª)Ó4Ó5ˆÜ×'Ñ'¨¯©²	Ó:ˆÚ�;ˆÜ”cœ& #Ó&Ó'¬6´#´f¸hÓ2GÓ+HÒHÐHÐHÜ”cœ& "“oÓ&¬&´´V¸XÓ1FÓ*GÒGÐGÐGä”"—/‘/ $§&¡&ª)Ó4Ó5ˆÜ×'Ñ'¨¯©²	Ó:ˆÚ�;ˆÜ”cœ& #Ó&Ó'¬6´#´f¸hÓ2GÓ+HÒHÐHÐHÜ”cœ& "“oÓ&¬&´´V¸XÓ1FÓ*GÒGÐGÐGä�]‰]œ:Ó&ñ 	8Ü”—‘ §¡ªÓ6Ô7÷	8ô �]‰]œ:Ó&ñ 	BÜ”×*Ñ*¨4¯6©6²<Ó@ÔA÷	Bð 	B÷	8ð 	8ú÷	Bð 	Bús   Ì,NÍ,NÎNÎN"c                 ój  — | j                   }t        j                  |d«      dk(  sJ ‚t        t        j                  |dg«      j	                  «       «      dgk(  sJ ‚t        t        j                  |ddg«      j	                  «       «      ddgk(  sJ ‚t        j                  |ddg«      dddœk(  sJ ‚t        j                  |d«      dk(  sJ ‚t        j                  |«      ddddddddddddœk(  sJ ‚t        j                  |t        |«      ¬«      ddddddddddddœk(  sJ ‚t        j                  |g d¢¬«      ddddœk(  sJ ‚t        j                  || j
                  ¬«      ddddddddddddœk(  sJ ‚t        j                  |t        |«      | j
                  ¬«      ddddddddddddœk(  sJ ‚y )Nr
   r	   ©r
   r	   ©r
   r	   r   r   r   r   r#   r$   r%   r&   r'   )Únodes)r	   r   r   ©Úcliques)r   r   Únumber_of_cliquesr   Úvaluesr   ©r   r   s     r   Útest_number_of_cliquesz"TestCliques.test_number_of_cliquesF   s  € Ø�F‰FˆÜ×#Ñ# A qÓ)¨QÒ.Ð.Ð.Ü”B×(Ñ(¨¨Q¨CÓ0×7Ñ7Ó9Ó:¸q¸cÒAÐAÐAÜ”B×(Ñ(¨¨Q°¨FÓ3×:Ñ:Ó<Ó=À!ÀQÀÒGÐGÐGÜ×#Ñ# A¨¨1 vÓ.°a¸A±,Ò>Ð>Ð>Ü×#Ñ# A qÓ)¨QÒ.Ð.Ð.Ü×#Ñ# AÓ&ØØØØØØØØØØØñ+
ò 
ð 	
ð 
ô ×#Ñ# A¬T°!«WÔ5ØØØØØØØØØØØñ:
ò 
ð 	
ð 
ô ×#Ñ# AªYÔ7¸qÀQÈ1Ñ;MÒMÐMÐMÜ×#Ñ# A¨t¯w©wÔ7ØØØØØØØØØØØñ<
ò 
ð 	
ð 
ô ×#Ñ# A¤t¨A£w¸¿¹Ô@ØØØØØØØØØØØñE
ò 
ð 	
ñ 
r/   c                 óò  — | j                   }t        j                  |d«      dk(  sJ ‚t        t        j                  |dg«      j	                  «       «      dgk(  sJ ‚t        t        j                  |ddg«      j	                  «       «      ddgk(  sJ ‚t        j                  |ddg«      dddœk(  sJ ‚t        j                  |d«      dk(  sJ ‚t        j                  |«      ddddddddddddœk(  sJ ‚t        j                  || j
                  ¬«      ddddddddddddœk(  sJ ‚t        j                  |ddg| j
                  ¬«      dddœk(  sJ ‚t        j                  |d| j
                  ¬«      dk(  sJ ‚y )Nr
   r   r	   rF   r   rG   rI   )r   r   Únode_clique_numberr   rL   r   rM   s     r   Útest_node_clique_numberz#TestCliques.test_node_clique_numberƒ   sœ  € Ø�F‰FˆÜ×$Ñ$ Q¨Ó*¨aÒ/Ð/Ð/Ü”B×)Ñ)¨!¨a¨SÓ1×8Ñ8Ó:Ó;À¸sÒBÐBÐBÜ”B×)Ñ)¨!¨a°¨VÓ4×;Ñ;Ó=Ó>À1ÀaÀ&ÒHÐHÐHÜ×$Ñ$ Q¨¨A¨Ó/°q¸Q±<Ò?Ð?Ð?Ü×$Ñ$ Q¨Ó*¨aÒ/Ð/Ð/Ü×$Ñ$ QÓ'ØØØØØØØØØØØñ,
ò 
ð 	
ð 
ô ×$Ñ$ Q°·±Ô8ØØØØØØØØØØØñ=
ò 
ð 	
ð 
ô ×$Ñ$ Q¨¨A¨¸¿¹Ô@ÈÈaÁLÒPÐPÐPÜ×$Ñ$ Q¨°4·7±7Ô;¸qÒ@Ð@Ñ@r/   c                 ó®  — | j                   }t        j                  |«      }t        |«      g d¢k(  sJ ‚t        j                  |t        dd«      «      }|j                  |j                  k(  sJ ‚t        j                  |t        dd«      «      }t        j                  |t        dd«      D �ci c]  }| |“Œ c}«      }t        |«      g d¢k(  sJ ‚y c c}w )N)éûÿÿÿéüÿÿÿéýÿÿÿéþÿÿÿéÿÿÿÿr
   r	   r   r   r   r   r#   r$   r%   r&   r'   r
   é   rS   r   r   )r
   r	   r   r   r   )r   r   Úmake_clique_bipartiter)   Úprojected_graphr   Úadjr   )r   r   ÚBr   ÚH1Úvs         r   Útest_make_clique_bipartitez&TestCliques.test_make_clique_bipartite§   s²   € Ø�F‰FˆÜ×$Ñ$ QÓ'ˆÜ�a‹yÒSÒSÐSÐSä×Ñ˜q¤%¨¨2£,Ó/ˆØ�u‰u˜Ÿ™Š~Ðˆ~ä×Ñ ¤5¨¨Q£<Ó0ˆä×Ñ˜b´%¸¸1³+Ö">¨Q A 2 q¡5Ò">Ó?ˆÜ�b‹zš_Ò,Ð,Ñ,ùò #?s   Â-C
c           	      óV  — | j                   }t        j                  |«      }t        j                  |t	        dd«      «      }t        j
                  |t	        dd«      D �ci c]	  }| |dz
  “Œ c}«      }t        j                  |«      }|j                  |j                  k(  sJ ‚yc c}w )z¦Tests that the maximal clique graph is the same as the bipartite
        clique graph after being projected onto the nodes representing the
        cliques.

        rS   r   r
   r   N)r   r   rY   rZ   r   r   Úmake_max_clique_graphr[   )r   r   r\   r]   r^   ÚH2s         r   Útest_make_max_clique_graphz&TestCliques.test_make_max_clique_graph´   s�   € ð �F‰FˆÜ×$Ñ$ QÓ'ˆä×Ñ ¤5¨¨Q£<Ó0ˆô ×Ñ˜b´e¸A¸q³kÖ"B° A 2 q¨1¡u¡9Ò"BÓCˆÜ×%Ñ% aÓ(ˆØ�v‰v˜Ÿ™ÒÐÑùò #Cs   Á B&
c                 óÔ   — t        j                  t        j                  «      5  t	        t        j
                  t        j                  «       «      «       d d d «       y # 1 sw Y   y xY wr2   )rA   rB   r   ÚNetworkXNotImplementedÚnextr   ÚDiGraph)r   s    r   Útest_directedzTestCliques.test_directedÄ   s@   € Ü�]‰]œ2×4Ñ4Ó5ñ 	0Ü”—‘¤§¡£Ó.Ô/÷	0÷ 	0ñ 	0ús   ¤1AÁA'c                 ó¸   — t        j                  «       }t        t        j                  |«      «      g k(  sJ ‚t        t        j                  |«      «      g k(  sJ ‚y r2   )r   ÚGraphr)   r   r(   rM   s     r   Útest_find_cliques_trivialz%TestCliques.test_find_cliques_trivialÈ   sG   € Ü�H‰H‹JˆÜ”b—o‘o aÓ(Ó)¨RÒ/Ð/Ð/Ü”b×/Ñ/°Ó2Ó3°rÒ9Ð9Ñ9r/   c                 óø   — t        j                  g d¢«      }t        j                  g d¢«      }|j                  d«       t        j                  t        j                  |t         j                  ¬«      |«      sJ ‚y )N)rF   )r   r
   )r   r
   )r   r   ))r   r
   )r   r	   rF   r   )Úcreate_using)r   rj   Úadd_nodeÚis_isomorphicra   )r   r   ÚEs      r   Ú'test_make_max_clique_graph_create_usingz3TestCliques.test_make_max_clique_graph_create_usingÍ   sS   € Ü�H‰HÒ5Ó6ˆÜ�H‰HÒ-Ó.ˆØ	�
‰
�1ŒÜ×Ñ¤× 8Ñ 8¸ÌÏÉÔ RÐTUÔVÐVÑVr/   N)Ú__name__Ú
__module__Ú__qualname__r   r.   r<   r?   rD   rN   rQ   r_   rc   rh   rk   rq   © r/   r   r   r      sF   „ òòHò1òUòBòB;
òz"AòH-ò ò 0ò:ó
Wr/   r   c                   ó   — e Zd Zd„ Zy)ÚTestEnumerateAllCliquesc                 ó¬  — t        j                  «       }g d¢}|j                  |«       t        t        j                  |«      «      }t        t        t        |«      «      }t        |«      |k(  sJ ‚g dg‘dg‘dg‘dg‘dg‘dg‘dg‘ddg‘g d	¢‘g d
¢‘g d¢‘ddg‘g d¢‘g d¢‘g d¢‘ddg‘g d¢‘ddg‘ddg‘g d¢‘g d¢‘g d¢‘g d¢‘ddg‘g d¢‘ddg‘ddg‘ddg‘g d¢‘g d¢‘g d¢‘ddg‘g d¢‘ddg‘g d¢‘ddg‘ddg‘g d¢‘ddg‘ddg‘ddg‘g d¢‘g d¢‘g d¢‘g d¢‘}t        t        t        |«      «      t        t        t        |«      «      k(  sJ ‚y )N))ÚaÚb)ry   r5   )ry   Úd)ry   Úe)rz   r5   )rz   r{   )rz   r|   )r5   r{   )r5   r|   )r{   r|   )Úfrz   )r}   r5   )r}   Úg)r~   r}   )r~   r5   )r~   r{   )r~   r|   ry   rz   r5   r{   r|   r}   r~   )ry   rz   r{   )ry   rz   r{   r|   )ry   rz   r|   )ry   r5   r{   )ry   r5   r{   r|   )ry   r5   r|   )ry   r{   r|   )rz   r5   r{   )rz   r5   r{   r|   )rz   r5   r|   )rz   r5   r}   )rz   r{   r|   )r5   r{   r|   )r5   r{   r|   r~   )r5   r{   r~   )r5   r|   r~   )r5   r}   r~   )r{   r|   r~   )ry   rz   r5   )ry   rz   r5   r{   )ry   rz   r5   r{   r|   )ry   rz   r5   r|   )r   rj   Úadd_edges_fromr   Úenumerate_all_cliquesr*   r:   r)   )r   r   Úedges_fig_4rJ   Úclique_sizesÚexpected_cliquess         r   Útest_paper_figure_4z+TestEnumerateAllCliques.test_paper_figure_4Õ   s¹  € ô �H‰H‹Jˆò
ˆð& 	
×Ñ˜Ô%ä”r×/Ñ/°Ó2Ó3ˆÜœC¤ WÓ-Ó.ˆÜ�lÓ# |Ò3Ð3Ð3ð.
ØˆEð.
àˆEð.
ð ˆEð.
ð ˆEð	.
ð
 ˆEð.
ð ˆEð.
ð ˆEð.
ð �#ˆJð.
ò ð.
ò !ð.
ò ð.
ð �#ˆJð.
ò ð.
ò !ð.
ò ð.
ð  �#ˆJð!.
ò" ð#.
ð$ �#ˆJð%.
ð& �#ˆJð'.
ò( ð).
ò* !ð+.
ò, ð-.
ò. ð/.
ð0 �#ˆJð1.
ò2 ð3.
ð4 �#ˆJð5.
ð6 �#ˆJð7.
ð8 �#ˆJð9.
ò: ð;.
ò< !ð=.
ò> ð?.
ð@ �#ˆJðA.
òB ðC.
ðD �#ˆJðE.
òF ðG.
ðH �#ˆJðI.
ðJ �#ˆJðK.
òL ðM.
ðN �#ˆJðO.
ðP �#ˆJðQ.
ðR �#ˆJðS.
òT ðU.
òV !ðW.
òX &ðY.
òZ !ð[.
Ðô` ”cœ& 'Ó*Ó+¬v´c¼&ÐBRÓ6SÓ/TÒTÐTÑTr/   N)rr   rs   rt   r„   ru   r/   r   rw   rw   Ô   s	   „ óNUr/   rw   )rA   Únetworkxr   r   r   r   rw   ru   r/   r   ú<module>r†      s+   ðÛ ã Ý =÷JWñ JW÷ZOUò OUr/   