Вопрос возник из желания программировать задачи динамического программирования. В программировании достаточно хорошо изучена структура данных дерево. Имея ее можно быстро писать простые рекурсивные функции обхода по дереву (правый, левый и др). Хотелось бы применить в общих задачах динамического программирования. В ДП есть вроде подход представления блоков вычислений в виде графа. Вроде есть классификация т.н сериальных (стандартных) схем и несериальных. Есть также деление на монадические и полиадические.
Как я представляю типичный случай задачи ДП с конечным числом альтернатив выбора управления каждого этапа приводит все таки не к древовидному графу а графу-сети. Эту структуру программно реализовывать сложнее. Один математик мне предложил такой подход: Если в вершину
![$A_i$ $A_i$](https://dxdy-01.korotkov.co.uk/f/4/e/b/4ebf880807deff5796460f39aea46f8082.png)
входят K путей то можно "расчленить эту вершину на K разных вершин
![$A_{i1},...A_{ik}$ $A_{i1},...A_{ik}$](https://dxdy-02.korotkov.co.uk/f/d/0/4/d0401acbb49d012d492f9361513d048b82.png)
т.е граф превратить в дерево. Тогда использовать стандартные приемы программирования. Но где-то в программе задать изоморфизм (совпадение) этих расчлененных вершин).
Нормальный ли это подход и известен он кому-либо?