Учитывая неориентированный граф G с весами ребер, набор ребер-кандидатов (длина | V | + | E |) и вершины A и B, найдите край, который максимально уменьшает кратчайший путь от A до B.Поиск края, который уменьшает кратчайший путь от A до B самым
Например:
Грани-кандидаты пунктирные линии. Самый короткий путь от A до B - A -> C -> D -> G -> B (стоимость 7). Но с ребром (D, B) кратчайший путь A -> C -> D -> B (стоимость 6), поэтому алгоритм должен возвратиться (D, B).
я придумал скотину силового решения O ((| V | + | E |)^2 журнала | V |):
- для каждого кандидата края:
- добавить край к графе
- запустить Дейкстры, чтобы найти стоимость кратчайшего пути от А до в
- удалить пограничную
- RETU rn к краю кандидата, который приводит к кратчайшему пути
но есть ли что-нибудь лучше?
Если 'n = | V |' и 'm = | E |', алгоритм Дейкстры работает в 'O (m + nlogn)', если он расширен с приоритетной очередью, такой как куча Фибоначчи. Предполагая, что 'm> = n' (иначе граф не пересекается), временная сложность вашего метода грубой силы -' O (m^2 + mnlogn) '. Поэтому я немного озадачен сложностью времени, которую вы задали в своем вопросе. – wookie919