我有一个netlogo问题。我有一些与(无向)链接相连的节点图结构。我需要弄清楚哪个是这些结构中最小的子图。基本上子图意味着哪些节点彼此连接。所以,如果我有一个5节点的结构,节点1连接到2和3;节点2到3,1和4;节点3到1,2和5我需要检测节点1,2和3的子图,因为它们都是互连的。
有一种简单的方法可以做到这一点,还是基本上没有计算机可行?
编辑:我发现如果我使用netlogo扩展名nw,我可以使用nw:maximal-cliques方法来计算我想要的内容。虽然现在我有另一个问题。我正试图以这种方式填写一份clique列表
let lista-cliques [nw:maximal-cliques] of turtles with [guild = g]
lista-cliques的长度通常为2,但第一个应该是clique列表的元素就是这样的列表
[[[nobody] [nobody] [nobody] [nobody]...etc
当具有guild = g的海龟制作的图表长度为2-8只时,长度为300的。是否调用了nw:maximal-cliques?
关于我做错什么的任何想法?
编辑2:我想通过这样做来确定如何修复列表的长度
let lista-cliques (list ([nw:maximal-cliques] of turtles with [guild = g]))
现在列表不是300个节点,而是等于图表上节点数量为guild = g的节点数量。
这意味着
length item 1 lista-cliques
等于
count turtles with [guild = g]
这也显然是错误的,因为我可以看到节点只连接到一个或两个节点的图形。我想我越来越近但我不知道为什么nw:maximal-cliques没有创建最大派系列表,而是创建图表上所有节点的列表。
有什么想法吗?
由于
答案 0 :(得分:3)
您对nw:maximal-cliques
的使用不太正确。
我认为您通过指定of turtles with [guild = g]
来表达的内容类似于“只考虑作为公会 g 的一部分的海龟”,但它实际上意味着什么NetLogo“为那些属于公会 g 的每只乌龟运行of
之前的记者,并列出”。 (就像,例如,[color] of turtles
将为每只乌龟运行[color]
报告块一次,并根据结果构建颜色列表。)
nw:maximal-cliques
是一个在整个网络上运行的原语,因此您不希望为每个乌龟运行一次。就像nw
扩展中的大多数原语一样,您需要使用nw:set-snapshot
原语告诉它要操作哪些海龟和链接。
我认为你可以通过简单的方式实现你想要的目标:
nw:set-snapshot (turtles with [guild = g]) links
let lista-cliques nw:maximal-cliques
(请注意,nw:set-snapshot
会获取网络的静态“图片”,进一步调用nw
原语。如果您的网络发生变化,则需要致电nw:set-snapshot
拍摄新照片。这可能会在未来版本的扩展中发生变化。)