Я хотел бы эффективно представить изменяемый граф на Прологе. Я буду искать подмножества в графе и заменять их другими подмножествами.
Мне удалось заставить кое-что работать, используя базу данных в качестве «хранилища графов». Например, у меня есть:
:- dynamic step/2.
% step(Type, Name).
:- dynamic sequence/2.
% sequence(Step, NextStep).
Затем я использую несколько правил, чтобы отозвать
подмножества, которые я сопоставил, и заменить их новыми шагами, используя assert
. Мне действительно нравится этот метод ... его легко читать и с ним работать, и я позволяю Prolog выполнять большую часть тяжелой работы по сопоставлению с образцом.
Другой известный мне способ представления графиков - использование списков узлов и соединений смежности. Я видел множество веб-сайтов, использующих этот метод, но я немного сомневаюсь, потому что это больше накладных расходов.
Для меня важно время выполнения, как и простота разработки для меня.
Какие плюсы / минусы для любого подхода?