Bry*_*ead 6 graph-theory netlogo
给定一个乌龟集nodes
,我想找到所有具有两端的链接nodes
.到目前为止我提出的最好的是:
link-set [ my-links with [ member? other-end nodes ] ] of nodes
Run Code Online (Sandbox Code Playgroud)
这正是我想要的.但是,由于member?
非线性集的线性时间运行,因此O(n*n*d)
(d
节点的最大程度和n
节点数).我可以使用哈希集来改进它,但这需要滥用table
扩展,找到第三方扩展,或者创建自己的扩展.我还可以创建一个who
节点数量的排序列表,然后对它进行二进制搜索O(n * log(n) * d)
,但我希望得到一个更简单的答案.有任何想法吗?
这是一个古怪的想法:
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
Run Code Online (Sandbox Code Playgroud)
它不是世界上最优雅的东西,但它足够简单,而且我相信只有O(n*d).
归档时间: |
|
查看次数: |
678 次 |
最近记录: |