
    h                         S r SSKrSSKJr  / SQr\" S5      \R                  " SSS9SS j5       5       r\" S5      \R                  " SSS9SS	 j5       5       r\" S5      \R                  " SSS9SS
 j5       5       r	g)z,
Generators for random intersection graphs.
    N)py_random_state)!uniform_random_intersection_graphk_random_intersection_graph!general_random_intersection_graph   T)graphsreturns_graphc                 r    SSK Jn  UR                  XX#5      n[        R                  " U[        U 5      5      $ )u7  Returns a uniform random intersection graph.

Parameters
----------
n : int
    The number of nodes in the first bipartite set (nodes)
m : int
    The number of nodes in the second bipartite set (attributes)
p : float
    Probability of connecting nodes between bipartite sets
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.

See Also
--------
gnp_random_graph

References
----------
.. [1] K.B. Singer-Cohen, Random Intersection Graphs, 1995,
   PhD thesis, Johns Hopkins University
.. [2] Fill, J. A., Scheinerman, E. R., and Singer-Cohen, K. B.,
   Random intersection graphs when m = !(n):
   An equivalence theorem relating the evolution of the g(n, m, p)
   and g(n, p) models. Random Struct. Algorithms 16, 2 (2000), 156–176.
r   )	bipartite)networkx.algorithmsr   random_graphnxprojected_graphrange)nmpseedr   Gs         R/var/www/html/env/lib/python3.13/site-packages/networkx/generators/intersection.pyr   r      s0    < .qQ-Aaq**    c           	      $   [         R                  " X-   5      n[        X U-   5      n[        U 5       H<  nUR                  XR5      nUR	                  [        U/[        U5      -  U5      5        M>     [         R                  " U[        U 5      5      $ )a  Returns a intersection graph with randomly chosen attribute sets for
each node that are of equal size (k).

Parameters
----------
n : int
    The number of nodes in the first bipartite set (nodes)
m : int
    The number of nodes in the second bipartite set (attributes)
k : float
    Size of attribute set to assign to each node.
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.

See Also
--------
gnp_random_graph, uniform_random_intersection_graph

References
----------
.. [1] Godehardt, E., and Jaworski, J.
   Two models of random intersection graphs and their applications.
   Electronic Notes in Discrete Mathematics 10 (2001), 129--132.
)r   empty_graphr   sampleadd_edges_fromziplenr   )r   r   kr   r   msetvtargetss           r   r   r   3   sv    8 	quAE?D1X++d&	aS3w</9:  aq**r   c                 \   [        U5      U:w  a  [        S5      e[        R                  " X-   5      n[	        X U-   5      n[	        U 5       H>  n[        XR5       H,  u  pxUR                  5       U:  d  M  UR                  Xg5        M.     M@     [        R                  " U[	        U 5      5      $ )u  Returns a random intersection graph with independent probabilities
for connections between node and attribute sets.

Parameters
----------
n : int
    The number of nodes in the first bipartite set (nodes)
m : int
    The number of nodes in the second bipartite set (attributes)
p : list of floats of length m
    Probabilities for connecting nodes to each attribute
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.

See Also
--------
gnp_random_graph, uniform_random_intersection_graph

References
----------
.. [1] Nikoletseas, S. E., Raptopoulos, C., and Spirakis, P. G.
   The existence and efficient construction of large independent sets
   in general random intersection graphs. In ICALP (2004), J. D´ıaz,
   J. Karhum¨aki, A. Lepist¨o, and D. Sannella, Eds., vol. 3142
   of Lecture Notes in Computer Science, Springer, pp. 1029–1040.
z(Probability list p must have m elements.)	r   
ValueErrorr   r   r   r   randomadd_edger   )	r   r   r   r   r   r   ur    qs	            r   r   r   W   s    < 1v{CDD
quAE?D1XLDA{{}q 

1  !  aq**r   )N)
__doc__networkxr   networkx.utilsr   __all___dispatchabler   r   r    r   r   <module>r.      s     * T2+ 3 +D T2+ 3 +D T2$+ 3 $+r   