Эффективное представление изменяемого графа в Прологе?

Я хотел бы эффективно представить изменяемый граф на Прологе. Я буду искать подмножества в графе и заменять их другими подмножествами.

Мне удалось заставить кое-что работать, используя базу данных в качестве «хранилища графов». Например, у меня есть:

:- dynamic step/2.
% step(Type, Name).

:- dynamic sequence/2.
% sequence(Step, NextStep).

Затем я использую несколько правил, чтобы отозвать подмножества, которые я сопоставил, и заменить их новыми шагами, используя assert . Мне действительно нравится этот метод ... его легко читать и с ним работать, и я позволяю Prolog выполнять большую часть тяжелой работы по сопоставлению с образцом.

Другой известный мне способ представления графиков - использование списков узлов и соединений смежности. Я видел множество веб-сайтов, использующих этот метод, но я немного сомневаюсь, потому что это больше накладных расходов.

Для меня важно время выполнения, как и простота разработки для меня.

Какие плюсы / минусы для любого подхода?

6
задан false 2 February 2014 в 23:32
поделиться