Ë
    ©Ó^jÚ  ã                   óò  — d Z ddlZddlZddlZd„ Zej                  j                  d edd«      «      d„ «       Z	d„ Z
ej                  j                  d ed	d«      «      d
„ «       Zej                  j                  d edd«      «      d„ «       Zej                  j                  dej                  ej                  g«      ej                  j                  dej                  ej                   ej"                  g«      d„ «       «       Zej                  j                  dej                  ej                  g«      ej                  j                  dej&                  ej(                  g«      d„ «       «       Zd„ Zy)z'Unit tests for the broadcasting module.é    Nc                  ó&  — g d¢} t        j                  | «      }t        j                  |«      \  }}|dk(  sJ ‚|ddhk(  sJ ‚t        j                  |d«      dk(  sJ ‚t        j                  |d«      dk(  sJ ‚t        j                  |«      dk(  sJ ‚y	)
zo
    Test the BROADCAST algorithm on the example in the paper titled: "Information Dissemination in Trees"
    ))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   N)ÚnxÚGraphÚtree_broadcast_centerÚtree_broadcast_time)Ú	edge_listÚGÚb_TÚb_Cs       úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.pyÚtest_example_tree_broadcastr!   
   s—   € ò€Iô, 	�‰�Ó€AÜ×'Ñ'¨Ó*�H€CˆØ�!Š8€Oˆ8Ø�2�q�'Š>Ðˆ>ä×!Ñ! ! RÓ(¨AÒ-Ð-Ð-Ü×!Ñ! ! QÓ'¨1Ò,Ð,Ð,ä×!Ñ! !Ó$¨Ò*Ð*Ñ*ó    Únr   r   c                 óX  — t        j                  | «      }t        j                  |«      \  }}|t        j                  | dz  «      k(  sJ ‚|t        j                  | dz  «      | dz  t        j                  | dz  dz
  «      | dz  dz
  hk(  sJ ‚t        j
                  |«      | dz
  k(  sJ ‚y )Nr   r   )r   Ú
path_graphr   ÚmathÚceilr   ©r#   r   r   r   s       r    Útest_path_broadcastr)   /   s«   € ä
�‰�aÓ€AÜ×'Ñ'¨Ó*�H€CˆØ”$—)‘)˜A ™EÓ"Ò"Ð"Ð"ØÜ�	‰	�!�a‘%ÓØ	ˆQ‰Ü�	‰	�!�a‘%˜!‘)ÓØ	ˆQ‰�‰
ð	ò ð ð ô ×!Ñ! !Ó$¨¨A©Ò-Ð-Ñ-r"   c                  ó°   — t        j                  d«      } t        j                  | «      \  }}|dk(  sJ ‚|dhk(  sJ ‚t        j                  | «      dk(  sJ ‚y )Nr   r   )r   Úempty_graphr   r   )ÚHr   r   s      r    Útest_empty_graph_broadcastr-   =   sV   € Ü
�‰�qÓ€AÜ×'Ñ'¨Ó*�H€CˆØ�!Š8€Oˆ8Ø�1�#Š:Ðˆ:Ü×!Ñ! !Ó$¨Ò)Ð)Ñ)r"   r   c                 óÜ   — t        j                  | «      }t        j                  |«      \  }}|| k(  sJ ‚|t        |j	                  «       «      k(  sJ ‚t        j
                  |«      |k(  sJ ‚y )N)r   Ú
star_graphr   ÚsetÚnodesr   r(   s       r    Útest_star_broadcastr2   E   s`   € ä
�‰�aÓ€AÜ×'Ñ'¨Ó*�H€CˆØ�!Š8€Oˆ8Ø”#�a—g‘g“i“.Ò Ð Ð Ü×!Ñ! !Ó$¨Ò+Ð+Ñ+r"   r   c                 óÊ   — t        j                  | «      }t        j                  |«      \  }}|| k(  sJ ‚|dd| dz
  z  hk(  sJ ‚t        j                  |«      d| z  dz
  k(  sJ ‚y )Nr   r   r   )r   Úbinomial_treer   r   r(   s       r    Útest_binomial_tree_broadcastr5   N   sm   € ä
×Ñ˜Ó€AÜ×'Ñ'¨Ó*�H€CˆØ�!Š8€Oˆ8Ø�1�a˜A ™E‘lÐ#Ò#Ð#Ð#Ü×!Ñ! !Ó$¨¨A©°©	Ò1Ð1Ñ1r"   ÚfnÚ
graph_typec                 ó¶   — t        j                  d|¬«      }t        j                  t         j                  d¬«      5   | |«       ddd«       y# 1 sw Y   yxY w)zPCheck that broadcast functions properly raise for directed and multigraph types.r	   )Úcreate_usingznot implemented for©ÚmatchN)r   r%   ÚpytestÚraisesÚNetworkXNotImplemented)r6   r7   r   s      r    Útest_raises_graph_typer?   W   sE   € ô 	�‰�a jÔ1€AÜ	�‰”r×0Ñ0Ð8NÔ	Oñ Ù
ˆ1Œ÷÷ ñ ús   ½	AÁAÚgenc                 ó˜   —  |d«      }t        j                  t        j                  d¬«      5   | |«       ddd«       y# 1 sw Y   yxY w)zACheck that broadcast functions properly raise for nontree graphs.r	   z
not a treer:   N)r<   r=   r   ÚNotATree)r6   r@   r   s      r    Útest_raises_not_treerC   `   s;   € ñ 	ˆA‹€AÜ	�‰”r—{‘{¨-Ô	8ñ Ù
ˆ1Œ÷÷ ñ ús   ®	A Á A	c                  óÐ   — t        j                  d«      } t        j                  t         j                  d¬«      5  t        j
                  | d¬«       ddd«       y# 1 sw Y   yxY w)zCCheck that `tree_broadcast_time` properly raises for invalid nodes.r	   znode.*not in Gr:   r   )ÚnodeN)r   r%   r<   r=   ÚNodeNotFoundr   )r   s    r    Útest_raises_node_not_in_GrG   i   sH   € ä
�‰�aÓ€AÜ	�‰”r—‘Ð.?Ô	@ñ +Ü
×Ñ˜q rÕ*÷+÷ +ñ +ús   »AÁA%)Ú__doc__r&   r<   Únetworkxr   r!   ÚmarkÚparametrizeÚranger)   r-   r2   r5   r   r   ÚDiGraphÚ
MultiGraphÚMultiDiGraphr?   r+   Úcycle_graphrC   rG   © r"   r    ú<module>rR      sd  ðÙ -ã ã ã ò"+ðJ ‡�×Ñ˜™e A r›lÓ+ñ
.ó ,ð
.ò*ð ‡�×Ñ˜™e A r›lÓ+ñ,ó ,ð,ð ‡�×Ñ˜™e A q›kÓ*ñ2ó +ð2ð ‡�×Ñ˜ × 8Ñ 8¸"×:PÑ:PÐQÓRØ‡�×Ñ˜¨¯
©
°B·M±MÀ2Ç?Á?Ð'SÓTñó Uó Sðð ‡�×Ñ˜ × 8Ñ 8¸"×:PÑ:PÐQÓRØ‡�×Ñ˜ §¡°·±Ð @ÓAñó Bó Sðó+r"   