Следующий вопрос был найден в Sedgewick и Уэйн книги об алгоритмах в Java:топологического порядка с использованием BFS
4.2.19 топологическую сортировку и BFS. Объясните, почему следующий алгоритм не обязательно создает топологический порядок: запустите BFS и пометьте вершины, увеличив расстояние до их соответствующего источника.
Я пытался доказать, что нашел встречный пример. Но каждый раз, когда я пытаюсь, я получаю топологический порядок. Я имею в виду, я не понимаю, почему это не работает: если источник вершины приходит перед ним, почему бы нам не иметь топологический порядок?
Я думаю, чтобы доказать это, нам нужно найти вершину, к которой он пришел раньше, но я не мог.
У кого-нибудь есть контрпример? Заранее спасибо!
PS: это не домашнее задание
@Edit: Я попробовал гамильтонов путь, как 1 < - 2 < - 0 < - 3 < - 4, что дает 0 3 4 2 1 , но изменение позиций 0 3 и 4 дает мне топологический порядок (но в том порядке, в котором я получил, это не так). Тогда я не уверен, что это или нет топологический порядок.
Какое определение занимает ранг? Я знаю только ранг для деревьев. И D мог прийти до C, если он появится сначала в списке смежности A, правильно? – Giiovanna
Ранг можно рассматривать как «уровень», который обрабатывается узлом в BFS. A будет иметь ранг 1, B и D будет иметь ранг 2 и т. Д. – adao7000
Хорошо, спасибо! – Giiovanna