Jednym ze sposobów, aby to zrobić byłoby wykonać następujące czynności:
- Duplikat swój wykres, tak, że masz oryginalny graf G z węzłami 1,2, itd. oraz kopię G 'z węzłami 1', 2 'itd. i odpowiednie krawędzie.
- Dla każdej krawędzi (a, b) G, wykonaj łuk (skierowany!) Od a do b ', a drugi od b do a, oba z kosztem 0.
- Wreszcie, użyj dowolnego algorytmu najkrótszej ścieżki od dowolny wierzchołek subgraphu G do dowolnego wierzchołka G '(1 do 6' w twoim przykładzie).
Zasadniczo dzieje się tak, że przełączasz się z podgrafu G na G ', gdy używasz swojego jokera.
Możesz generalizować stamtąd do dowolnej liczby krawędzi jokera, dodając dodatkowe kopie i łącząc każde nowe z ostatnim. W takim przypadku możesz jednak dodać cele przy użyciu mniej jokerów, aby uwzględnić przypadki, w których najkrótsza ścieżka wymaga mniejszej liczby krawędzi niż jokery.
dziękuję bardzo :) – Paulina