Prologで可変グラフを効率的に表現したいと思います。グラフでサブセットを検索し、それらを他のサブセットに置き換えます。
データベースを「グラフストレージ」として使用して、なんとか機能させることができました。たとえば、私は持っています:
:- dynamic step/2.
% step(Type, Name).
:- dynamic sequence/2.
% sequence(Step, NextStep).
retract
次に、一致したサブセットにいくつかのルールを使用し、を使用してそれらを新しいステップに置き換えますassert
。私はこの方法が本当に好きです...読みやすく、扱いやすいので、Prologに多くの重いパターンマッチング作業を任せています。
グラフを表すために私が知っているもう1つの方法は、ノードと隣接接続のリストを使用することです。この方法を使用しているWebサイトをたくさん見ましたが、オーバーヘッドが大きいため、少し躊躇しています。
実行時間は私にとって重要であり、私自身の開発のしやすさも重要です。
どちらのアプローチの長所/短所は何ですか?