给定一个turtle-set nodes
,我想找到nodes
中具有两端的所有链接。我到目前为止所提出的最好的是:
link-set [ my-links with [ member? other-end nodes ] ] of nodes
这正是我想要的。但是,由于member?
以非线性集的线性时间运行,因此O(n*n*d)
(其中d
是节点的最大度数,n
是节点数)。我可以使用哈希集来改进它,但这需要滥用table
扩展名,找到第三方扩展名,或者创建自己的扩展名。我还可以创建节点的who
个数量的排序列表,然后对其执行二进制搜索以降低O(n * log(n) * d)
,但我希望得到更简单的答案。有什么想法吗?
答案 0 :(得分:6)
这是一个古怪的想法:
links-own [ i ]
to-report links-between [ nodes ]
ask links [ set i 0 ]
ask nodes [ ask my-links [ set i i + 1 ] ]
report links with [ i = 2 ]
end
它不是世界上最优雅的东西,但它很简单,而且我相信只有O( n * d )。