Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/networkx/generators/social.py: 4%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

312 statements  

1""" 

2Famous social networks. 

3""" 

4 

5import networkx as nx 

6 

7__all__ = [ 

8 "karate_club_graph", 

9 "davis_southern_women_graph", 

10 "florentine_families_graph", 

11 "les_miserables_graph", 

12] 

13 

14 

15@nx._dispatchable(graphs=None, returns_graph=True) 

16def karate_club_graph(): 

17 """Returns Zachary's Karate Club graph. 

18 

19 Each node in the returned graph has a node attribute 'club' that 

20 indicates the name of the club to which the member represented by that node 

21 belongs, either 'Mr. Hi' or 'Officer'. Each edge has a weight based on the 

22 number of contexts in which that edge's incident node members interacted. 

23 

24 The dataset is derived from the 'Club After Split From Data' column of Table 3 in [1]_. 

25 This was in turn derived from the 'Club After Fission' column of Table 1 in the 

26 same paper. Note that the nodes are 0-indexed in NetworkX, but 1-indexed in the 

27 paper (the 'Individual Number in Matrix C' column of Table 3 starts at 1). This 

28 means, for example, that ``G.nodes[9]["club"]`` returns 'Officer', which 

29 corresponds to row 10 of Table 3 in the paper. 

30 

31 Examples 

32 -------- 

33 To get the name of the club to which a node belongs:: 

34 

35 >>> G = nx.karate_club_graph() 

36 >>> G.nodes[5]["club"] 

37 'Mr. Hi' 

38 >>> G.nodes[9]["club"] 

39 'Officer' 

40 

41 References 

42 ---------- 

43 .. [1] Zachary, Wayne W. 

44 "An Information Flow Model for Conflict and Fission in Small Groups." 

45 *Journal of Anthropological Research*, 33, 452--473, (1977). 

46 """ 

47 # Create the set of all members, and the members of each club. 

48 all_members = set(range(34)) 

49 club1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 19, 21} 

50 # club2 = all_members - club1 

51 

52 G = nx.Graph() 

53 G.add_nodes_from(all_members) 

54 G.name = "Zachary's Karate Club" 

55 

56 zacharydat = """\ 

570 4 5 3 3 3 3 2 2 0 2 3 2 3 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 

584 0 6 3 0 0 0 4 0 0 0 0 0 5 0 0 0 1 0 2 0 2 0 0 0 0 0 0 0 0 2 0 0 0 

595 6 0 3 0 0 0 4 5 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 3 0 

603 3 3 0 0 0 0 3 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

613 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

623 0 0 0 0 0 5 0 0 0 3 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

633 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

642 4 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

652 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 4 3 

660 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 

672 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

691 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

703 5 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 

710 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 

720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 

730 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

742 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

750 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 

762 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 

770 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 

782 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

790 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 

800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 4 0 2 0 0 5 4 

810 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 3 0 0 0 2 0 0 

820 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 2 0 0 0 0 0 0 7 0 0 

830 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 2 

840 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 4 

850 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 

860 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 4 0 0 0 0 0 3 2 

870 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 

882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 0 0 2 0 0 0 4 4 

890 0 2 0 0 0 0 0 3 0 0 0 0 0 3 3 0 0 1 0 3 0 2 5 0 0 0 0 0 4 3 4 0 5 

900 0 0 0 0 0 0 0 4 2 0 0 0 3 2 4 0 0 2 1 1 0 3 4 0 0 2 4 2 2 3 4 5 0""" 

91 

92 for row, line in enumerate(zacharydat.split("\n")): 

93 thisrow = [int(b) for b in line.split()] 

94 for col, entry in enumerate(thisrow): 

95 if entry >= 1: 

96 G.add_edge(row, col, weight=entry) 

97 

98 # Add the name of each member's club as a node attribute. 

99 for v in G: 

100 G.nodes[v]["club"] = "Mr. Hi" if v in club1 else "Officer" 

101 return G 

102 

103 

104@nx._dispatchable(graphs=None, returns_graph=True) 

105def davis_southern_women_graph(): 

106 """Returns Davis Southern women social network. 

107 

108 This is a bipartite graph. 

109 

110 References 

111 ---------- 

112 .. [1] A. Davis, Gardner, B. B., Gardner, M. R., 1941. Deep South. 

113 University of Chicago Press, Chicago, IL. 

114 """ 

115 G = nx.Graph() 

116 # Top nodes 

117 women = [ 

118 "Evelyn Jefferson", 

119 "Laura Mandeville", 

120 "Theresa Anderson", 

121 "Brenda Rogers", 

122 "Charlotte McDowd", 

123 "Frances Anderson", 

124 "Eleanor Nye", 

125 "Pearl Oglethorpe", 

126 "Ruth DeSand", 

127 "Verne Sanderson", 

128 "Myra Liddel", 

129 "Katherina Rogers", 

130 "Sylvia Avondale", 

131 "Nora Fayette", 

132 "Helen Lloyd", 

133 "Dorothy Murchison", 

134 "Olivia Carleton", 

135 "Flora Price", 

136 ] 

137 G.add_nodes_from(women, bipartite=0) 

138 # Bottom nodes 

139 events = [ 

140 "E1", 

141 "E2", 

142 "E3", 

143 "E4", 

144 "E5", 

145 "E6", 

146 "E7", 

147 "E8", 

148 "E9", 

149 "E10", 

150 "E11", 

151 "E12", 

152 "E13", 

153 "E14", 

154 ] 

155 G.add_nodes_from(events, bipartite=1) 

156 

157 G.add_edges_from( 

158 [ 

159 ("Evelyn Jefferson", "E1"), 

160 ("Evelyn Jefferson", "E2"), 

161 ("Evelyn Jefferson", "E3"), 

162 ("Evelyn Jefferson", "E4"), 

163 ("Evelyn Jefferson", "E5"), 

164 ("Evelyn Jefferson", "E6"), 

165 ("Evelyn Jefferson", "E8"), 

166 ("Evelyn Jefferson", "E9"), 

167 ("Laura Mandeville", "E1"), 

168 ("Laura Mandeville", "E2"), 

169 ("Laura Mandeville", "E3"), 

170 ("Laura Mandeville", "E5"), 

171 ("Laura Mandeville", "E6"), 

172 ("Laura Mandeville", "E7"), 

173 ("Laura Mandeville", "E8"), 

174 ("Theresa Anderson", "E2"), 

175 ("Theresa Anderson", "E3"), 

176 ("Theresa Anderson", "E4"), 

177 ("Theresa Anderson", "E5"), 

178 ("Theresa Anderson", "E6"), 

179 ("Theresa Anderson", "E7"), 

180 ("Theresa Anderson", "E8"), 

181 ("Theresa Anderson", "E9"), 

182 ("Brenda Rogers", "E1"), 

183 ("Brenda Rogers", "E3"), 

184 ("Brenda Rogers", "E4"), 

185 ("Brenda Rogers", "E5"), 

186 ("Brenda Rogers", "E6"), 

187 ("Brenda Rogers", "E7"), 

188 ("Brenda Rogers", "E8"), 

189 ("Charlotte McDowd", "E3"), 

190 ("Charlotte McDowd", "E4"), 

191 ("Charlotte McDowd", "E5"), 

192 ("Charlotte McDowd", "E7"), 

193 ("Frances Anderson", "E3"), 

194 ("Frances Anderson", "E5"), 

195 ("Frances Anderson", "E6"), 

196 ("Frances Anderson", "E8"), 

197 ("Eleanor Nye", "E5"), 

198 ("Eleanor Nye", "E6"), 

199 ("Eleanor Nye", "E7"), 

200 ("Eleanor Nye", "E8"), 

201 ("Pearl Oglethorpe", "E6"), 

202 ("Pearl Oglethorpe", "E8"), 

203 ("Pearl Oglethorpe", "E9"), 

204 ("Ruth DeSand", "E5"), 

205 ("Ruth DeSand", "E7"), 

206 ("Ruth DeSand", "E8"), 

207 ("Ruth DeSand", "E9"), 

208 ("Verne Sanderson", "E7"), 

209 ("Verne Sanderson", "E8"), 

210 ("Verne Sanderson", "E9"), 

211 ("Verne Sanderson", "E12"), 

212 ("Myra Liddel", "E8"), 

213 ("Myra Liddel", "E9"), 

214 ("Myra Liddel", "E10"), 

215 ("Myra Liddel", "E12"), 

216 ("Katherina Rogers", "E8"), 

217 ("Katherina Rogers", "E9"), 

218 ("Katherina Rogers", "E10"), 

219 ("Katherina Rogers", "E12"), 

220 ("Katherina Rogers", "E13"), 

221 ("Katherina Rogers", "E14"), 

222 ("Sylvia Avondale", "E7"), 

223 ("Sylvia Avondale", "E8"), 

224 ("Sylvia Avondale", "E9"), 

225 ("Sylvia Avondale", "E10"), 

226 ("Sylvia Avondale", "E12"), 

227 ("Sylvia Avondale", "E13"), 

228 ("Sylvia Avondale", "E14"), 

229 ("Nora Fayette", "E6"), 

230 ("Nora Fayette", "E7"), 

231 ("Nora Fayette", "E9"), 

232 ("Nora Fayette", "E10"), 

233 ("Nora Fayette", "E11"), 

234 ("Nora Fayette", "E12"), 

235 ("Nora Fayette", "E13"), 

236 ("Nora Fayette", "E14"), 

237 ("Helen Lloyd", "E7"), 

238 ("Helen Lloyd", "E8"), 

239 ("Helen Lloyd", "E10"), 

240 ("Helen Lloyd", "E11"), 

241 ("Helen Lloyd", "E12"), 

242 ("Dorothy Murchison", "E8"), 

243 ("Dorothy Murchison", "E9"), 

244 ("Olivia Carleton", "E9"), 

245 ("Olivia Carleton", "E11"), 

246 ("Flora Price", "E9"), 

247 ("Flora Price", "E11"), 

248 ] 

249 ) 

250 G.graph["top"] = women 

251 G.graph["bottom"] = events 

252 return G 

253 

254 

255@nx._dispatchable(graphs=None, returns_graph=True) 

256def florentine_families_graph(): 

257 """Returns Florentine families graph. 

258 

259 References 

260 ---------- 

261 .. [1] Ronald L. Breiger and Philippa E. Pattison 

262 Cumulated social roles: The duality of persons and their algebras,1 

263 Social Networks, Volume 8, Issue 3, September 1986, Pages 215-256 

264 """ 

265 G = nx.Graph() 

266 G.add_edge("Acciaiuoli", "Medici") 

267 G.add_edge("Castellani", "Peruzzi") 

268 G.add_edge("Castellani", "Strozzi") 

269 G.add_edge("Castellani", "Barbadori") 

270 G.add_edge("Medici", "Barbadori") 

271 G.add_edge("Medici", "Ridolfi") 

272 G.add_edge("Medici", "Tornabuoni") 

273 G.add_edge("Medici", "Albizzi") 

274 G.add_edge("Medici", "Salviati") 

275 G.add_edge("Salviati", "Pazzi") 

276 G.add_edge("Peruzzi", "Strozzi") 

277 G.add_edge("Peruzzi", "Bischeri") 

278 G.add_edge("Strozzi", "Ridolfi") 

279 G.add_edge("Strozzi", "Bischeri") 

280 G.add_edge("Ridolfi", "Tornabuoni") 

281 G.add_edge("Tornabuoni", "Guadagni") 

282 G.add_edge("Albizzi", "Ginori") 

283 G.add_edge("Albizzi", "Guadagni") 

284 G.add_edge("Bischeri", "Guadagni") 

285 G.add_edge("Guadagni", "Lamberteschi") 

286 return G 

287 

288 

289@nx._dispatchable(graphs=None, returns_graph=True) 

290def les_miserables_graph(): 

291 """Returns coappearance network of characters in the novel Les Miserables. 

292 

293 References 

294 ---------- 

295 .. [1] D. E. Knuth, 1993. 

296 The Stanford GraphBase: a platform for combinatorial computing, 

297 pp. 74-87. New York: AcM Press. 

298 """ 

299 G = nx.Graph() 

300 G.add_edge("Napoleon", "Myriel", weight=1) 

301 G.add_edge("MlleBaptistine", "Myriel", weight=8) 

302 G.add_edge("MmeMagloire", "Myriel", weight=10) 

303 G.add_edge("MmeMagloire", "MlleBaptistine", weight=6) 

304 G.add_edge("CountessDeLo", "Myriel", weight=1) 

305 G.add_edge("Geborand", "Myriel", weight=1) 

306 G.add_edge("Champtercier", "Myriel", weight=1) 

307 G.add_edge("Cravatte", "Myriel", weight=1) 

308 G.add_edge("Count", "Myriel", weight=2) 

309 G.add_edge("OldMan", "Myriel", weight=1) 

310 G.add_edge("Valjean", "Labarre", weight=1) 

311 G.add_edge("Valjean", "MmeMagloire", weight=3) 

312 G.add_edge("Valjean", "MlleBaptistine", weight=3) 

313 G.add_edge("Valjean", "Myriel", weight=5) 

314 G.add_edge("Marguerite", "Valjean", weight=1) 

315 G.add_edge("MmeDeR", "Valjean", weight=1) 

316 G.add_edge("Isabeau", "Valjean", weight=1) 

317 G.add_edge("Gervais", "Valjean", weight=1) 

318 G.add_edge("Listolier", "Tholomyes", weight=4) 

319 G.add_edge("Fameuil", "Tholomyes", weight=4) 

320 G.add_edge("Fameuil", "Listolier", weight=4) 

321 G.add_edge("Blacheville", "Tholomyes", weight=4) 

322 G.add_edge("Blacheville", "Listolier", weight=4) 

323 G.add_edge("Blacheville", "Fameuil", weight=4) 

324 G.add_edge("Favourite", "Tholomyes", weight=3) 

325 G.add_edge("Favourite", "Listolier", weight=3) 

326 G.add_edge("Favourite", "Fameuil", weight=3) 

327 G.add_edge("Favourite", "Blacheville", weight=4) 

328 G.add_edge("Dahlia", "Tholomyes", weight=3) 

329 G.add_edge("Dahlia", "Listolier", weight=3) 

330 G.add_edge("Dahlia", "Fameuil", weight=3) 

331 G.add_edge("Dahlia", "Blacheville", weight=3) 

332 G.add_edge("Dahlia", "Favourite", weight=5) 

333 G.add_edge("Zephine", "Tholomyes", weight=3) 

334 G.add_edge("Zephine", "Listolier", weight=3) 

335 G.add_edge("Zephine", "Fameuil", weight=3) 

336 G.add_edge("Zephine", "Blacheville", weight=3) 

337 G.add_edge("Zephine", "Favourite", weight=4) 

338 G.add_edge("Zephine", "Dahlia", weight=4) 

339 G.add_edge("Fantine", "Tholomyes", weight=3) 

340 G.add_edge("Fantine", "Listolier", weight=3) 

341 G.add_edge("Fantine", "Fameuil", weight=3) 

342 G.add_edge("Fantine", "Blacheville", weight=3) 

343 G.add_edge("Fantine", "Favourite", weight=4) 

344 G.add_edge("Fantine", "Dahlia", weight=4) 

345 G.add_edge("Fantine", "Zephine", weight=4) 

346 G.add_edge("Fantine", "Marguerite", weight=2) 

347 G.add_edge("Fantine", "Valjean", weight=9) 

348 G.add_edge("MmeThenardier", "Fantine", weight=2) 

349 G.add_edge("MmeThenardier", "Valjean", weight=7) 

350 G.add_edge("Thenardier", "MmeThenardier", weight=13) 

351 G.add_edge("Thenardier", "Fantine", weight=1) 

352 G.add_edge("Thenardier", "Valjean", weight=12) 

353 G.add_edge("Cosette", "MmeThenardier", weight=4) 

354 G.add_edge("Cosette", "Valjean", weight=31) 

355 G.add_edge("Cosette", "Tholomyes", weight=1) 

356 G.add_edge("Cosette", "Thenardier", weight=1) 

357 G.add_edge("Javert", "Valjean", weight=17) 

358 G.add_edge("Javert", "Fantine", weight=5) 

359 G.add_edge("Javert", "Thenardier", weight=5) 

360 G.add_edge("Javert", "MmeThenardier", weight=1) 

361 G.add_edge("Javert", "Cosette", weight=1) 

362 G.add_edge("Fauchelevent", "Valjean", weight=8) 

363 G.add_edge("Fauchelevent", "Javert", weight=1) 

364 G.add_edge("Bamatabois", "Fantine", weight=1) 

365 G.add_edge("Bamatabois", "Javert", weight=1) 

366 G.add_edge("Bamatabois", "Valjean", weight=2) 

367 G.add_edge("Perpetue", "Fantine", weight=1) 

368 G.add_edge("Simplice", "Perpetue", weight=2) 

369 G.add_edge("Simplice", "Valjean", weight=3) 

370 G.add_edge("Simplice", "Fantine", weight=2) 

371 G.add_edge("Simplice", "Javert", weight=1) 

372 G.add_edge("Scaufflaire", "Valjean", weight=1) 

373 G.add_edge("Woman1", "Valjean", weight=2) 

374 G.add_edge("Woman1", "Javert", weight=1) 

375 G.add_edge("Judge", "Valjean", weight=3) 

376 G.add_edge("Judge", "Bamatabois", weight=2) 

377 G.add_edge("Champmathieu", "Valjean", weight=3) 

378 G.add_edge("Champmathieu", "Judge", weight=3) 

379 G.add_edge("Champmathieu", "Bamatabois", weight=2) 

380 G.add_edge("Brevet", "Judge", weight=2) 

381 G.add_edge("Brevet", "Champmathieu", weight=2) 

382 G.add_edge("Brevet", "Valjean", weight=2) 

383 G.add_edge("Brevet", "Bamatabois", weight=1) 

384 G.add_edge("Chenildieu", "Judge", weight=2) 

385 G.add_edge("Chenildieu", "Champmathieu", weight=2) 

386 G.add_edge("Chenildieu", "Brevet", weight=2) 

387 G.add_edge("Chenildieu", "Valjean", weight=2) 

388 G.add_edge("Chenildieu", "Bamatabois", weight=1) 

389 G.add_edge("Cochepaille", "Judge", weight=2) 

390 G.add_edge("Cochepaille", "Champmathieu", weight=2) 

391 G.add_edge("Cochepaille", "Brevet", weight=2) 

392 G.add_edge("Cochepaille", "Chenildieu", weight=2) 

393 G.add_edge("Cochepaille", "Valjean", weight=2) 

394 G.add_edge("Cochepaille", "Bamatabois", weight=1) 

395 G.add_edge("Pontmercy", "Thenardier", weight=1) 

396 G.add_edge("Boulatruelle", "Thenardier", weight=1) 

397 G.add_edge("Eponine", "MmeThenardier", weight=2) 

398 G.add_edge("Eponine", "Thenardier", weight=3) 

399 G.add_edge("Anzelma", "Eponine", weight=2) 

400 G.add_edge("Anzelma", "Thenardier", weight=2) 

401 G.add_edge("Anzelma", "MmeThenardier", weight=1) 

402 G.add_edge("Woman2", "Valjean", weight=3) 

403 G.add_edge("Woman2", "Cosette", weight=1) 

404 G.add_edge("Woman2", "Javert", weight=1) 

405 G.add_edge("MotherInnocent", "Fauchelevent", weight=3) 

406 G.add_edge("MotherInnocent", "Valjean", weight=1) 

407 G.add_edge("Gribier", "Fauchelevent", weight=2) 

408 G.add_edge("MmeBurgon", "Jondrette", weight=1) 

409 G.add_edge("Gavroche", "MmeBurgon", weight=2) 

410 G.add_edge("Gavroche", "Thenardier", weight=1) 

411 G.add_edge("Gavroche", "Javert", weight=1) 

412 G.add_edge("Gavroche", "Valjean", weight=1) 

413 G.add_edge("Gillenormand", "Cosette", weight=3) 

414 G.add_edge("Gillenormand", "Valjean", weight=2) 

415 G.add_edge("Magnon", "Gillenormand", weight=1) 

416 G.add_edge("Magnon", "MmeThenardier", weight=1) 

417 G.add_edge("MlleGillenormand", "Gillenormand", weight=9) 

418 G.add_edge("MlleGillenormand", "Cosette", weight=2) 

419 G.add_edge("MlleGillenormand", "Valjean", weight=2) 

420 G.add_edge("MmePontmercy", "MlleGillenormand", weight=1) 

421 G.add_edge("MmePontmercy", "Pontmercy", weight=1) 

422 G.add_edge("MlleVaubois", "MlleGillenormand", weight=1) 

423 G.add_edge("LtGillenormand", "MlleGillenormand", weight=2) 

424 G.add_edge("LtGillenormand", "Gillenormand", weight=1) 

425 G.add_edge("LtGillenormand", "Cosette", weight=1) 

426 G.add_edge("Marius", "MlleGillenormand", weight=6) 

427 G.add_edge("Marius", "Gillenormand", weight=12) 

428 G.add_edge("Marius", "Pontmercy", weight=1) 

429 G.add_edge("Marius", "LtGillenormand", weight=1) 

430 G.add_edge("Marius", "Cosette", weight=21) 

431 G.add_edge("Marius", "Valjean", weight=19) 

432 G.add_edge("Marius", "Tholomyes", weight=1) 

433 G.add_edge("Marius", "Thenardier", weight=2) 

434 G.add_edge("Marius", "Eponine", weight=5) 

435 G.add_edge("Marius", "Gavroche", weight=4) 

436 G.add_edge("BaronessT", "Gillenormand", weight=1) 

437 G.add_edge("BaronessT", "Marius", weight=1) 

438 G.add_edge("Mabeuf", "Marius", weight=1) 

439 G.add_edge("Mabeuf", "Eponine", weight=1) 

440 G.add_edge("Mabeuf", "Gavroche", weight=1) 

441 G.add_edge("Enjolras", "Marius", weight=7) 

442 G.add_edge("Enjolras", "Gavroche", weight=7) 

443 G.add_edge("Enjolras", "Javert", weight=6) 

444 G.add_edge("Enjolras", "Mabeuf", weight=1) 

445 G.add_edge("Enjolras", "Valjean", weight=4) 

446 G.add_edge("Combeferre", "Enjolras", weight=15) 

447 G.add_edge("Combeferre", "Marius", weight=5) 

448 G.add_edge("Combeferre", "Gavroche", weight=6) 

449 G.add_edge("Combeferre", "Mabeuf", weight=2) 

450 G.add_edge("Prouvaire", "Gavroche", weight=1) 

451 G.add_edge("Prouvaire", "Enjolras", weight=4) 

452 G.add_edge("Prouvaire", "Combeferre", weight=2) 

453 G.add_edge("Feuilly", "Gavroche", weight=2) 

454 G.add_edge("Feuilly", "Enjolras", weight=6) 

455 G.add_edge("Feuilly", "Prouvaire", weight=2) 

456 G.add_edge("Feuilly", "Combeferre", weight=5) 

457 G.add_edge("Feuilly", "Mabeuf", weight=1) 

458 G.add_edge("Feuilly", "Marius", weight=1) 

459 G.add_edge("Courfeyrac", "Marius", weight=9) 

460 G.add_edge("Courfeyrac", "Enjolras", weight=17) 

461 G.add_edge("Courfeyrac", "Combeferre", weight=13) 

462 G.add_edge("Courfeyrac", "Gavroche", weight=7) 

463 G.add_edge("Courfeyrac", "Mabeuf", weight=2) 

464 G.add_edge("Courfeyrac", "Eponine", weight=1) 

465 G.add_edge("Courfeyrac", "Feuilly", weight=6) 

466 G.add_edge("Courfeyrac", "Prouvaire", weight=3) 

467 G.add_edge("Bahorel", "Combeferre", weight=5) 

468 G.add_edge("Bahorel", "Gavroche", weight=5) 

469 G.add_edge("Bahorel", "Courfeyrac", weight=6) 

470 G.add_edge("Bahorel", "Mabeuf", weight=2) 

471 G.add_edge("Bahorel", "Enjolras", weight=4) 

472 G.add_edge("Bahorel", "Feuilly", weight=3) 

473 G.add_edge("Bahorel", "Prouvaire", weight=2) 

474 G.add_edge("Bahorel", "Marius", weight=1) 

475 G.add_edge("Bossuet", "Marius", weight=5) 

476 G.add_edge("Bossuet", "Courfeyrac", weight=12) 

477 G.add_edge("Bossuet", "Gavroche", weight=5) 

478 G.add_edge("Bossuet", "Bahorel", weight=4) 

479 G.add_edge("Bossuet", "Enjolras", weight=10) 

480 G.add_edge("Bossuet", "Feuilly", weight=6) 

481 G.add_edge("Bossuet", "Prouvaire", weight=2) 

482 G.add_edge("Bossuet", "Combeferre", weight=9) 

483 G.add_edge("Bossuet", "Mabeuf", weight=1) 

484 G.add_edge("Bossuet", "Valjean", weight=1) 

485 G.add_edge("Joly", "Bahorel", weight=5) 

486 G.add_edge("Joly", "Bossuet", weight=7) 

487 G.add_edge("Joly", "Gavroche", weight=3) 

488 G.add_edge("Joly", "Courfeyrac", weight=5) 

489 G.add_edge("Joly", "Enjolras", weight=5) 

490 G.add_edge("Joly", "Feuilly", weight=5) 

491 G.add_edge("Joly", "Prouvaire", weight=2) 

492 G.add_edge("Joly", "Combeferre", weight=5) 

493 G.add_edge("Joly", "Mabeuf", weight=1) 

494 G.add_edge("Joly", "Marius", weight=2) 

495 G.add_edge("Grantaire", "Bossuet", weight=3) 

496 G.add_edge("Grantaire", "Enjolras", weight=3) 

497 G.add_edge("Grantaire", "Combeferre", weight=1) 

498 G.add_edge("Grantaire", "Courfeyrac", weight=2) 

499 G.add_edge("Grantaire", "Joly", weight=2) 

500 G.add_edge("Grantaire", "Gavroche", weight=1) 

501 G.add_edge("Grantaire", "Bahorel", weight=1) 

502 G.add_edge("Grantaire", "Feuilly", weight=1) 

503 G.add_edge("Grantaire", "Prouvaire", weight=1) 

504 G.add_edge("MotherPlutarch", "Mabeuf", weight=3) 

505 G.add_edge("Gueulemer", "Thenardier", weight=5) 

506 G.add_edge("Gueulemer", "Valjean", weight=1) 

507 G.add_edge("Gueulemer", "MmeThenardier", weight=1) 

508 G.add_edge("Gueulemer", "Javert", weight=1) 

509 G.add_edge("Gueulemer", "Gavroche", weight=1) 

510 G.add_edge("Gueulemer", "Eponine", weight=1) 

511 G.add_edge("Babet", "Thenardier", weight=6) 

512 G.add_edge("Babet", "Gueulemer", weight=6) 

513 G.add_edge("Babet", "Valjean", weight=1) 

514 G.add_edge("Babet", "MmeThenardier", weight=1) 

515 G.add_edge("Babet", "Javert", weight=2) 

516 G.add_edge("Babet", "Gavroche", weight=1) 

517 G.add_edge("Babet", "Eponine", weight=1) 

518 G.add_edge("Claquesous", "Thenardier", weight=4) 

519 G.add_edge("Claquesous", "Babet", weight=4) 

520 G.add_edge("Claquesous", "Gueulemer", weight=4) 

521 G.add_edge("Claquesous", "Valjean", weight=1) 

522 G.add_edge("Claquesous", "MmeThenardier", weight=1) 

523 G.add_edge("Claquesous", "Javert", weight=1) 

524 G.add_edge("Claquesous", "Eponine", weight=1) 

525 G.add_edge("Claquesous", "Enjolras", weight=1) 

526 G.add_edge("Montparnasse", "Javert", weight=1) 

527 G.add_edge("Montparnasse", "Babet", weight=2) 

528 G.add_edge("Montparnasse", "Gueulemer", weight=2) 

529 G.add_edge("Montparnasse", "Claquesous", weight=2) 

530 G.add_edge("Montparnasse", "Valjean", weight=1) 

531 G.add_edge("Montparnasse", "Gavroche", weight=1) 

532 G.add_edge("Montparnasse", "Eponine", weight=1) 

533 G.add_edge("Montparnasse", "Thenardier", weight=1) 

534 G.add_edge("Toussaint", "Cosette", weight=2) 

535 G.add_edge("Toussaint", "Javert", weight=1) 

536 G.add_edge("Toussaint", "Valjean", weight=1) 

537 G.add_edge("Child1", "Gavroche", weight=2) 

538 G.add_edge("Child2", "Gavroche", weight=2) 

539 G.add_edge("Child2", "Child1", weight=3) 

540 G.add_edge("Brujon", "Babet", weight=3) 

541 G.add_edge("Brujon", "Gueulemer", weight=3) 

542 G.add_edge("Brujon", "Thenardier", weight=3) 

543 G.add_edge("Brujon", "Gavroche", weight=1) 

544 G.add_edge("Brujon", "Eponine", weight=1) 

545 G.add_edge("Brujon", "Claquesous", weight=1) 

546 G.add_edge("Brujon", "Montparnasse", weight=1) 

547 G.add_edge("MmeHucheloup", "Bossuet", weight=1) 

548 G.add_edge("MmeHucheloup", "Joly", weight=1) 

549 G.add_edge("MmeHucheloup", "Grantaire", weight=1) 

550 G.add_edge("MmeHucheloup", "Bahorel", weight=1) 

551 G.add_edge("MmeHucheloup", "Courfeyrac", weight=1) 

552 G.add_edge("MmeHucheloup", "Gavroche", weight=1) 

553 G.add_edge("MmeHucheloup", "Enjolras", weight=1) 

554 return G