Предполагая, что начальный узел - S, а конечный узел - F
На модифицированном графе, если мы перемещаемся из ui в vj через ребро, соединяющее два узла, то j=(i+1) mod 2
определяется способом определения ребер.
Итак, если мы путешествуем из ui в vj по любому произвольному пути, j=(i+n) mod 2
, где n — длина пути. (вывод 1)
Итак, если мы путешествуем из S0 в F0 по некоторому пути, 0 = (0 + n) mod 2
означает, что n четно
Таким образом, это доказывает, что любой путь из S0 в F0 проходит по четным ребрам (вывод 2)
Кроме того, основываясь на том, как ребра определены в новом графе, мы можем сказать, что для любого ребра (u,v) в старом графе ребро (ui,vj ) существует в новом графе для некоторых i,j (вывод 3)
Теперь, если в исходном графе существует путь четной длины, пусть кратчайший путь будет SA1A2...A2m-1F, где Ai может повторяться. (Четные ребра подразумевают нечетное количество узлов). Затем на новом графе мы можем начать с S0 и пройти через S0A1iA2j...A2m-1kFm, чтобы приземлиться на F ( из вывода 3). Тогда индекс на F будет (0 + 2m-1 +1) mod 2 = 0
(из вывода 2). Следовательно, на новом графе тоже будет путь такой же длины.
Следовательно, если решение существует, то и в новом графе существует путь из S0 в F0 (вывод 4)
Кроме того, в зависимости от того, как ребра определены в новом графе, для каждого ребра от ui до vj в исходном графе есть ребро от u до v. . Следовательно, для любого пути в новом графе от ui до vj существует соответствующий путь от u до v в старом графе такой же длины
Следовательно, если путь из S0 в F0 существует, то в исходном графе существует соответствующий путь такой же длины (вывод 5)
Выводы 2,4 и 5 вместе доказывают, что кратчайший путь из S0 в F0 является правильным ответом. Если путь не найден, то его нет и в исходном графе (из вывода 4)
Значит алгоритм правильный
person
Abhay Aravinda
schedule
20.10.2020
(u_0 , v_1)
и(u_1,v_0)
, не будет ли новый граф просто двумя несвязанными графами, которые оба эквивалентны исходному графу? - person Abhay Aravinda   schedule 20.10.2020