ペトリネットプログラムを作成しているときに、グラフを表すデータ構造に関する選択に直面しました。隣接リスト(つまり、個々の場所または遷移への弧を列挙するリスト)は実装が簡単ですが、ペトリネットの理論を研究しているときに、マトリックスベースの状態方程式アプローチの美しさに夢中になりました。おそらく、スパース行列を使用する必要があります。
どちらが私を不思議に思いました-行と列の両方で高速な列挙を提供するスパース行列の実装はありますか?そうでない場合、Erlangなどの関数型言語で2部グラフを構築して効率的にトラバースできる代替手段はありますか?
FWIW-「効率的に」とは、この場合、特定の遷移または場所に発生するアークをすばやく列挙することを意味します。トレードオフが必要な場合は、時間とスペースをトレードするほうが幸せです。グラフは作成後に変更されないため、挿入や更新に特に効率的である必要はありません。
TIA