annotate scripts/topology/treen.rb @ 183:75150396681c working

use synchronizedList
author e095732
date Tue, 26 Feb 2013 14:24:23 +0900
parents 7e99ae6e4c7d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 def create_nodes(node_num)
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 (0..node_num - 1).map { |i|
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 i = "node" + i.to_s
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 }
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 def print_dot(connections)
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 puts "digraph test {"
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 connections.each { |connection|
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 print "\t"
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 print connection[0]
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 print " -> "
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 print connection[1]
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 print ' [label="' + connection[2] + '"]'
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 puts
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 }
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 puts "}"
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 node_num = ARGV[0].to_i
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 child_num = ARGV[1].to_i
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 nodes = create_nodes(node_num)
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 connections = Array.new
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 nodes.each_with_index { |node, i|
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 child1 = child_num * i + 1
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 if child1 >= node_num then
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 nodes[i] = "cli" + i.to_s
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 nodes.each_with_index { |node, i|
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 parent = (i - 1) / child_num;
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 child = Array.new
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 for n in 1..child_num
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 child[n] = child_num * i + n
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 if parent >= 0 then
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 connections << [nodes[i], nodes[parent], "parent"]
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 for n in 1..child_num
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 if child[n] < node_num then
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 connections << [nodes[i], nodes[child[n]], "child"+(n-1).to_s]
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 end
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 }
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 print_dot(connections)
7e99ae6e4c7d add tree script
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47