Унікальний шлях у спрямованому графіку


9

Я розробляю алгоритм для класу, який визначатиме, чи спрямований графік унікальний щодо вершини v такий, що для будь-якого uv є щонайбільше один шлях v до u. Я почав з використання BFS (пошук вшир), щоб знайти найкоротший шлях від v до іншої вершини u, а потім знову запустив BFS, щоб перевірити, чи можна знайти альтернативний шлях від v до u. Я думаю, що це занадто багато часу, проте. Хтось має підказки щодо того, як можна знайти рішення із скороченням часу виконання?

Відповіді:


9

Використовуйте BFS для роботи назад від v, позначаючи кожну вершину "відвідуваною" під час руху. Якщо ви коли-небудь потрапляли на вершину, яку раніше відвідували, ваш графік не має властивості унікальності. Інакше так і є.



2

Це проста модифікація будь-якого обходу графіка: якщо ви знайдете ребро до раніше позначеного вузла, то у вас є кілька шляхів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.