如何避免两次在两个节点之间添加链接

时间:2015-06-18 17:42:18

标签: network-programming netlogo

我已经制定了以下netlogo程序,该程序创建了一个网络,该网络具有给定数量的节点和节点之间的无向链接:

to setup
  ;; Here I created the nodes and sort them around a circle
  clear-all
  create-turtles number-of-nodes 
  layout-circle turtles max-pxcor

  ;; Here I add the links
  let i 0
  while [i < number-of-links] [
    ;; I randomly extract two nodes and link them
    let node1 random number-of-nodes
    let node2 random number-of-nodes
    if node1 != node2 [
      ask turtle node1 [ create-link-with turtle node2 ]
    ] 
    set i i + 1
  ]

  reset-ticks
end

问题是,这也可能在已连接的节点之间添加链接。有没有办法知道两个节点是否连接,如果它们已经连接,我可以随机提取另一个数字?

1 个答案:

答案 0 :(得分:2)

link-neighbor?会告诉你的。这是一个乌龟记者,它需要一个论点;如果它连接到你想要知道的乌龟。所以:

ask n-of number-of-links turtles [create-link-with one-of other turtles with [not link-neighbor? myself]]

会做到这一点。请记住,这会给你的网络一个特定的结构(我认为随机网络?)但我不是那方面的专家。

可替换地,

repeat number-of-links [ ask one-of turtles [create-link-with one-of other turtles with [not link-neighbor? myself] ] 会给你另一种结构。

两者之间的区别在于,在前者中,每只乌龟都会创建一个到另一只乌龟的链接。在后者中,可以多次随机选择相同的乌龟来创建与另一只乌龟的链接。