Я использую Boost Graph и хочу найти способ идентифицировать последовательности (подграфы) в графе, которые следуют определенному шаблону.
Я думаю о своем подграфе как шаблон или шаблон. Фактический граф содержит узлы с частями строк и проанализированных данных; например, проанализированная строка даты в графе может быть: ...->(9)->("/")->(4)->"/"->(2017)->...
, Мой шаблонный подграф найдет все экземпляры такой даты на графике, поэтому он будет соответствовать узлам следующим образом: (1<=d<=31)->(.|/)->(1<=m<=12)->(same symbol as in 2nd node)->(1900<=y<=2100)
,
Функция vf2_subgraph_iso
принимает предикаты в качестве аргументов для определения равенства ребер и вершин, но я не уверен, существует ли способ «взломать» эти предикаты, чтобы фактически найти узлы в соответствии с простым шаблоном, выходящим за рамки простого равенства.
Поскольку предикатам равенства не дано никакого состояния или контекста, мне трудно понять, как поддерживать такое состояние внутренне. Это возможно? Или есть более подходящий алгоритм?
Задача ещё не решена.
Других решений пока нет …