我有一个txt文件,其中存储了所需图形的定向链接。第一列和第二列表示节点的ID:“1 122”表示节点1和节点122之间存在链接。
1 122
1 2
2 1
2 1000
...
我的问题:
a) 是否可以将这样的 txt 文件导入 NetLogo 并用它创建图表?
b) 文件已超过 100,000 行。这会导致问题吗?
谢谢!
最佳答案
这实际上非常简单!
turtles-own [ node-id ]
to import-graph [ filename ]
file-open filename
while [ not file-at-end? ] [
let source get-or-create-node file-read
let target get-or-create-node file-read
ask source [ create-link-to target ]
]
end
to-report get-or-create-node [ id ]
let nodes turtles with [ node-id = id ]
if not any? nodes [
crt 1 [ set node-id id set nodes turtle-set self ]
]
report one-of nodes
end
file-read
实际从文件中读取数字的工作。
这种方法的一个缺点是它必须搜索所有海龟才能找到具有特定 ID 的海龟。当加载具有大量节点的图表时,这可能会很慢。在这些情况下,您可以使用 table扩展以维护将节点 ID 映射到海龟的表。
请注意,对于图形和网络文件的几种常见格式,您可以使用 network扩展名来导入文件。 NetLogo 的下一版本将支持更多文件类型(尽管不是您这里的文件类型)。
至于 100,000:这是相当大的,不是因为文件的大小,而是因为如果每行有一个链接,则模型中有 100,000 个链接。移动海龟可能会很慢,但查询网络(例如使用网络扩展)应该仍然相当快。
关于matrix - NetLogo:如何导入2列邻接表来创建图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376002/