Обычно для представления базового неориентированного графа в Лиспе я могу создать список родительских узлов и их соответствующих дочерних узлов, как обсуждалось в этом вопросе (для удобства проиллюстрирован ниже).
этот график дает список ребер:
(1 (2 6 7 8) 3 (4 (9 12)) 5 (10 11))
Это работает в случае дерева или любого другого неориентированного графа. Однако этот тип представления нарушается, когда мы хотим представить ориентированный ациклический граф, где у каждого узла может быть несколько родителей:
Теперь, у Узла 8 есть несколько родителей (2, 3), но когда мы пытаемся представить это, мы теряем способность определять, связан ли узел 8 с двумя родительскими узлами или есть два узла 8:
(1 (2 6 7 8) (3 8) (4 (9 12)) (5 10 11))
В случае графа с уникальными узлами мы, безусловно, можем сделать это предположение, но, насколько мне известно, группы обеспечения доступности баз данных могут иметь дублированные узлы ... так как нам с этим бороться? Кроме того, как мы можем представить его как список в Лиспе?