スケールフリーネットワーク・シュミレーター作成中 SF-net programming
ネットワークへの興味がつきない。最近、なにを聞いても考えても「ネットワーク思考」してしまう。特にマーケティングに関することで、会社から消費者につながる社会的な構造がスケールフリーネットワーク的な性質を持つと仮定すると、いろいろなことが説明できそうな気がしてならない。
この気が高じてとうとうスケールフリーネットワークのシュミレーションに手をだしてしまった。まだまだ、この場で報告するのも恥ずかしい状態なのだが、すこしでもヒントが欲しい時期なので、中間報告というか、第一四半期報告にも満たない状態だが、いまのありのままを書いてしまう。
以下、シュミレーション作成時に用いたメモ。
目的: 一定のルールに基づいて、ノードとノードのリンクをシュミレーションする。 定義:
ノード:とりあえず20個。20×20の配列であらわす。初期値0(リンクなし)。dim nord{20,20} リンク:ノードnとノードmのリンクを、{n,m}の配列に「1」が入ると有方向のリンクがはられたとあらわす。i.e. n→m nord{n,m}:=1 ノード数:nord_nにあらわす。 ノード毎リンク数:link_n、link_colum_n[20]、link_law_n[20]であらわす。 リンク総数、配列nordを横、縦に足しあげた数。操作: SFネット方式 ノード生成:nord_nをひとつ大きくする。 ノードをひとつ生成するたびにリンクを生成する。 リンク生成:配列link_nの合計以下の整数の乱数r_tempを発生させる。順番に配列link_colum_n[j]をr_tempから引く。答えがマイナスになったときのnord[new_link,j]に新しいリンクを発生させる。(1をいれる) 状態表示:nord[20,20]を順に画面表示する。 ヴァリエーション:リンクできるノードの数を制限する。link_n合計の変わりに制限数nord_limitを使う。(未実装)
使った言葉は、ActiveBasicというN88-BasicのWindowsにおける拡張版であった。私のようなオールド・タイプには、とてもとっつきのいい言葉だった。このような素晴らしい言語をフリーソフトとして提供されている製作者に深く感謝したい。
ActiveBasic自体に比べれば、プログラムと呼ぶのもおこがましいくらいの試みだが、十数年ぶりにBasicでなにかの目的をもったかたまりを作った。割と楽しかったというのが実感。
ちなみに、使い方だがノードあたりのリンクの数を入れてエンターを押していくだけ。いまのことろ、ノードの数を20に制限してあるので、ご注意。もう一度最初からやりたい場合は、「初期化」のSを入力する。終わるときは「END」のEだ。なんどか繰り返すと以下のような画面がコンソールで出てくる(要は昔懐かしいDOSのプログラムなのだ)。
本当にわかりにくいはと思うのだが、縦系列にリンクを貼る元のノード、横系列リンクを張られたノードと考えて欲しい。例えば上から4番目、左から2番目のセルに数字の「1」が入っているのは、4番のノードから2番のノードに張られたリンクを意味する。一番右の列と、一番下の行がそれぞれのリンク、被リンクの数を示す。ここにべき乗則があてはまるかは、検証中。これから、これを可視する試みにトライするつもり。乞うご期待!
■追記 0:04
調子にのってノード間のリンクを可視化するサブルーティンを追加した。ますます、↓のユキジさんの論文にお世話になっていることになる。いくつもリンクをはっても仕方がないので、改訂版で↑のソースファイルとEXEファイルへのURLを置き換えた。
ただ、どうも一番肝心かなめのリンク生成の部分のアルゴリズムがうまくないようだ。乱数を発生させてリンクの多いノードほど生成しやすいという考え方でやっているのだが、どうもうまくない。素直に反省して、また考え直す。
■参考リンク
・「ネットワークの違いがダイナミクスに与える影響」 by ユキジさん
・blogの持つスモールワールド性 by 和田昌樹さん
・Blogを考察する上で参考となる論文 by 和田昌樹さん
・べき乗則とランチェスターの法則 (HPO)
| 固定リンク
この記事へのコメントは終了しました。
コメント