Вот упражнение:
Пусть v и w — две вершины в ориентированном графе G = (V, E). Разработайте линейный-алгоритм времени для нахождения количества различных кратчайших путей (не обязательно непересекающихся вершин)между v и w. Примечание:ребра в G не взвешены
Для этой акцизы я резюмирую следующим образом:
Из вышеизложенного у меня следующие мысли:
count
количество кратчайших путейglobal level
информациюglobal level
на единицу каждый раз, затем BFS достигает нового уровняshortest level
для кратчайшего пути к wglobal level
shortest level
и count++
;global level
равно shortest level
, я увеличиваю count
каждый раз, когда снова встречаю w.global level
становится больше, чем shortest level
, я прекращаю путешествие, потому что я ищу кратчайший путь, а не путь.Верен ли мой алгоритм? Если я сделаю v для w, а затем w для v,это все еще считается линейным-временем?