Нижеследующее изображение представляет собой представление вопроса, которое было задано мне во время интервью samsung. Мне пришлось написать программу, чтобы найти минимальное расстояние между I и M. Было дополнительное ограничение, что мы можем изменить один из ребер. Например, край FM может быть перемещен для присоединения кромки L и M, а значение края будет по-прежнему равно 4.Нужна помощь в разрешении этого варианта алгоритма кратчайшего пути
Если вы заметили, расстояние между I и M через I-> E -> F -> G - > M равно 20. Однако, если мы изменим один из ребер, так что теперь значение L to M edge равно 4. Нам нужно переместить край FM, чтобы теперь присоединиться к L и M. По этому методу расстояние между I и M равно 20.
Произвольный край u, v можно изменить на u, t или t, v. Его нельзя изменить на x, y. Поэтому одна из вершин в ребре должна быть одинаковой.
Пожалуйста, найдите изображение ниже, чтобы проиллюстрировать сценарий -
Так что моя проблема в том, что я должен был написать программу для этого. Чтобы найти минимальное расстояние между двумя вершинами, я подумал об использовании алгоритма Джикстры. Однако я не уверен, как позаботиться о дополнительном ограничении, когда у меня была возможность изменить одну из вершин. Если бы я мог помочь, я бы очень признателен.
Что именно означает перемещение края? – kraskevich
Означает ли это, что мы можем взять произвольное ребро '(u, v)' и изменить его на '(u, t)' или '(t, v)' для произвольной вершины 't'? – kraskevich
@kraskevich Ваше понимание правильное. Произвольное ребро u, v можно заменить на u, t или t, v. Его нельзя изменить на x, y. – user3276247