2011-07-15 12 views
2

免責事項:著者はErlangの初心者です。Erlangの有向グラフの中には何がありますか?

私はErlangにある種の最短パスアルゴリズムを実装したいと思います。

Erlangでグラフデータ構造の標準実装があります:http://www.erlang.org/doc/man/digraph.html

しかし、私はそれが使用する実際のデータ構造上の任意の情報を見つけていません。

ほとんど私が知りたいのですが:

  • 頂点アクションのためにすべての「ネイバー」を得るための最悪のパフォーマンスは何ですか?
  • グラフから頂点をフェッチする最悪のパフォーマンスは?

答えて

7

有向グラフは、3つのetsテーブル(頂点、エッジ、隣接する頂点)を使用します。

したがって、両方の操作はO(1)です。

OTPコードを見てみましょう。これはきれいで、ほとんどの場合、慣用的なErlangです。 stdlibのgen.erl + gen_server.erl、proc_lib.erl、およびsys.erlを読む必要があります。

+0

ありがとうございました! P.S.私はErlangを学ぶ最善の方法は "Erlang/OTP in action"などの本を読むことだと思っていましたが、いくつかのソースコードも読まなければならないようです。学習プロセスの初めから初心者がソースコードを読まなければなりませんか?どう思いますか? – skanatek

+0

機能的なシーケンシャル・エルランで快適になった後 - はい、間違いなく。だから、gen + gen_serverは(比較的)簡単に読むことができます。 – probsolver

関連する問題