У меня есть контрольная графическая схема (CFG) функции программного обеспечения в сборке. Я был в состоянии создать представление CFG, используя матрицу смежности. Для каждого узла, то есть инструкции, если есть инструкция ветвления, она либо реализует цикл if-then или цикл (когда ветвь имеет метку, которая является узлом-предком). Хотя у меня есть циклы такого типа в CFG, они все ограничены, то есть я знаю, для каждого цикла, сколько итераций выполняет цикл. Таким образом, другими словами, хотя CFG является направленным циклическим графом, он действительно является ациклическим. Теперь, наконец, мой вопрос: есть ли алгоритм, который я могу использовать, чтобы «развернуть» циклы (поскольку они ограничены), чтобы я мог преобразовать свой ориентированный циклический граф в DAG? Получив DAG, я знаю, как перечислить все пути от исходного узла до конечного узла. но моя проблема - преобразовать ориентированный циклический граф с ограниченными циклами в DAG. Спасибо!