ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

べき乗則とネット信頼通貨コミュのPython

  • mixiチェック
  • このエントリーをはてなブックマークに追加
先日、二流さんからご紹介いただいたPython勉強中。

http://www.python.jp/Zope/intro/instant_python_jp

リストの概念がものすごく強力みたい。ネットワークの構造を表現するのに使えないか目論見中。

ノード番号:1,2,3,4,5,6,...
リスト構造:[a,b,c,d,e,f...]

ここで、たとえばa=[2,3]とリストの入れ子にすると、ノード1は、ノード2、3とリンクしていると表現できる。

どないなもんでっしゃろ?現実にいずれかのプログラミング言語で複雑ネットワークのシュミレーションを屋っていらっしゃる方のご意見をお聞きしたい。

コメント(27)

Mathematicaのcombinatoricaパッケージも使えます。
最短距離やランダムグラフを扱う関数が用意されています。
mathematicaって高いのじゃあなかったでしたっけ?Pythonってフリーです(よね?)。Rに期待しましたが、これは本当に統計パッケージですね。カルキングというのもあるみたいですけど、どうなんでしょうね?やっぱり、数理パッケージだけみたいなきもしてます。CとかJavaはvoid()とか書く時点ですでに挫折してしまっています(笑)。

yoriさん、貴重な情報ありがとうございました。
ようやくリストを使ってグラフ、ネットワークを表現するテストを始めました。なんか完成するまでには、白髪が生えてきてしまいそう...

先日、例の構造計画研究所のサイトから「つかわしてくれ!」と書いたら「あんたまじ?」みたいなメッセージが出てきてしまいました。まあ、非アカデミックなので、しょうがないのですが...

例のBOXED ECONOMYは未だにモデルを作るところにすらいたりません...

こんな私に合いの手を、いや、愛の手を!
あーー構造計画研究所ってうちのすぐ近くだ。。。
いつも頭良さそうで、ちょっとアートっぽい人とかがロビーで打ち合わせをしているのが見えるところです。

って全然トピックに(ある意味)関係ないコメントでごめんなさい
どうも、はじめましてです。
ひできさんの言われているネットワークが、
コンピューターネットワークでないと分かって、
やっと言っている意味が分かりました。

グラフの頂点集合:Vに対し、グラフの辺を
関数f:V×V→{0, 1} で与えるとする。
このとき、Pythonでこれをオブジェクト化する上手い手法または、そのようなパッケージについて問われているのですね?

私は既存のものやセオリー的手法は知らないですが、
関数fの与え方は、mixiのマイミク関係のグラフであれば、圧倒的に 0 にマップされる箇所が圧倒的に多いと思いますので、リスト入れ子にする方法がV×Vのビットマップを持つよりは良いと思われます。マイミクは対称な関係だからと言ってその分の無駄を省くと、こんどは逆に大変な事になるように思います。関数fの更新を無視して良いならそれでも良いかも知れませんが、よくわかりません。

ひできさんは、例えばmixiで、id=1の人からのマイミク関係からなるエルデス数のようなものを考えて「it's small world!」と事を言いたいような感じなのでしょうか?
あ、私はPythonのコミュから来ました。
上で「やっと言っている意味が分かりました。 」と言ったのは、
ひできさんがPythonコミュで書かれた質問についてでした。
ロボ平さん、こんにちわ、

そーーーーなんですよ!最近のネットワーク分析ってやつで、結構使われる可能性がたかい「f」だと思うんですね。多分、なんらかの構造体を定義してやれば簡単なことだと思うのですが...

操作としては、

・ノード(頂点)を加える
・リンク(エッジ)を任意のノード(頂点)の間ではる
・任意のノードを削除する(当然付随するリンクも)
・任意のノードのリンクの様子をリストとしてreturnできる

といったところが基本でしょうか?

これの応用として、全体のリンクの数、全体のノードの数、クラスター係数の計算、任意のノードの最短パス長、といった出力が考えられると思います。

ちなみに、ネットワークの分野だとほんとうに「スモール・ワールド・ネットワーク」というモデルが存在します。
用語については、今やっと参照してみました。>ひできさん
「スモール・ワールド・ネットワーク」は初耳でした。

mixiをサンプルに考えると、
招待関係(有向辺)とマイミク関係(無向辺)を考える必要があり、またidに対して追加時onで削除後にoffになるような生死フラグも必要に思います。
そして、idの死によってマイミク関係の辺は削除されるが、招待関係は存続する。
それらを全部含んだ構造を考えれば、とりあえずmixiに関しては要求は満たされるように思います。

招待関係は、見事な有効な辺からなる樹木グラフになるでしょう。(正確にあらわす名称を私は知りません)
マイミク関係は、どうなるでしょうか???コミュニティとの相関も気になってきますね。

ところで、mixi全体ってマイミク関係において連結なんでしょうかね?idの死によって島が出来てしまってないんでしょうか??って、mixiの中の人に聞かないと分からないですね。
Pythonの辞書を用いてidをキーとしたこのようなオブジェクト

{自分のid: int,
招待された、または招待したlist: list[int],   # 追加のみ
生死フラグ: True/False,
マイミクlist: list[int]            # 追加削除あり
}

を考えれば、

> ・ノード(頂点)を加える
> ・リンク(エッジ)を任意のノード(頂点)の間ではる
> ・任意のノードを削除する(当然付随するリンクも)
> ・任意のノードのリンクの様子をリストとしてreturnできる

は満たされそうです。ただ、マイミクlistの更新には、相手側も更新しなくてはならないので注意が必要です。

話は戻って、
> これの応用として、全体のリンクの数、全体のノードの数、クラスター係数の計算、任意のノードの最短パス長、といった出力が考えられると思います。

これを実装するパッケージがあれば、それに合わせるのが本当は一番正しいように思いますね。私はそーいうものは知らないんですけど、、、。なにもPythonにこだわる事はないと思いますよ。
いま、ロボ平さんのところにおじゃましてきましたけど、この辺のネットワーク関係って書評を書いてらっしゃる「ゲーデル、エッシャー、バッハ」と深く、深く関係があるような気がしてなりません。って、私はホフスタッターの論文を2つ、3つ読んだことがある程度なのですけど...

それはそうと...

フラグでやると、最短パスとか計算するときとかに、

for target_nord in ノードの辞書:
 ...

とかやろうとしたとき、いちいちフラグをみなければいけなくないですか?

working_link_list=ノード辞書[ノード番号]

とか渡せるとかっこいいかな、とか思っていたのですが、あまりに素人考えでしょうか?

まあ、そもそもおっしゃるような「実装するパッケージ」があれば、なにもいうことはないのですが。。。頼人[yori]さんがおっしゃるように、mathematicaなんですかねぇ...
うぷぷ、¥320、706.−!!!

http://www.amazon.co.jp/exec/obidos/search-handle-url/index=software-jp&field-keywords=mathematica/ref=xs_ap_l_xgl65/249-9879745-8351522
学生版なら3万ちょいです。

というのはサテオキ、
言語は何でもよいと思います。

この目的のために新たな言語を習得したり、製品を買ったりする必要はないでしょう。

私が書く立場になったらPerlかCですがこれは単に慣れているからであって、他の人に勧めようとまでは思いません。
残念「ゲーデル、エッシャー、バッハ」はほとんど関係が無いと思われます。
これは、一般の人向けの気の利いた数学を用いた読み物ですよ。

ちなに、私は招待関係は情報として貴重なので、捨てたく無いと考えたので、上のようなデータの持ち方を考えたのですが、計算のために母集合を減らすことを考えると確かに、いらないノードが存在する事になりますね。
実際の計算は、データベースのスナップショットから計算されるんではないでしょうか?ならばそこからフラグを見てノードを消すぐらいの作業があっても、、、ってダメですか?
もしや、リアルタイムに最大経路や平均経路を求めたいのでしょうか?それは難しいでしょーねー。
うう、そーなんですか。ホフスタッターはちょっと後にまわして...

なにをやりたいか、そして私がどの程度のプログラムしかできないかというと、この辺のレベルです。

http://hidekih.cocolog-nifty.com/hpo/2004/11/geodesics_geode.html

あと、こんなのも書きました。

http://hidekih.cocolog-nifty.com/hpo/2004/12/social_network_.html

ああ、こんなやつだからって軽蔑しないでやってくださいね。

んで、ホフスタッターに戻るのですが、私がネットワーク思考にはまったひとつのルーツは、彼の書いた「風船の中の玉モデル」というか、ライプニッツのモナドみたいなものをモデルとして使って自己言及、自己相似形というか合わせ鏡というか、そういうモデルで「認知」(私の当時の専攻)を説明できるのではないか、という当時(平成になるちょっと前)に「現代思想」あたりに発表された論文なんですね。これをベースに哲学の授業で書いたレポートで「A」をいただいた、と。中埜肇先生に...

最近、ブログをいろいろ書いている中で、このレポートの内容が思い出されてならないんですね。なんといか、当時は相互作用とか自己言及みたいなものってもう解析不能みたいな扱いだったのですが、上記のネットワークのシミュレーションを含めて、誰でもモデル構築に使えるようになりつつあるのが、なんとなくうれしくて...また、どうも複雑ネットワークの関連の本を読んでいると、非線形が出てくるのですが、この辺も自己相似というか、スケールフリーなんてことを言われるわけですね。

まあ、私は全くアカデミックの人間ではないので、こんな勝手ことを言っているのですが...まあ、素人のたわごととお笑いください。
なんかほんとにpythonでのシミュレーションパッケージがあるようです。

http://simpy.sourceforge.net/images/SimPy%20paper.pdf

ちゃんとネットワークのシミュレーションもできるようです。

ああ、あとはpythonをきちんと理解するだけ...道は遠そう。
ほんとうは、別スレをたてるべきなのですが、ちゃんとネットワークの分析ツールって存在しました。

http://bioinfo-goto.seesaa.net/category/67276.html

Pajekというツールです。soreyukeさんのこの記事をかなり昔に読ませていただいていたにもかかわらず、その重要さがわかっていませんでした。

本家のサイトからインストールしてみましたが、とりあえずネットワーク図を書くことができました。ダイナミクスのシュミレーションもこれでできればいうことはありません。

Pythonベースには思えないんですけどねぇ。↑のSimPyからのリンクがちゃんとありました。
一応、公開する(ほどのものでもないですが)ところまで来ました。とりあえず当初書いたことは見たしたつもりです。あとは、ちゃんとこのデータ構造でパス長とか求めるスクリプトをどうかくかですね。長くなりますが、引用しちゃいます。

http://d.hatena.ne.jp/hihi01/20050615/p2
相互作用のシミュレーションにSimPyつかえないかなぁ、とか思っています。もうちょっとPythonに熟達したらやってみたいと思っています。

そーいやぁ、Pythonで構造体をリストでくくれるんですかね?
と、いうことはですね。私のnetwork_model構造体に二流さんの作った構造体をnordのvalueとして、操作可能だということですかね?あまり、役に立たないかもしれませんが...
なんつうか、pythonって、インタープリター部分(IDEL?)でどんどん試していって、自分でパターンを見つけて、そこをモジュールにしていくと、いつのまにかある程度まとまったブロックがかけているみたいな、すんごく習得性が高いように感じました。これなら、私にもできそう!って感じがびんびん伝わってきます。特に、前に入力したスクリプトにカーソルを持っていってエンターを押すと、編集モードになる、ということを発見してから一気に学習がすすみました。

こんなすばらしい言語を紹介してくださってありがとうございます。>二流さん

つぎは、ランダム、スモールワールド、スケールフリー、正規格子などのネットワークの生成と、それらの最短パス長を求めることに挑戦します。

http://www.geocities.jp/m_hiroi/func/smlnj09.html

finalventさんのところで紹介されていた↑に刺激されています。
最短経路の探索はCマガジン2月号「グラフ理論入門」も役に立ちます。
頼人さんのおすすめで、帰りがけにCマガジンを立ち読みして発見!

http://www.graphviz.org/

やっぱ、結構グラフ(ネットワークの数学的な呼び方)を描くソフトってあるんですね。これはかなり表現力にすぐれているみたいですね。
ちなみに2月号とは...

http://store.sbpnet.jp/bm_detail.asp?sku=1008200410

うーん、なんかおもしろそう!

ログインすると、残り4件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

べき乗則とネット信頼通貨 更新情報

べき乗則とネット信頼通貨のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。