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