-# $Id: topogen.tcl,v 1.3 2007/05/07 08:43:20 ana Exp $
+# $Id: topogen.tcl,v 1.4 2007/12/13 12:45:09 marko Exp $
#
# Copyright 2007 University of Zagreb, Croatia. All rights reserved.
#
}
}
+set m .menubar.t_g.random
+menu $m -tearoff 0
+.menubar.t_g add cascade -label "Random" -menu $m -underline 0 -state disabled
+for { set i 3 } { $i <= 24 } { incr i } {
+ set n $m.$i
+ menu $n -tearoff 0
+ $m add cascade -label "R($i,m)" -menu $n -underline 0
+ set l [expr $i - 1]
+ for { set j $l } { $j < [expr { $i * $l / 2 }] } { incr j } {
+ $n add command -label "R($i,$j)" -command "R \[newNodes $i\] $j"
+ if { $j > [expr $i + 24] } {
+ break
+ }
+ }
+}
proc newNodes { n } {
global curcanvas grid sizex sizey activetool
proc Kbhelper { n m } {
set v [newNodes [expr $n + $m]]
- Kb [lrange $v 0 [expr $n -1]] [lrange $v $n end]
+ Kb [lrange $v 0 [expr $n - 1]] [lrange $v $n end]
+}
+
+#
+# Random
+#
+proc R { v m } {
+ set cn [lindex $v 0]
+ set dn [lrange $v 1 end]
+
+ set i 0
+ while { $i < $m } {
+ if { [llength $dn] > 0 } {
+ set node_1 [expr int(rand() * [llength $cn])]
+ set node_2 [expr int(rand() * [llength $dn])]
+ newLink [lindex $cn $node_1] [lindex $dn $node_2]
+ lappend cn [lindex $dn $node_2]
+ set dn [lreplace $dn $node_2 $node_2]
+ incr i
+ } else {
+ set node_1 [expr int(rand() * [llength $v])]
+ set node_2 [expr int(rand() * [llength $v])]
+ if { $node_1 != $node_2 &&
+ [linkByPeers [lindex $v $node_1] [lindex $v $node_2]] == ""} {
+ newLink [lindex $v $node_1] [lindex $v $node_2]
+ incr i
+ }
+ }
+ }
+ topoGenDone $v
}