networkr 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1035 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Networkr
8
+
9
+ &mdash; Documentation by YARD 0.9.5
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "Networkr";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index (N)</a> &raquo;
40
+
41
+
42
+ <span class="title">Networkr</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame" src="class_list.html"></iframe>
63
+
64
+ <div id="content"><h1>Module: Networkr
65
+
66
+
67
+
68
+ </h1>
69
+ <div class="box_info">
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ <dl>
82
+ <dt>Defined in:</dt>
83
+ <dd>lib/networkr/graphs/digraph.rb<span class="defines">,<br />
84
+ lib/networkr.rb,<br /> lib/networkr/version.rb,<br /> lib/networkr/graphs/graph.rb,<br /> lib/networkr/algorithms/prim.rb,<br /> lib/networkr/graphs/multigraph.rb,<br /> lib/networkr/algorithms/karger.rb,<br /> lib/networkr/algorithms/kosaraju.rb,<br /> lib/networkr/algorithms/dijkstra.rb</span>
85
+ </dd>
86
+ </dl>
87
+
88
+ </div>
89
+
90
+ <h2>Overview</h2><div class="docstring">
91
+ <div class="discussion">
92
+
93
+ <p>Takes undirected, weighted graph, nonnegative weights O(|V|**2)</p>
94
+
95
+
96
+ </div>
97
+ </div>
98
+ <div class="tags">
99
+
100
+
101
+ </div><h2>Defined Under Namespace</h2>
102
+ <p class="children">
103
+
104
+
105
+
106
+
107
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Networkr/DiGraph.html" title="Networkr::DiGraph (class)">DiGraph</a></span>, <span class='object_link'><a href="Networkr/Graph.html" title="Networkr::Graph (class)">Graph</a></span>, <span class='object_link'><a href="Networkr/MultiGraph.html" title="Networkr::MultiGraph (class)">MultiGraph</a></span>, <span class='object_link'><a href="Networkr/Tracker.html" title="Networkr::Tracker (class)">Tracker</a></span>
108
+
109
+
110
+ </p>
111
+
112
+ <h2>Constant Summary</h2>
113
+ <dl class="constants">
114
+
115
+ <dt id="VERSION-constant" class="">VERSION =
116
+
117
+ </dt>
118
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0.1</span><span class='tstring_end'>&quot;</span></span></pre></dd>
119
+
120
+ </dl>
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+ <h2>
130
+ Class Method Summary
131
+ <small><a href="#" class="summary_toggle">collapse</a></small>
132
+ </h2>
133
+
134
+ <ul class="summary">
135
+
136
+ <li class="public ">
137
+ <span class="summary_signature">
138
+
139
+ <a href="#contract-class_method" title="contract (class method)">.<strong>contract</strong>(g, node1, node2) &#x21d2; Object </a>
140
+
141
+
142
+
143
+ </span>
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+ <span class="summary_desc"><div class='inline'></div></span>
154
+
155
+ </li>
156
+
157
+
158
+ <li class="public ">
159
+ <span class="summary_signature">
160
+
161
+ <a href="#dfs-class_method" title="dfs (class method)">.<strong>dfs</strong>(graph, stack, v, tracker) &#x21d2; Object </a>
162
+
163
+
164
+
165
+ </span>
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ <span class="summary_desc"><div class='inline'></div></span>
176
+
177
+ </li>
178
+
179
+
180
+ <li class="public ">
181
+ <span class="summary_signature">
182
+
183
+ <a href="#dfs_loop-class_method" title="dfs_loop (class method)">.<strong>dfs_loop</strong>(graph, tracker) &#x21d2; Object </a>
184
+
185
+
186
+
187
+ </span>
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+ <span class="summary_desc"><div class='inline'></div></span>
198
+
199
+ </li>
200
+
201
+
202
+ <li class="public ">
203
+ <span class="summary_signature">
204
+
205
+ <a href="#dijkstra-class_method" title="dijkstra (class method)">.<strong>dijkstra</strong>(g, source_node) &#x21d2; Object </a>
206
+
207
+
208
+
209
+ </span>
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+ <span class="summary_desc"><div class='inline'></div></span>
220
+
221
+ </li>
222
+
223
+
224
+ <li class="public ">
225
+ <span class="summary_signature">
226
+
227
+ <a href="#karger-class_method" title="karger (class method)">.<strong>karger</strong>(g) &#x21d2; Object </a>
228
+
229
+
230
+
231
+ </span>
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+ <span class="summary_desc"><div class='inline'></div></span>
242
+
243
+ </li>
244
+
245
+
246
+ <li class="public ">
247
+ <span class="summary_signature">
248
+
249
+ <a href="#karger_repeated-class_method" title="karger_repeated (class method)">.<strong>karger_repeated</strong>(g) &#x21d2; Object </a>
250
+
251
+
252
+
253
+ </span>
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+ <span class="summary_desc"><div class='inline'></div></span>
264
+
265
+ </li>
266
+
267
+
268
+ <li class="public ">
269
+ <span class="summary_signature">
270
+
271
+ <a href="#kosaraju-class_method" title="kosaraju (class method)">.<strong>kosaraju</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; Object </a>
272
+
273
+
274
+
275
+ </span>
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+ <span class="summary_desc"><div class='inline'></div></span>
286
+
287
+ </li>
288
+
289
+
290
+ <li class="public ">
291
+ <span class="summary_signature">
292
+
293
+ <a href="#kosaraju_num_scc-class_method" title="kosaraju_num_scc (class method)">.<strong>kosaraju_num_scc</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; Object </a>
294
+
295
+
296
+
297
+ </span>
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+ <span class="summary_desc"><div class='inline'></div></span>
308
+
309
+ </li>
310
+
311
+
312
+ <li class="public ">
313
+ <span class="summary_signature">
314
+
315
+ <a href="#kosaraju_scc_sizes-class_method" title="kosaraju_scc_sizes (class method)">.<strong>kosaraju_scc_sizes</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; Object </a>
316
+
317
+
318
+
319
+ </span>
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+ <span class="summary_desc"><div class='inline'></div></span>
330
+
331
+ </li>
332
+
333
+
334
+ <li class="public ">
335
+ <span class="summary_signature">
336
+
337
+ <a href="#min_edge-class_method" title="min_edge (class method)">.<strong>min_edge</strong>(g, vertices_spanned) &#x21d2; Object </a>
338
+
339
+
340
+
341
+ </span>
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+ <span class="summary_desc"><div class='inline'></div></span>
352
+
353
+ </li>
354
+
355
+
356
+ <li class="public ">
357
+ <span class="summary_signature">
358
+
359
+ <a href="#num_scc-class_method" title="num_scc (class method)">.<strong>num_scc</strong>(tracker2) &#x21d2; Object </a>
360
+
361
+
362
+
363
+ </span>
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+ <span class="summary_desc"><div class='inline'></div></span>
374
+
375
+ </li>
376
+
377
+
378
+ <li class="public ">
379
+ <span class="summary_signature">
380
+
381
+ <a href="#prim-class_method" title="prim (class method)">.<strong>prim</strong>(g, start) &#x21d2; Object </a>
382
+
383
+
384
+
385
+ </span>
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+ <span class="summary_desc"><div class='inline'></div></span>
396
+
397
+ </li>
398
+
399
+
400
+ <li class="public ">
401
+ <span class="summary_signature">
402
+
403
+ <a href="#sizes-class_method" title="sizes (class method)">.<strong>sizes</strong>(tracker2) &#x21d2; Object </a>
404
+
405
+
406
+
407
+ </span>
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ <span class="summary_desc"><div class='inline'></div></span>
418
+
419
+ </li>
420
+
421
+
422
+ </ul>
423
+
424
+
425
+
426
+
427
+ <div id="class_method_details" class="method_details_list">
428
+ <h2>Class Method Details</h2>
429
+
430
+
431
+ <div class="method_details first">
432
+ <h3 class="signature first" id="contract-class_method">
433
+
434
+ .<strong>contract</strong>(g, node1, node2) &#x21d2; <tt>Object</tt>
435
+
436
+
437
+
438
+
439
+
440
+ </h3><table class="source_code">
441
+ <tr>
442
+ <td>
443
+ <pre class="lines">
444
+
445
+
446
+ 23
447
+ 24
448
+ 25
449
+ 26
450
+ 27
451
+ 28
452
+ 29
453
+ 30</pre>
454
+ </td>
455
+ <td>
456
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/karger.rb', line 23</span>
457
+
458
+ <span class='kw'>def</span> <span class='id identifier rubyid_contract'>contract</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_node1'>node1</span><span class='comma'>,</span> <span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span>
459
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_children_of'>children_of</span><span class='lparen'>(</span><span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each_key'>each_key</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_node'>node</span><span class='op'>|</span>
460
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_add_edge'>add_edge</span><span class='lparen'>(</span><span class='id identifier rubyid_node1'>node1</span><span class='comma'>,</span> <span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_node'>node</span> <span class='op'>!=</span> <span class='id identifier rubyid_node1'>node1</span>
461
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_node'>node</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span>
462
+ <span class='kw'>end</span>
463
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span>
464
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_nodes'>nodes</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span>
465
+ <span class='kw'>end</span></pre>
466
+ </td>
467
+ </tr>
468
+ </table>
469
+ </div>
470
+
471
+ <div class="method_details ">
472
+ <h3 class="signature " id="dfs-class_method">
473
+
474
+ .<strong>dfs</strong>(graph, stack, v, tracker) &#x21d2; <tt>Object</tt>
475
+
476
+
477
+
478
+
479
+
480
+ </h3><table class="source_code">
481
+ <tr>
482
+ <td>
483
+ <pre class="lines">
484
+
485
+
486
+ 40
487
+ 41
488
+ 42
489
+ 43
490
+ 44
491
+ 45
492
+ 46
493
+ 47
494
+ 48
495
+ 49
496
+ 50
497
+ 51
498
+ 52
499
+ 53
500
+ 54</pre>
501
+ </td>
502
+ <td>
503
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 40</span>
504
+
505
+ <span class='kw'>def</span> <span class='id identifier rubyid_dfs'>dfs</span><span class='lparen'>(</span><span class='id identifier rubyid_graph'>graph</span><span class='comma'>,</span> <span class='id identifier rubyid_stack'>stack</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='rparen'>)</span>
506
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_explored'>explored</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_v'>v</span>
507
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_graph'>graph</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span>
508
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_leaders'>leaders</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span>
509
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_time'>current_time</span> <span class='op'>+=</span> <span class='int'>1</span>
510
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_finishing_times'>finishing_times</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_time'>current_time</span>
511
+ <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span>
512
+ <span class='kw'>else</span>
513
+ <span class='id identifier rubyid_graph'>graph</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each_key'>each_key</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_w'>w</span><span class='op'>|</span>
514
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_explored'>explored</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_w'>w</span><span class='rparen'>)</span>
515
+ <span class='id identifier rubyid_stack'>stack</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_w'>w</span>
516
+ <span class='kw'>end</span>
517
+ <span class='kw'>end</span>
518
+ <span class='kw'>end</span>
519
+ <span class='kw'>end</span></pre>
520
+ </td>
521
+ </tr>
522
+ </table>
523
+ </div>
524
+
525
+ <div class="method_details ">
526
+ <h3 class="signature " id="dfs_loop-class_method">
527
+
528
+ .<strong>dfs_loop</strong>(graph, tracker) &#x21d2; <tt>Object</tt>
529
+
530
+
531
+
532
+
533
+
534
+ </h3><table class="source_code">
535
+ <tr>
536
+ <td>
537
+ <pre class="lines">
538
+
539
+
540
+ 20
541
+ 21
542
+ 22
543
+ 23
544
+ 24
545
+ 25
546
+ 26
547
+ 27
548
+ 28
549
+ 29
550
+ 30
551
+ 31
552
+ 32
553
+ 33
554
+ 34
555
+ 35
556
+ 36
557
+ 37
558
+ 38</pre>
559
+ </td>
560
+ <td>
561
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 20</span>
562
+
563
+ <span class='kw'>def</span> <span class='id identifier rubyid_dfs_loop'>dfs_loop</span><span class='lparen'>(</span><span class='id identifier rubyid_graph'>graph</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='rparen'>)</span>
564
+ <span class='id identifier rubyid_graph'>graph</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_reverse_each'>reverse_each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_i'>i</span><span class='op'>|</span>
565
+ <span class='id identifier rubyid_stack'>stack</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span>
566
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_source'>current_source</span> <span class='op'>=</span> <span class='id identifier rubyid_i'>i</span>
567
+ <span class='kw'>while</span> <span class='op'>!</span><span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
568
+ <span class='id identifier rubyid_v'>v</span> <span class='op'>=</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span>
569
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_explored'>explored</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_v'>v</span><span class='rparen'>)</span>
570
+ <span class='id identifier rubyid_dfs'>dfs</span><span class='lparen'>(</span><span class='id identifier rubyid_graph'>graph</span><span class='comma'>,</span> <span class='id identifier rubyid_stack'>stack</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='rparen'>)</span>
571
+ <span class='kw'>else</span>
572
+ <span class='kw'>if</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_finishing_times'>finishing_times</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span>
573
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_leaders'>leaders</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_source'>current_source</span>
574
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_time'>current_time</span> <span class='op'>+=</span> <span class='int'>1</span>
575
+ <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_finishing_times'>finishing_times</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_tracker'>tracker</span><span class='period'>.</span><span class='id identifier rubyid_current_time'>current_time</span>
576
+ <span class='kw'>end</span>
577
+ <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span>
578
+ <span class='kw'>end</span>
579
+ <span class='kw'>end</span>
580
+ <span class='kw'>end</span>
581
+ <span class='kw'>end</span></pre>
582
+ </td>
583
+ </tr>
584
+ </table>
585
+ </div>
586
+
587
+ <div class="method_details ">
588
+ <h3 class="signature " id="dijkstra-class_method">
589
+
590
+ .<strong>dijkstra</strong>(g, source_node) &#x21d2; <tt>Object</tt>
591
+
592
+
593
+
594
+
595
+
596
+ </h3><table class="source_code">
597
+ <tr>
598
+ <td>
599
+ <pre class="lines">
600
+
601
+
602
+ 9
603
+ 10
604
+ 11
605
+ 12
606
+ 13
607
+ 14
608
+ 15
609
+ 16
610
+ 17
611
+ 18
612
+ 19
613
+ 20
614
+ 21
615
+ 22
616
+ 23
617
+ 24
618
+ 25
619
+ 26
620
+ 27
621
+ 28
622
+ 29
623
+ 30
624
+ 31
625
+ 32
626
+ 33</pre>
627
+ </td>
628
+ <td>
629
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/dijkstra.rb', line 9</span>
630
+
631
+ <span class='kw'>def</span> <span class='id identifier rubyid_dijkstra'>dijkstra</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_source_node'>source_node</span><span class='rparen'>)</span>
632
+ <span class='id identifier rubyid_nodes_processed'>nodes_processed</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_source_node'>source_node</span><span class='rbracket'>]</span>
633
+ <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
634
+ <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span><span class='lbracket'>[</span><span class='id identifier rubyid_source_node'>source_node</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='int'>0</span>
635
+
636
+ <span class='kw'>while</span> <span class='id identifier rubyid_nodes_processed'>nodes_processed</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>!=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
637
+ <span class='id identifier rubyid_shortest'>shortest</span> <span class='op'>=</span> <span class='kw'>nil</span>
638
+ <span class='id identifier rubyid_start_node'>start_node</span> <span class='op'>=</span> <span class='kw'>nil</span>
639
+ <span class='id identifier rubyid_end_node'>end_node</span> <span class='op'>=</span> <span class='kw'>nil</span>
640
+ <span class='id identifier rubyid_nodes_processed'>nodes_processed</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_node'>node</span><span class='op'>|</span>
641
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_children_of'>children_of</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='op'>|</span>
642
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_nodes_processed'>nodes_processed</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_v'>v</span><span class='rparen'>)</span>
643
+ <span class='kw'>if</span> <span class='id identifier rubyid_shortest'>shortest</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span><span class='lbracket'>[</span><span class='id identifier rubyid_node'>node</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:weight</span><span class='rbracket'>]</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_shortest'>shortest</span>
644
+ <span class='id identifier rubyid_shortest'>shortest</span> <span class='op'>=</span> <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span><span class='lbracket'>[</span><span class='id identifier rubyid_node'>node</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:weight</span><span class='rbracket'>]</span>
645
+ <span class='id identifier rubyid_start_node'>start_node</span> <span class='op'>=</span> <span class='id identifier rubyid_node'>node</span>
646
+ <span class='id identifier rubyid_end_node'>end_node</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span>
647
+ <span class='kw'>end</span>
648
+ <span class='kw'>end</span>
649
+ <span class='kw'>end</span>
650
+ <span class='kw'>end</span>
651
+ <span class='id identifier rubyid_nodes_processed'>nodes_processed</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_end_node'>end_node</span>
652
+ <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span><span class='lbracket'>[</span><span class='id identifier rubyid_end_node'>end_node</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_shortest'>shortest</span>
653
+ <span class='kw'>end</span>
654
+ <span class='id identifier rubyid_shortest_path_distances'>shortest_path_distances</span>
655
+ <span class='kw'>end</span></pre>
656
+ </td>
657
+ </tr>
658
+ </table>
659
+ </div>
660
+
661
+ <div class="method_details ">
662
+ <h3 class="signature " id="karger-class_method">
663
+
664
+ .<strong>karger</strong>(g) &#x21d2; <tt>Object</tt>
665
+
666
+
667
+
668
+
669
+
670
+ </h3><table class="source_code">
671
+ <tr>
672
+ <td>
673
+ <pre class="lines">
674
+
675
+
676
+ 11
677
+ 12
678
+ 13
679
+ 14
680
+ 15
681
+ 16
682
+ 17
683
+ 18
684
+ 19
685
+ 20
686
+ 21</pre>
687
+ </td>
688
+ <td>
689
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/karger.rb', line 11</span>
690
+
691
+ <span class='kw'>def</span> <span class='id identifier rubyid_karger'>karger</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='rparen'>)</span>
692
+ <span class='kw'>while</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='int'>2</span>
693
+ <span class='id identifier rubyid_node1'>node1</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_sample'>sample</span>
694
+ <span class='id identifier rubyid_node2'>node2</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_children_of'>children_of</span><span class='lparen'>(</span><span class='id identifier rubyid_node1'>node1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_sample'>sample</span>
695
+ <span class='id identifier rubyid_e'>e</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_node1'>node1</span><span class='comma'>,</span> <span class='id identifier rubyid_node2'>node2</span><span class='rbracket'>]</span>
696
+ <span class='id identifier rubyid_contract'>contract</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_node1'>node1</span><span class='comma'>,</span> <span class='id identifier rubyid_node2'>node2</span><span class='rparen'>)</span>
697
+ <span class='kw'>end</span>
698
+ <span class='id identifier rubyid_node1'>node1</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
699
+ <span class='id identifier rubyid_node2'>node2</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
700
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_node1'>node1</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_node2'>node2</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
701
+ <span class='kw'>end</span></pre>
702
+ </td>
703
+ </tr>
704
+ </table>
705
+ </div>
706
+
707
+ <div class="method_details ">
708
+ <h3 class="signature " id="karger_repeated-class_method">
709
+
710
+ .<strong>karger_repeated</strong>(g) &#x21d2; <tt>Object</tt>
711
+
712
+
713
+
714
+
715
+
716
+ </h3><table class="source_code">
717
+ <tr>
718
+ <td>
719
+ <pre class="lines">
720
+
721
+
722
+ 32
723
+ 33
724
+ 34
725
+ 35
726
+ 36
727
+ 37
728
+ 38
729
+ 39
730
+ 40
731
+ 41</pre>
732
+ </td>
733
+ <td>
734
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/karger.rb', line 32</span>
735
+
736
+ <span class='kw'>def</span> <span class='id identifier rubyid_karger_repeated'>karger_repeated</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='rparen'>)</span>
737
+ <span class='id identifier rubyid_g_copy'>g_copy</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_deep_copy'>deep_copy</span>
738
+
739
+ <span class='id identifier rubyid_n'>n</span> <span class='op'>=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
740
+ <span class='id identifier rubyid_mincut'>mincut</span> <span class='op'>=</span> <span class='id identifier rubyid_n'>n</span>
741
+ <span class='lparen'>(</span><span class='id identifier rubyid_n'>n</span> <span class='op'>**</span> <span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span>
742
+ <span class='id identifier rubyid_mincut'>mincut</span> <span class='op'>=</span> <span class='id identifier rubyid_karger'>karger</span><span class='lparen'>(</span><span class='id identifier rubyid_g_copy'>g_copy</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_karger'>karger</span><span class='lparen'>(</span><span class='id identifier rubyid_g_copy'>g_copy</span><span class='rparen'>)</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_mincut'>mincut</span>
743
+ <span class='kw'>end</span>
744
+ <span class='id identifier rubyid_mincut'>mincut</span>
745
+ <span class='kw'>end</span></pre>
746
+ </td>
747
+ </tr>
748
+ </table>
749
+ </div>
750
+
751
+ <div class="method_details ">
752
+ <h3 class="signature " id="kosaraju-class_method">
753
+
754
+ .<strong>kosaraju</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; <tt>Object</tt>
755
+
756
+
757
+
758
+
759
+
760
+ </h3><table class="source_code">
761
+ <tr>
762
+ <td>
763
+ <pre class="lines">
764
+
765
+
766
+ 56
767
+ 57
768
+ 58
769
+ 59
770
+ 60
771
+ 61
772
+ 62
773
+ 63</pre>
774
+ </td>
775
+ <td>
776
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 56</span>
777
+
778
+ <span class='kw'>def</span> <span class='id identifier rubyid_kosaraju'>kosaraju</span><span class='lparen'>(</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
779
+ <span class='id identifier rubyid_dfs_loop'>dfs_loop</span><span class='lparen'>(</span><span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='rparen'>)</span>
780
+ <span class='id identifier rubyid_sorted_graph_adj'>sorted_graph_adj</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='period'>.</span><span class='id identifier rubyid_finishing_times'>finishing_times</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='rbracket'>]</span>
781
+ <span class='id identifier rubyid_sorted_graph'>sorted_graph</span> <span class='op'>=</span> <span class='const'>DiGraph</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
782
+ <span class='id identifier rubyid_sorted_graph'>sorted_graph</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span> <span class='op'>=</span> <span class='id identifier rubyid_sorted_graph_adj'>sorted_graph_adj</span>
783
+ <span class='id identifier rubyid_dfs_loop'>dfs_loop</span><span class='lparen'>(</span><span class='id identifier rubyid_sorted_graph'>sorted_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
784
+ <span class='id identifier rubyid_tracker2'>tracker2</span>
785
+ <span class='kw'>end</span></pre>
786
+ </td>
787
+ </tr>
788
+ </table>
789
+ </div>
790
+
791
+ <div class="method_details ">
792
+ <h3 class="signature " id="kosaraju_num_scc-class_method">
793
+
794
+ .<strong>kosaraju_num_scc</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; <tt>Object</tt>
795
+
796
+
797
+
798
+
799
+
800
+ </h3><table class="source_code">
801
+ <tr>
802
+ <td>
803
+ <pre class="lines">
804
+
805
+
806
+ 70
807
+ 71
808
+ 72
809
+ 73</pre>
810
+ </td>
811
+ <td>
812
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 70</span>
813
+
814
+ <span class='kw'>def</span> <span class='id identifier rubyid_kosaraju_num_scc'>kosaraju_num_scc</span><span class='lparen'>(</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
815
+ <span class='id identifier rubyid_tracker2'>tracker2</span> <span class='op'>=</span> <span class='id identifier rubyid_kosaraju'>kosaraju</span><span class='lparen'>(</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
816
+ <span class='id identifier rubyid_num_scc'>num_scc</span><span class='lparen'>(</span><span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
817
+ <span class='kw'>end</span></pre>
818
+ </td>
819
+ </tr>
820
+ </table>
821
+ </div>
822
+
823
+ <div class="method_details ">
824
+ <h3 class="signature " id="kosaraju_scc_sizes-class_method">
825
+
826
+ .<strong>kosaraju_scc_sizes</strong>(original_graph, graph_rev, tracker1, tracker2) &#x21d2; <tt>Object</tt>
827
+
828
+
829
+
830
+
831
+
832
+ </h3><table class="source_code">
833
+ <tr>
834
+ <td>
835
+ <pre class="lines">
836
+
837
+
838
+ 65
839
+ 66
840
+ 67
841
+ 68</pre>
842
+ </td>
843
+ <td>
844
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 65</span>
845
+
846
+ <span class='kw'>def</span> <span class='id identifier rubyid_kosaraju_scc_sizes'>kosaraju_scc_sizes</span><span class='lparen'>(</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
847
+ <span class='id identifier rubyid_tracker2'>tracker2</span> <span class='op'>=</span> <span class='id identifier rubyid_kosaraju'>kosaraju</span><span class='lparen'>(</span><span class='id identifier rubyid_original_graph'>original_graph</span><span class='comma'>,</span> <span class='id identifier rubyid_graph_rev'>graph_rev</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker1'>tracker1</span><span class='comma'>,</span> <span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
848
+ <span class='id identifier rubyid_sizes'>sizes</span><span class='lparen'>(</span><span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
849
+ <span class='kw'>end</span></pre>
850
+ </td>
851
+ </tr>
852
+ </table>
853
+ </div>
854
+
855
+ <div class="method_details ">
856
+ <h3 class="signature " id="min_edge-class_method">
857
+
858
+ .<strong>min_edge</strong>(g, vertices_spanned) &#x21d2; <tt>Object</tt>
859
+
860
+
861
+
862
+
863
+
864
+ </h3><table class="source_code">
865
+ <tr>
866
+ <td>
867
+ <pre class="lines">
868
+
869
+
870
+ 20
871
+ 21
872
+ 22
873
+ 23
874
+ 24
875
+ 25
876
+ 26
877
+ 27
878
+ 28
879
+ 29
880
+ 30
881
+ 31
882
+ 32
883
+ 33
884
+ 34</pre>
885
+ </td>
886
+ <td>
887
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/prim.rb', line 20</span>
888
+
889
+ <span class='kw'>def</span> <span class='id identifier rubyid_min_edge'>min_edge</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span><span class='rparen'>)</span>
890
+ <span class='id identifier rubyid_min_edge'>min_edge</span> <span class='op'>=</span> <span class='kw'>nil</span>
891
+ <span class='id identifier rubyid_min_cost'>min_cost</span> <span class='op'>=</span> <span class='float'>1.0</span><span class='op'>/</span><span class='int'>0</span>
892
+ <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_u'>u</span><span class='op'>|</span>
893
+ <span class='kw'>if</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_u'>u</span><span class='rbracket'>]</span>
894
+ <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_adj'>adj</span><span class='lbracket'>[</span><span class='id identifier rubyid_u'>u</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='op'>|</span>
895
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_v'>v</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:weight</span><span class='rbracket'>]</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_min_cost'>min_cost</span>
896
+ <span class='id identifier rubyid_min_edge'>min_edge</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_u'>u</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span>
897
+ <span class='id identifier rubyid_min_cost'>min_cost</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:weight</span><span class='rbracket'>]</span>
898
+ <span class='kw'>end</span>
899
+ <span class='kw'>end</span>
900
+ <span class='kw'>end</span>
901
+ <span class='kw'>end</span>
902
+ <span class='lbracket'>[</span><span class='id identifier rubyid_min_edge'>min_edge</span><span class='comma'>,</span> <span class='id identifier rubyid_min_cost'>min_cost</span><span class='rbracket'>]</span>
903
+ <span class='kw'>end</span></pre>
904
+ </td>
905
+ </tr>
906
+ </table>
907
+ </div>
908
+
909
+ <div class="method_details ">
910
+ <h3 class="signature " id="num_scc-class_method">
911
+
912
+ .<strong>num_scc</strong>(tracker2) &#x21d2; <tt>Object</tt>
913
+
914
+
915
+
916
+
917
+
918
+ </h3><table class="source_code">
919
+ <tr>
920
+ <td>
921
+ <pre class="lines">
922
+
923
+
924
+ 84
925
+ 85
926
+ 86</pre>
927
+ </td>
928
+ <td>
929
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 84</span>
930
+
931
+ <span class='kw'>def</span> <span class='id identifier rubyid_num_scc'>num_scc</span><span class='lparen'>(</span><span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
932
+ <span class='id identifier rubyid_tracker2'>tracker2</span><span class='period'>.</span><span class='id identifier rubyid_leaders'>leaders</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
933
+ <span class='kw'>end</span></pre>
934
+ </td>
935
+ </tr>
936
+ </table>
937
+ </div>
938
+
939
+ <div class="method_details ">
940
+ <h3 class="signature " id="prim-class_method">
941
+
942
+ .<strong>prim</strong>(g, start) &#x21d2; <tt>Object</tt>
943
+
944
+
945
+
946
+
947
+
948
+ </h3><table class="source_code">
949
+ <tr>
950
+ <td>
951
+ <pre class="lines">
952
+
953
+
954
+ 9
955
+ 10
956
+ 11
957
+ 12
958
+ 13
959
+ 14
960
+ 15
961
+ 16
962
+ 17
963
+ 18</pre>
964
+ </td>
965
+ <td>
966
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/prim.rb', line 9</span>
967
+
968
+ <span class='kw'>def</span> <span class='id identifier rubyid_prim'>prim</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_start'>start</span><span class='rparen'>)</span>
969
+ <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_start'>start</span><span class='rbracket'>]</span>
970
+ <span class='id identifier rubyid_tree_so_far'>tree_so_far</span> <span class='op'>=</span> <span class='const'>Graph</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
971
+ <span class='kw'>while</span> <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>!=</span> <span class='id identifier rubyid_g'>g</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
972
+ <span class='id identifier rubyid_e'>e</span> <span class='op'>=</span> <span class='id identifier rubyid_min_edge'>min_edge</span><span class='lparen'>(</span><span class='id identifier rubyid_g'>g</span><span class='comma'>,</span> <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span><span class='rparen'>)</span>
973
+ <span class='id identifier rubyid_tree_so_far'>tree_so_far</span><span class='period'>.</span><span class='id identifier rubyid_add_edge'>add_edge</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>weight:</span> <span class='id identifier rubyid_e'>e</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
974
+ <span class='id identifier rubyid_vertices_spanned'>vertices_spanned</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_e'>e</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
975
+ <span class='kw'>end</span>
976
+ <span class='id identifier rubyid_tree_so_far'>tree_so_far</span>
977
+ <span class='kw'>end</span></pre>
978
+ </td>
979
+ </tr>
980
+ </table>
981
+ </div>
982
+
983
+ <div class="method_details ">
984
+ <h3 class="signature " id="sizes-class_method">
985
+
986
+ .<strong>sizes</strong>(tracker2) &#x21d2; <tt>Object</tt>
987
+
988
+
989
+
990
+
991
+
992
+ </h3><table class="source_code">
993
+ <tr>
994
+ <td>
995
+ <pre class="lines">
996
+
997
+
998
+ 75
999
+ 76
1000
+ 77
1001
+ 78
1002
+ 79
1003
+ 80
1004
+ 81
1005
+ 82</pre>
1006
+ </td>
1007
+ <td>
1008
+ <pre class="code"><span class="info file"># File 'lib/networkr/algorithms/kosaraju.rb', line 75</span>
1009
+
1010
+ <span class='kw'>def</span> <span class='id identifier rubyid_sizes'>sizes</span><span class='lparen'>(</span><span class='id identifier rubyid_tracker2'>tracker2</span><span class='rparen'>)</span>
1011
+ <span class='id identifier rubyid_frequencies'>frequencies</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span>
1012
+ <span class='id identifier rubyid_tracker2'>tracker2</span><span class='period'>.</span><span class='id identifier rubyid_leaders'>leaders</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='op'>|</span>
1013
+ <span class='id identifier rubyid_frequencies'>frequencies</span><span class='lbracket'>[</span><span class='id identifier rubyid_v'>v</span><span class='rbracket'>]</span> <span class='op'>+=</span> <span class='int'>1</span>
1014
+ <span class='kw'>end</span>
1015
+
1016
+ <span class='id identifier rubyid_frequencies'>frequencies</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_sort'>sort</span><span class='period'>.</span><span class='id identifier rubyid_reverse'>reverse</span>
1017
+ <span class='kw'>end</span></pre>
1018
+ </td>
1019
+ </tr>
1020
+ </table>
1021
+ </div>
1022
+
1023
+ </div>
1024
+
1025
+ </div>
1026
+
1027
+ <div id="footer">
1028
+ Generated on Sun Jul 24 17:23:15 2016 by
1029
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1030
+ 0.9.5 (ruby-2.1.2).
1031
+ </div>
1032
+
1033
+ </div>
1034
+ </body>
1035
+ </html>