
    h$                     H    S SK r S SKrS SKJr   " S S5      r " S S5      rg)    N)convert_node_labels_to_integersc                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)TestCliques   c           	         / SQn[        [        R                  R                  U5      SS9U l        [        [        R                  " U R                  5      5      U l        [        R                  " S5      n[        R                  " U[        S5       Vs0 s H  o3US-   _M
     sn5      nUR                  / SQ5        X l        g s  snf )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       W/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/tests/test_clique.pysetup_methodTestCliques.setup_method   s    -r}}77:Jrtvv./a Q58 <8aAE8 <=	DE !=s   C
c                    [        [        R                  " U R                  5      5      n[        R                  " U R                  5      n/ SQ/ SQ/ SQSS/SS//n[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        [
        U5      5      [        [        [
        U5      5      :X  d   eg )Nr
   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_cliques1TestCliques.test_find_cliques1   s    "//$&&)*''/ )YARIc&"o&&VS1A*BBBBc&"o&&VX1F*GGGG    c                   ^ U R                   R                  SS5        [        [        R                  " U R                   5      5      n[        [        R
                  " U R                   5      5      n[        [        [        U5      5      [        [        [        U5      5      :X  d   e1 Sk1 Sk1 SkSS1SS1/m[        T5      [        U5      :X  d   e[        U4S	 jU 5       5      (       d   eg )
Nr   >   r   r
   r   r   >   r
   r	   r   >   r	   r   r   r%   r&   r'   r(   c              3   @   >#    U  H  n[        U5      T;   v   M     g 7fN)set).0canswers     r   	<genexpr>-TestCliques.test_selfloops.<locals>.<genexpr>   s     0R3q6V#Rs   )r   add_edger   r   r   r)   r5   r+   	frozensetlenall)r   r   r-   r8   s      @r   test_selfloopsTestCliques.test_selfloops   s    1"//$&&)*2,,TVV453y"%&#c)S.A*BBBB	9q!fr2hG6{c"g%%%0R00000r1   c                     [        [        R                  " U R                  5      5      n[	        [        [        U5      5      SS// SQSS// SQ/:X  d   eg )Nr   r
   )r   r	   r   r   r   )r   r	   r   )r   r   r   r   r*   r+   )r   hcls     r   test_find_cliques2TestCliques.test_find_cliques2!   sD    2??466*+c&#&'QFL1a&)+TTTTr1   c                    [        [        R                  " U R                  S/5      5      n[        R                  " U R                  S/5      n/ SQ/ SQ/n[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        R                  " U R                  SS/5      5      n[        R                  " U R                  SS/5      n/ SQ/n[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        R                  " U R                  / SQ5      5      n[        R                  " U R                  / SQ5      n/ SQ/n[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        R                  " U R                  / SQ5      5      n[        R                  " U R                  / SQ5      n/ SQ/n[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        [        [
        U5      5      [        [        [
        U5      5      :X  d   e[        R                  " [        5         [        [        R                  " U R                  / SQ5      5        S S S 5        [        R                  " [        5         [        [        R                  " U R                  / SQ5      5        S S S 5        g ! , (       d  f       N^= f! , (       d  f       g = f)Nr
   r#   r$   r   )r
   r   r	   r   )
r   r   r   r   r)   r*   r+   pytestraises
ValueErrorr,   s       r   test_find_cliques3TestCliques.test_find_cliques3%   s    "//$&&1#./''4 ),c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&1a&12''A7 >c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&)45''	:;c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&)45''	:;c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG]]:&67 ' ]]:&**466<@A '& '& '&s   -N!+-N2!
N/2
O c                 x   U R                   n[        R                  " US5      S:X  d   e[        [        R                  " US/5      R	                  5       5      S/:X  d   e[        [        R                  " USS/5      R	                  5       5      SS/:X  d   e[        R                  " USS/5      SSS.:X  d   e[        R                  " US5      S:X  d   e[        R                  " U5      SSSSSSSSSSSS.:X  d   e[        R                  " U[        U5      S9SSSSSSSSSSSS.:X  d   e[        R                  " U/ SQS9SSSS.:X  d   e[        R                  " XR
                  S9SSSSSSSSSSSS.:X  d   e[        R                  " U[        U5      U R
                  S9SSSSSSSSSSSS.:X  d   eg )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_cliques"TestCliques.test_number_of_cliquesF   s   FF##Aq)Q...B((QC0779:qcAAAB((QF3::<=!QGGG##A1v.aA,>>>##Aq)Q...##A&+
 
 	
 
 ##AT!W5:
 
 	
 
 ##AY7qQ1;MMMM##Aww7<
 
 	
 
 ##AtAw@E
 
 	
 
r1   c                    U R                   n[        R                  " US5      S:X  d   e[        [        R                  " US/5      R	                  5       5      S/:X  d   e[        [        R                  " USS/5      R	                  5       5      SS/:X  d   e[        R                  " USS/5      SSS.:X  d   e[        R                  " US5      S:X  d   e[        R                  " U5      SSSSSSSSSSSS.:X  d   e[        R                  " XR
                  S9SSSSSSSSSSSS.:X  d   e[        R                  " USS/U R
                  S9SSS.:X  d   e[        R                  " USU R
                  S9S:X  d   eg )Nr   r	   r
   rL   r   rM   rO   )r   r   node_clique_numberr   rR   r   rS   s     r   test_node_clique_number#TestCliques.test_node_clique_number   s   FF$$Q*a///B))!aS188:;sBBBB))!aV4;;=>1a&HHH$$QA/qQ<???$$Q*a///$$Q',
 
 	
 
 $$Q8=
 
 	
 
 $$QA@aLPPP$$Q477;q@@@r1   c                    U R                   n[        R                  " U5      n[        U5      / SQ:X  d   e[        R                  " U[        SS5      5      nUR                  UR                  :X  d   e[        R                  " U[        SS5      5      n[        R                  " U[        SS5       Vs0 s H  oU* U_M     sn5      n[        U5      / SQ:X  d   eg s  snf )N)r   r
   r   r	   r   r   r   r%   r&   r'   r(   r      r[   r   r   )r   r
   r   r	   r   )r   r   make_clique_bipartiter*   projected_graphr   adjr   )r   r   Br   H1vs         r   test_make_clique_bipartite&TestCliques.test_make_clique_bipartite   s    FF$$Q'aySSSSq%2,/uu~~5Q<0b%1+">+Q2q5+">?bz_,,, #?s   3C
c           	      d   U R                   n[        R                  " U5      n[        R                  " U[	        SS5      5      n[        R
                  " U[	        SS5       Vs0 s H	  oD* US-
  _M     sn5      n[        R                  " U5      nUR                  UR                  :X  d   egs  snf )zTests that the maximal clique graph is the same as the bipartite
clique graph after being projected onto the nodes representing the
cliques.

r[   r   r   r   N)r   r   ra   rb   r   r   make_max_clique_graphrc   )r   r   rd   re   rf   H2s         r   test_make_max_clique_graph&TestCliques.test_make_max_clique_graph   s     FF$$Q'5Q<0 beAqk"Bk2q1u9k"BC%%a(vv #Cs   #B-
c                     [         R                  " [        R                  5         [	        [        R
                  " [        R                  " 5       5      5        S S S 5        g ! , (       d  f       g = fr4   )rF   rG   r   NetworkXNotImplementednextr   DiGraph)r   s    r   test_directedTestCliques.test_directed   s7    ]]2445./ 655s   3A!!
A/c                     [         R                  " 5       n[        [         R                  " U5      5      / :X  d   e[        [         R                  " U5      5      / :X  d   eg r4   )r   Graphr*   r   r)   rS   s     r   test_find_cliques_trivial%TestCliques.test_find_cliques_trivial   sG    HHJbooa()R///b//23r999r1   c                    [         R                  " / SQ5      n[         R                  " / SQ5      nUR                  S5        [         R                  " [         R                  " U[         R                  S9U5      (       d   eg )N)rL   )r   r   )r	   r   )r   r   ))r   r   )r   r
   rL   r   )create_using)r   ru   add_nodeis_isomorphicrj   )r   r   Es      r   'test_make_max_clique_graph_create_using3TestCliques.test_make_max_clique_graph_create_using   sV    HH56HH-.	

1 8 8 RTUVVVVr1   )r   r   r   N)__name__
__module____qualname____firstlineno__r    r/   r?   rC   rI   rT   rX   rg   rl   rr   rv   r}   __static_attributes__ r1   r   r   r      sF    H1UBB;
z"AH-  0:
Wr1   r   c                       \ rS rSrS rSrg)TestEnumerateAllCliques   c                    [         R                  " 5       n/ SQnUR                  U5        [        [         R                  " U5      5      n[        [        [        U5      5      n[        U5      U:X  d   e/ S/PS/PS/PS/PS/PS/PS/PSS/P/ S	QP/ S
QP/ SQPSS/P/ SQP/ SQP/ SQPSS/P/ SQPSS/PSS/P/ SQP/ SQP/ SQP/ SQPSS/P/ SQPSS/PSS/PSS/P/ SQP/ SQP/ SQPSS/P/ SQPSS/P/ SQPSS/PSS/P/ SQPSS/PSS/PSS/P/ SQP/ SQP/ SQP/ SQPn[        [        [        U5      5      [        [        [        U5      5      :X  d   eg )N))ab)r   r7   )r   d)r   e)r   r7   )r   r   )r   r   )r7   r   )r7   r   )r   r   )fr   )r   r7   )r   g)r   r   )r   r7   )r   r   )r   r   r   r   r7   r   r   r   r   )r   r   r   )r   r   r   r   )r   r   r   )r   r7   r   )r   r7   r   r   )r   r7   r   )r   r   r   )r   r7   r   )r   r7   r   r   )r   r7   r   )r   r7   r   )r   r   r   )r7   r   r   )r7   r   r   r   )r7   r   r   )r7   r   r   )r7   r   r   )r   r   r   )r   r   r7   )r   r   r7   r   )r   r   r7   r   r   )r   r   r7   r   )r   ru   add_edges_fromr   enumerate_all_cliquesr+   r=   r*   )r   r   edges_fig_4rP   clique_sizesexpected_cliquess         r   test_paper_figure_4+TestEnumerateAllCliques.test_paper_figure_4   s    HHJ
& 	
%r//23CW-.l#|333.
E.
E.
 E.
 E	.

 E.
 E.
 E.
 #J.
 .
 !.
 .
 #J.
 .
 !.
 .
  #J!.
" #.
$ #J%.
& #J'.
( ).
* !+.
, -.
. /.
0 #J1.
2 3.
4 #J5.
6 #J7.
8 #J9.
: ;.
< !=.
> ?.
@ #JA.
B C.
D #JE.
F G.
H #JI.
J #JK.
L M.
N #JO.
P #JQ.
R #JS.
T U.
V !W.
X &Y.
Z ![.
` c&'*+vc&BR6S/TTTTr1   r   N)r   r   r   r   r   r   r   r1   r   r   r      s	    NUr1   r   )rF   networkxr   r   r   r   r   r   r1   r   <module>r      s+      =JW JWZOU OUr1   