0

ネットロゴについて質問があります。(無向) リンクで接続されたノードのグラフ構造がいくつかあります。これらの構造の 1 つに含まれる最小のサブグラフを特定する必要があります。基本的にサブグラフとは、どのノードがすべて相互に接続されているかを意味します。したがって、5 つのノードの構造があり、ノード 1 が 2 と 3 に接続されているとします。ノード 2 から 3、1 および 4。ノード 3 から 1、2、および 5 ノード 1、2、および 3 はすべて相互接続されているため、ノード 1、2、および 3 のサブグラフを検出する必要があります。

これを行う簡単な方法はありますか、それとも基本的に計算上不可能ですか?

編集: netlogo 拡張機能 nw を使用すると、 nw:maximal-cliques メソッドを使用して必要なものを計算できることがわかりました。今は別の問題がありますが。このようにして派閥のリストのリストを埋めようとしています

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 ノードではなく、ギルド = g のノードを含むグラフ上のノードの数と同じです。

つまり、

length item 1 lista-cliques

に等しい

count turtles with [guild = g]

ノードが 1 つまたは 2 つのノードにしか接続されていないグラフが表示されるため、これも明らかに間違っています。近づいていると思いますが、nw:maximal-cliques が最大クリークのリストではなく、グラフ上のすべてのノードのリストを作成する理由がわかりません。

何か案は?

ありがとう

4

1 に答える 1

3

の使用法nw:maximal-cliquesは完全に正しくありません。

指定することで表現しようとしているのは「ギルドgof turtles with [guild = g]に所属するタートルだけを考慮に入れる」みたいなことだと思いますが、NetLogoにとっての意味は「ギルドgに所属するタートルごとに先行するレポーターを実行する」ということです。ギルドGを作成し、それからリストを作成します. (たとえば、タートルごとにレポーター ブロックを 1 回実行し、結果で色のリストを作成するのと同じです。)of[color] of turtles[color]

nw:maximal-cliquesはネットワーク全体で動作するプリミティブであるため、タートルごとに 1 回実行する必要はありません。拡張機能のほとんどのプリミティブと同様に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、新しい画像を取得するために呼び出す必要があります。これは、拡張機能の将来のバージョンで変更される可能性があります。)

于 2013-02-10T16:10:52.447 に答える