o
    3ήch                     @   sT   d dl Z d dlZdd ZG dd dZG dd dZG dd	 d	ZG d
d dZdS )    Nc                  C   s   t  } | jdddd | jdddd | jdddd | jdddd | jdddd | jdddd | jdddd | jdddd | jdddd | jdddd | S )	Nr         )weight            )nxGraphadd_edge)G r   g/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/centrality/tests/test_betweenness_centrality.py
weighted_G   s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestBetweennessCentralityc                 C   sZ   t d}t j|ddd}dddddd}t|D ]}|| tj|| ddks*J qdS )	zBetweenness centrality: K5r   NFr   
normalized        r   r   r   r   r   Hz>absr	   complete_graphbetweenness_centralitysortedpytestapproxselfr   bb_answernr   r   r   test_K5      
 z!TestBetweennessCentrality.test_K5c                 C   s   t d}t j|dddd}dddddd}t|D ]}|| tj|| dd	ks+J qt j|dddd}d
d
d
d
d
d}t|D ]}|| tj|| dd	ksRJ qAdS )z$Betweenness centrality: K5 endpointsr   NFTr   r   	endpoints      @r   r   r   g?r   r   r   r   r   test_K5_endpoints   s   
  z+TestBetweennessCentrality.test_K5_endpointsc                 C   sV   t d}t j|ddd}dddd}t|D ]}|| tj|| dd	ks(J qdS )
z%Betweenness centrality: P3 normalizedr   NTr   r         ?r   r   r   r   r   r	   
path_graphr   r   r   r   r   r   r   r   test_P3_normalized+      
 z,TestBetweennessCentrality.test_P3_normalizedc                 C   sV   t d}dddd}t j|ddd}t|D ]}|| tj|| dd	ks(J qdS )
zBetweenness centrality: P3r   r   r)   r*   NFr   r   r   r+   r   r   r!   r    r"   r   r   r   test_P33      
 z!TestBetweennessCentrality.test_P3c                 C   s   t d}dddd}t j|ddddd}t|D ]}|| tj|| d	d
ks*J qt j|ddddd}dddd}dddd}t|D ]}|| || || fv sUJ qEdS )z!Betweenness centrality: P3 sampler   r   r)   r*   NFr   )kr   r   seedr   r   r         ?      ?r+   )r   r   r!   r    r"   	b_approx1	b_approx2r   r   r   test_sample_from_P3;   s   
 z-TestBetweennessCentrality.test_sample_from_P3c                 C   s   t d}dddd}t j|dddd}t|D ]}|| tj|| d	d
ks)J qdddd}t j|dddd}t|D ]}|| tj|| d	d
ksNJ q=dS )z$Betweenness centrality: P3 endpointsr          @      @r*   NFTr%   r   r   gUUUUUU?r)   r+   r/   r   r   r   test_P3_endpointsI   s   
  z+TestBetweennessCentrality.test_P3_endpointsc                 C   s|   t  }ddddddddddd
}|D ]
}||  d  < qt j|d	d
d}t|D ]}|| tj|| ddks;J q*d	S )z-Betweenness centrality: Krackhardt kite graphy&1?r   ET@n0@      <@      0@
r   r   r   r   r   r   r         	   r   NFr   MbP?r   r	   krackhardt_kite_graphr   r   r   r   r/   r   r   r   test_krackhardt_kite_graphV   s$    z4TestBetweennessCentrality.test_krackhardt_kite_graphc                 C   sb   t  }ddddddddddd
}t j|dd	d
}t|D ]}|| tj|| ddks.J qdS )z8Betweenness centrality: Krackhardt kite graph normalizedZd;O?r   &1? rh?L7A`?"~j?rA   NTr   rE   r   rF   r/   r   r   r   %test_krackhardt_kite_graph_normalizedk   s     z?TestBetweennessCentrality.test_krackhardt_kite_graph_normalizedc                 C   sl   t  }dddddddddddd	d
ddd}t j|ddd}t|D ]}|| tj|| ddks3J q"dS )z1Betweenness centrality: Florentine families graphr   A`"?+η?9v?)\(?RQ?NbX9?I+?v/?M?|?5^?Zd;O?
AcciaiuoliAlbizzi	BarbadoriBischeri
CastellaniGinoriGuadagniLamberteschiMediciPazziPeruzziRidolfiSalviatiStrozzi
TornabuoniNTr   rE   r   r	   florentine_families_graphr   r   r   r   r/   r   r   r   test_florentine_families_graph~   s*    z8TestBetweennessCentrality.test_florentine_families_graphc                 C   s
  t  }i ddddddddddddd	dd
dddddddddddddddddddi ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*dd+d,d-dd.di d/dd0dd1dd2dd3dd4d5d6dd7d8d9dd:dd;dd<dd=d'd>dd?d@dAdBdCdi dDdEdFddGddHddIdJdKddLdMdNdOdPdQdRddSdQdTdUdVdWdXdYdZdWd[dd\ddUdUdUd]dddddd^	}t j|d_d`da}t|D ]}|| tj|| dQdbksJ qd_S )cz,Betweenness centrality: Les Miserables graphNapoleonr   Myriel-?MlleBaptistineMmeMagloireCountessDeLoGeborandChamptercierCravatteCountOldManValjeang=
ףp=?Labarre
MargueriteMmeDeRIsabeauGervais	Listolier	TholomyesgˡE?FameuilBlacheville	FavouriteDahliaZephineFantinegp=
ף?MmeThenardiergV-?
Thenardier333333?Cosette~jt?JavertgS㥫?Fauchelevent9v?
BamataboisgMb?PerpetueSimplice;On?ScaufflaireWoman1JudgeChampmathieuBrevet
ChenildieuCochepaille	Pontmercyy&1|?BoulatruelleEponineI+?AnzelmaWoman2MotherInnocentGribier	MmeBurgon	JondretteGavrochegQ?Gillenormandg{Gz?MagnonMlleGillenormandg~jt?MmePontmercyMlleVauboisLtGillenormandMariusgL7A`?	BaronessTMabeufy&1?Enjolrasgjt?
CombeferrerE   	ProuvaireFeuilly
Courfeyrac{Gzt?BahorelMb`?BossuetgX9v?Joly	GrantaireMotherPlutarchMbp?		GueulemerBabet
ClaquesousMontparnasse	ToussaintChild1Child2BrujonMmeHucheloupNTr   r   r	   les_miserables_graphr   r   r   r   r/   r   r   r   test_les_miserables_graph   0  	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEP"z3TestBetweennessCentrality.test_les_miserables_graphc                 C   s   t  }|g d ddddddd}|D ]
}||  d  < qt j|ddd}t|D ]}|| tj|| d	d
ks>J q-dS )z$Betweenness centrality: Ladder graphr   r   r   r   r   r   r   r   r   r   )r   r   )r   r   r<   ^I@r   r   r   r   r   r   r   NFr   rE   r   r	   r
   add_edges_fromr   r   r   r   r/   r   r   r   test_ladder_graph       z+TestBetweennessCentrality.test_ladder_graphc                 C   s|   t  }t |g d t |g d dddddddd}t j|ddd	}t|D ]}|| tj|| d
dks;J q*dS )z)Betweenness centrality: disconnected pathr*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   NFr   r   r   r	   r
   add_pathr   r   r   r   r/   r   r   r   test_disconnected_path   s    z0TestBetweennessCentrality.test_disconnected_pathc                 C   s   t  }t |g d t |g d dddddddd}t j|ddd	d
}t|D ]}|| tj|| ddks<J q+t j|dd	d	d
}t|D ]}|| tj|| d ddks]J qJdS )z3Betweenness centrality: disconnected path endpointsr*   r   r   r   r   r   NFTr%   r   r      r   r/   r   r   r    test_disconnected_path_endpoints  s    $z:TestBetweennessCentrality.test_disconnected_path_endpointsc                 C   d   t  }t |g d t j|ddd}dddd}t|D ]}|| tj|| ddks/J qdS )	z%Betweenness centrality: directed pathr*   NFr   r   r)   r   r   r	   DiGraphr   r   r   r   r   r   r   r   r   test_directed_path      z,TestBetweennessCentrality.test_directed_pathc                 C   r   )	z0Betweenness centrality: directed path normalizedr*   NTr   r         ?r   r   r   r   r   r   r   test_directed_path_normalized  r   z7TestBetweennessCentrality.test_directed_path_normalizedN)__name__
__module____qualname__r#   r(   r-   r0   r8   r;   rH   rN   rl   r   r   r   r   r   r   r   r   r   r   r      s     W
	r   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )!TestWeightedBetweennessCentralityc                 C   sZ   t d}t j|ddd}dddddd}t|D ]}|| tj|| ddks*J qd	S )
z#Weighted betweenness centrality: K5r   r   Fr   r   r   r   r   Nr   r   r   r   r   r#   %  r$   z)TestWeightedBetweennessCentrality.test_K5c                 C   sV   t d}t j|ddd}dddd}t|D ]}|| tj|| dd	ks(J qd
S )z.Weighted betweenness centrality: P3 normalizedr   r   Tr   r   r)   r*   r   r   Nr+   r   r   r   r   r-   -  r.   z4TestWeightedBetweennessCentrality.test_P3_normalizedc                 C   sV   t d}dddd}t j|ddd}t|D ]}|| tj|| dd	ks(J qd
S )z#Weighted betweenness centrality: P3r   r   r)   r*   r   Fr   r   r   Nr+   r/   r   r   r   r0   5  r1   z)TestWeightedBetweennessCentrality.test_P3c                 C   s|   t  }ddddddddddd
}|D ]
}||  d  < qt j|d	d
d}t|D ]}|| tj|| ddks;J q*dS )z6Weighted betweenness centrality: Krackhardt kite graphr<   r   r=   r>   r?   r@   rA   r   r   Fr   rE   r   NrF   r/   r   r   r   rH   =  s$    z<TestWeightedBetweennessCentrality.test_krackhardt_kite_graphc                 C   sb   t  }ddddddddddd
}t j|dd	d
}t|D ]}|| tj|| ddks.J qdS )zRWeighted betweenness centrality:
        Krackhardt kite graph normalized
        rI   r   rJ   rK   rL   rM   rA   r   Tr   rE   r   NrF   r/   r   r   r   rN   T  s     zGTestWeightedBetweennessCentrality.test_krackhardt_kite_graph_normalizedc                 C   sl   t  }dddddddddddd	d
ddd}t j|ddd}t|D ]}|| tj|| ddks3J q"dS )zBWeighted betweenness centrality:
        Florentine families graphr   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r   Tr   rE   r   Nrj   r/   r   r   r   rl   j  s*    z@TestWeightedBetweennessCentrality.test_florentine_families_graphc                 C   s
  t  }i ddddddddddddd	dd
dddddddddddddddddddi dddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+dd,d-d.dd/di d0dd1dd2dd3dd4dd5d6d7dd8d6d9dd:dd;dd<dd=d(d>dd?d@dAdBdCdDi dEdFdGdDdHddIdJdKdLdMdNdOdPdQdRdSddTddUdNdVd-dWdXdYdZd[dd\dFd]dd^dJd_d`dadddbdcdd	}t j|dedfdg}t|D ]}|| tj|| d-dhksJ qdiS )jz5Weighted betweenness centrality: Les Miserables graphrm   r   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   guV?ry   rz   r   r{   r|   r}   r~   r   gL7A`?r   r   r   r   r   r   rV   r   gZd;O?r   gPn?r   r   r   gNbX9?r   r   r   g{Gz?r   r   rE   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   g=
ףp=?r   r   r   r   r   g;On?r   r   r   gQ?r   g;On?r   r   r   gbX9ȶ?r   g~jth?r   r   r   r   r   r   r   r   r   r   r   g?g/$?g?r   r   g rh?r   r   Tr   r   Nr   r/   r   r   r   r     r   z;TestWeightedBetweennessCentrality.test_les_miserables_graphc                 C   s   t  }|g d ddddddd}|D ]
}||  d  < qt j|ddd}t|D ]}|| tj|| d	d
ks>J q-dS )z-Weighted betweenness centrality: Ladder graphr   r<   r   r   r   r   Fr   rE   r   Nr   r/   r   r   r   r     r   z3TestWeightedBetweennessCentrality.test_ladder_graphc                 C   sX   t  }ddddddd}tj|ddd}t|D ]}|| tj|| d	d
ks)J qdS )z"Weighted betweenness centrality: Gr9   r   r'   r:   r   r   Fr   r   r   N)r   r	   r   r   r   r   r/   r   r   r   test_G  s    z(TestWeightedBetweennessCentrality.test_Gc                 C   f   t  }|g d dddddd}t j|ddd}t|D ]}|| tj|| d	d
ks0J qdS )z#Weighted betweenness centrality: G2)
su
   r   xr   r   vr   r   r   r   r   yr   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r         @r'   r9   r   r   r   r   r   r   Fr   r   r   N)r	   r   add_weighted_edges_fromr   r   r   r   r/   r   r   r   test_G2  s    z)TestWeightedBetweennessCentrality.test_G2c                 C   s   t t }t|jddddd }|| ddddddd	}t j|d
dd}t|D ]}|| tj	|| ddks>J q-dS )z#Weighted betweenness centrality: G3T)dataNr   r9   r   r'   r:   r   r   Fr   r   r   )
r	   
MultiGraphr   listedgesr   r   r   r   r   )r   r   esr!   r    r"   r   r   r   test_G3  s   
 z)TestWeightedBetweennessCentrality.test_G3c                 C   r   )z#Weighted betweenness centrality: G4)r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r'   r9   r   r   Fr   r   r   N)r	   MultiDiGraphr   r   r   r   r   r/   r   r   r   test_G4  s    z)TestWeightedBetweennessCentrality.test_G4N)r   r   r   r#   r-   r0   rH   rN   rl   r   r   r   r   r  r  r   r   r   r   r   $  s    W
r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestEdgeBetweennessCentralityc                 C   ^   t d}t j|ddd}t| d}t| D ]}|| tj|| ddks,J qdS )Edge betweenness centrality: K5r   NFr   r   r   r   	r	   r   edge_betweenness_centralitydictfromkeysr  r   r   r   r   r   r   r   r#   .     
 z%TestEdgeBetweennessCentrality.test_K5c                 C   r  )r  r   NTr   g?r   r   r	  r   r   r   r   test_normalized_K56  r  z0TestEdgeBetweennessCentrality.test_normalized_K5c                 C   s`   t d}t j|ddd}ddddd}t| D ]}|| tj|| d dd	ks-J qdS )
Edge betweenness centrality: C4r   NTr   r   r   r   r   r   r   r   r   r   r   r	   cycle_graphr
  r   r  r   r   r   r   r   r   test_C4>  s   
$z%TestEdgeBetweennessCentrality.test_C4c                 C   sZ   t d}t j|ddd}dddd}t| D ]}|| tj|| ddks*J qdS )	Edge betweenness centrality: P4r   NFr   r   r   r  r   r   r   r	   r,   r
  r   r  r   r   r   r   r   r   test_P4F     
 z%TestEdgeBetweennessCentrality.test_P4c                 C   s^   t d}t j|ddd}dddd}t| D ]}|| tj|| d dd	ks,J qdS )
r  r   NTr   r   r  r   r   r   r  r   r   r   r   test_normalized_P4N  s   
$z0TestEdgeBetweennessCentrality.test_normalized_P4c                 C   sd   t jddd}t j|ddd}ddddddd}t| D ]}|| tj|| d	d
ks/J qdS )*Edge betweenness centrality: balanced treer   rhNFr      r   r   r   r   r   r   )r   r   )r   r   r   r   r	   balanced_treer
  r   r  r   r   r   r   r   r   test_balanced_treeV      z0TestEdgeBetweennessCentrality.test_balanced_treeN)	r   r   r   r#   r  r  r  r  r%  r   r   r   r   r  -  s    r  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )%TestWeightedEdgeBetweennessCentralityc                 C   s^   t d}t j|ddd}t| d}t| D ]}|| tj|| ddks,J qdS )	r  r   r   Fr   r   r   r   Nr	  r   r   r   r   r#   `  r  z-TestWeightedEdgeBetweennessCentrality.test_K5c                 C   s\   t d}t j|ddd}ddddd}t| D ]}|| tj|| ddks+J qd	S )
r  r   r   Fr   r   r  r   r   Nr  r   r   r   r   r  h  s   
 z-TestWeightedEdgeBetweennessCentrality.test_C4c                 C   sZ   t d}t j|ddd}dddd}t| D ]}|| tj|| ddks*J qd	S )
r  r   r   Fr   r   r  r   r   Nr  r   r   r   r   r  p  r  z-TestWeightedEdgeBetweennessCentrality.test_P4c                 C   sd   t jddd}t j|ddd}ddddddd}t| D ]}|| tj|| d	d
ks/J qdS )r  r   r  r   Fr   r   r   r!  r   r   Nr#  r   r   r   r   r%  x  r&  z8TestWeightedEdgeBetweennessCentrality.test_balanced_treec              
   C   sv   g d}t  }|| t j|ddd}ddddddd	dd
d	}t| D ]}|| tj|| ddks8J q'dS )z%Edge betweenness centrality: weighted	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   r   Fr   r   r)   r9         @r4   r   	r   r   r  )r   r   r  r   r"  r   )r   r   r   r   N)r	   r
   r   r
  r   r  r   r   r   eListr   r    r!   r"   r   r   r   test_weighted_graph  s"   
 z9TestWeightedEdgeBetweennessCentrality.test_weighted_graphc              
   C   s   g d}t  }|| t j|ddd}ddddddd	dd
d	}t|t|d  d }t| D ]}|| tj|| | ddksFJ q3dS )z0Edge betweenness centrality: normalized weightedr(  r   Tr   r   r)   r9   r2  r4   r   r3  r   r   r   r   N)	r	   r
   r   r
  lenr   r  r   r   r   r5  r   r    r!   normr"   r   r   r   test_normalized_weighted_graph  s$   
$zDTestWeightedEdgeBetweennessCentrality.test_normalized_weighted_graphc                 C   s   g d}t  }|| t j|ddd}ddddddd	d
ddddddd}t|jddD ]}|| tj|| ddks?J q.dS )z0Edge betweenness centrality: weighted multigraphr)  )r   r   r   r*  r+  r+  r,  r-  r.  )r   r   r   r/  )r   r   r   r0  r1  r1  r   Fr   r   r   r)   r5   r9   r:   r4         ?)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   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   Tkeysr   r   N)r	   r   r   r
  r   r  r   r   r4  r   r   r   test_weighted_multigraph  s,   
 z>TestWeightedEdgeBetweennessCentrality.test_weighted_multigraphc                 C   s   g d}t  }|| t j|ddd}ddddddd	d
ddddddd}t|t|d  d }t|jddD ]}|| tj|| | ddksMJ q:dS )z;Edge betweenness centrality: normalized weighted multigraphr;  r   Tr   r   r   r)   r5   r9   r:   r4   r<  r=  r   r   r>  r   r   N)	r	   r   r   r
  r7  r   r  r   r   r8  r   r   r   #test_normalized_weighted_multigraph  s.   
$zITestWeightedEdgeBetweennessCentrality.test_normalized_weighted_multigraphN)r   r   r   r#   r  r  r%  r6  r:  r@  rA  r   r   r   r   r'  _  s    (r'  )r   networkxr	   r   r   r   r  r'  r   r   r   r   <module>   s        2