Последний раз редактировалось ParfenRogozhin 01.04.2024, 19:02, всего редактировалось 1 раз.
Всем привет.
Nested(V) - множество всех вершин достижимых из V.
Имеется ориентированный граф с циклами, для выбранной вершины A, необходимо найти ближайшую к ней вершину B такую, что любой путь из A в Nested(B) обязательно проходит через B.
Задача несколько похожа на поиск шарнира в графе, отличие в том, что в нашем случае шарнир подразумевается только относительно путей из A в Nested(B), обратные пути из Nested(B) в A не обязаны проходить через B.
Ищется линейное решение основанное на поиске в ширину, так как подразумевается, что графы могут быть достаточно большие, но их структура такова, что B очень часто находится рядом с А.
Бэкграунд: Граф является потоком управления некоторого байткода, данная процедура призвана помочь в поиске границ синтаксических конструкций (if, while) и их восстановлении. Синтаксические конструкции обычно имеют одну точку входа(А) и одну точку выхода(В).
Спасибо за помощь!
|