+
    �°³jÌ  ã                   ó~   € R t ^ RIt^ RIt^ RIHt ^tRR lt]! ^4      RR l4       tR t	R t
R tR tR	 tR
 tR tR# )z4Unit tests for the sparsifier computation functions.N)Úpy_random_statec                ó¬  € \        V P                  4       4      \        VP                  4       4      8X  g   Q hVP                  4        FY  w  rEV P                  WE4      '       g   Q hV'       g   K(  W,          V,          V,          W,          V,          V,          8X  d   KY  Q h	  \	        \
        P                  ! WR7      4      p\	        \
        P                  ! WR7      4      pV P                  4        F[  pV P                  4        FD  pWF9   g   K  WVV,          9   g   K  Wt,          V,          W&V,          V,          ,          8:  d   KD  Q h	  K]  	  R# )aò  Test whether a spanner is valid.

This function tests whether the given spanner is a subgraph of the
given graph G with the same node set. It also tests for all shortest
paths whether they adhere to the given stretch.

Parameters
----------
G : NetworkX graph
    The original graph for which the spanner was constructed.

spanner : NetworkX graph
    The spanner to be tested.

stretch : float
    The proclaimed stretch of the spanner.

weight : object
    The edge attribute to use as distance.
©ÚweightN)ÚsetÚnodesÚedgesÚhas_edgeÚdictÚnxÚshortest_path_length)ÚGÚspannerÚstretchr   ÚuÚvÚoriginal_lengthÚspanner_lengths   &&&&    Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/tests/test_sparsifiers.pyÚ_test_spannerr      s÷   € ô, ˆq�w‰w‹y‹>œS §¡£Ó1Ô1Ð1Ð1ð —‘–‰ˆØ�z‰z˜!×ÒÐÐß‰6Ø•:˜a•= Õ(¨A­D°­G°F­OÖ;Ð;Ð;ñ  ô œ2×2Ò2°1ÔDÓE€OÜœ"×1Ò1°'ÔIÓJ€NØ�W‰WŽYˆØ—‘–ˆAØÖ#¨¸QÕ-?Ö(?Ø%Õ(¨Õ+¨wÈÕ9KÈAÕ9NÕ/NÖNÐNÐNó ó ó    c                óx   € V P                  4        F%  w  r#VP                  4       W,          V,          R&   K'  	  R# )a"  Assigns random weights to the edges of a graph.

Parameters
----------

G : NetworkX graph
    The original graph for which the spanner was constructed.

seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.
r   N)r   Úrandom)r   Úseedr   r   s   &&  r   Ú_assign_random_weightsr   2   s,   € ð —‘–	‰ˆØ ŸK™K›Mˆ�ˆQ��Óó r   c                 óÈ   € \         P                  ! ^4      p \         P                  ! V ^\        R7      pV P                   F  w  r#VP                  W#4      '       d   K  Q h	  R# )z&Test a trivial spanner with stretch 1.©r   N)r   Úcomplete_graphr   Ú_seedr   r	   )r   r   r   r   s       r   Útest_spanner_trivialr   D   sK   € ä
×Ò˜"Ó€AÜ�jŠj˜˜A¤EÔ*€Gà—”‰ˆØ×Ñ ×%Ô%Ð%Ð%ó r   c                 óÖ   € \         P                  ! ^4      p \         P                  ! V ^\        R7      p\	        W^4       \         P                  ! V ^
\        R7      p\	        W^
4       R# )z9Test spanner construction on a complete unweighted graph.r   N)r   r   r   r   r   ©r   r   s     r   Ú&test_spanner_unweighted_complete_graphr"   M   sJ   € ä
×Ò˜"Ó€Aä�jŠj˜˜A¤EÔ*€GÜ�!˜aÔ ä�jŠj˜˜B¤UÔ+€GÜ�!˜bÖ!r   c                 ó  € \         P                  ! ^4      p \        V \        R7       \         P                  ! V ^R\        R7      p\        W^RR7       \         P                  ! V ^
R\        R7      p\        W^
RR7       R# )z7Test spanner construction on a complete weighted graph.r   r   ©r   r   r   N)r   r   r   r   r   r   r!   s     r   Ú$test_spanner_weighted_complete_graphr%   X   s\   € ä
×Ò˜"Ó€AÜ˜1¤5Õ)ä�jŠj˜˜A h´UÔ;€GÜ�!˜a¨Õ1ä�jŠj˜˜B x´eÔ<€GÜ�!˜b¨×2r   c                 óä   € \         P                  ! ^R\        R7      p \         P                  ! V ^\        R7      p\	        W^4       \         P                  ! V ^
\        R7      p\	        W^
4       R# )z5Test spanner construction on an unweighted gnp graph.çš™™™™™Ù?r   N)r   Úgnp_random_graphr   r   r   r!   s     r   Ú!test_spanner_unweighted_gnp_graphr)   d   sN   € ä
×Ò˜B ¬%Ô0€Aä�jŠj˜˜A¤EÔ*€GÜ�!˜aÔ ä�jŠj˜˜B¤UÔ+€GÜ�!˜bÖ!r   c                 ó  € \         P                  ! ^R\        R7      p \        V \        R7       \         P                  ! V ^R\        R7      p\        W^RR7       \         P                  ! V ^
R\        R7      p\        W^
RR7       R# )z3Test spanner construction on an weighted gnp graph.r'   r   r   r$   r   N)r   r(   r   r   r   r   r!   s     r   Útest_spanner_weighted_gnp_graphr+   o   s`   € ä
×Ò˜B ¬%Ô0€AÜ˜1¤5Õ)ä�jŠj˜˜A h´UÔ;€GÜ�!˜a¨Õ1ä�jŠj˜˜B x´eÔ<€GÜ�!˜b¨×2r   c                 ó(  € \         P                  ! \         P                  ! ^
4      \         P                  ! ^
4      4      p \         P                  ! V ^\        R7      p\        W^4       \         P                  ! V ^
\        R7      p\        W^
4       R# )z2Test spanner construction on a disconnected graph.r   N)r   Údisjoint_unionr   r   r   r   r!   s     r   Ú*test_spanner_unweighted_disconnected_graphr.   {   sb   € ä
×Òœ"×+Ò+¨BÓ/´×1BÒ1BÀ2Ó1FÓG€Aä�jŠj˜˜A¤EÔ*€GÜ�!˜aÔ ä�jŠj˜˜B¤UÔ+€GÜ�!˜bÖ!r   c                 óÜ   € \         P                  ! \        4      ;_uu_ 4        \        P                  ! 4       p \        P
                  ! V ^ 4       RRR4       R#   + '       g   i     R# ; i)z+Check whether an invalid stretch is caught.N)ÚpytestÚraisesÚ
ValueErrorr   Úempty_graphr   )r   s    r   Útest_spanner_invalid_stretchr4   †   s:   € ä	�Š”z×	"Õ	"Ü�NŠNÓˆÜ
�
Š
�1�aÔ÷ 
#×	"×	"Ò	"ús   £-AÁA+	)N)Ú__doc__r0   Únetworkxr   Únetworkx.utilsr   r   r   r   r   r"   r%   r)   r+   r.   r4   © r   r   Ú<module>r9      sY   ðÙ :ã ã Ý *à	€ô$OñN �Óó*ó ð*ò"&ò"ò	3ò"ò	3ò"ôr   