Załóżmy, że mam ukierunkowany wykres acykliczny z wagami liczb rzeczywistych na jego wierzchołkach. Chcę znaleźć uporządkowanie topologiczne DAG, w którym dla każdego prefiksu uporządkowania topologicznego suma wag jest nieujemna. Lub jeśli wolisz terminologię teoretyczną, mam ważoną częściową kolejność i chcę liniowego rozszerzenia, aby każdy prefiks miał nieujemną wagę. Co wiadomo na temat tego problemu? Czy jest to NP-kompletne czy możliwe do rozwiązania w czasie wielomianowym?
ds.algorithms
directed-acyclic-graph
partial-order
David Eppstein
źródło
źródło
Odpowiedzi:
Ten problem wydaje się bardzo podobny do SEKWENCJONOWANIA W CELU ZMINIMALIZOWANIA MAKSYMALNEGO KOSZTU SKUMULOWANEGO, problem [SS7] w Garey & Johnson . To znaczy:
źródło
Cóż, moją odpowiedzią jest moje pytanie, z którego okazuje się, że jeśli możesz rozwiązać ten problem w P, możesz również rozwiązać inny otwarty problem: Pozytywne uporządkowanie topologiczne, weź 3
Edycja: Ten problem również okazał się NP-zupełny, więc twój problem jest już NP-zupełny, jeśli twój DAG ma tylko dwa poziomy, tj. Jeśli nie ma ukierunkowanych ścieżek z dwiema krawędziami.
źródło
Jeśli dobrze rozumiem problem, myślę, że problem związany z pierwszeństwem ograniczenia planowania pojedynczej maszyny w celu zminimalizowania ważonej sumy czasów ukończenia (1 | prec | \ sum wc) może zostać zredukowany do problemu, który Cię interesuje. W problemie 1 | prec | \ sum wc mamy n zadań, każde o nieujemnej wadze i czasie przetwarzania, poset na zadaniach i chcemy liniowego rozszerzenia zadań tak, aby suma ważonych czasów wykonania zadań wynosiła zminimalizowane. Problemy są zakończone NP, mimo że zakładamy, że czas przetwarzania każdego zadania jest równy 1. Czy ma to jakiś sens?
źródło
Co jeśli zawsze bierzemy maksymalny element (w częściowej kolejności) o najmniejszej wadze. Po wyczerpaniu elementów zwracamy je w odwrotnej kolejności jako dane wyjściowe.
źródło
Ten problem przypomina mi wiele drzew decyzyjnych. Rozważałbym tego rodzaju rozwiązanie, które stara się zawsze wybierać najbardziej obiecującą ścieżkę, ale patrząc na cały podrozdział:
Zaczynając od węzłów sink, kieruj się w stronę źródeł, jeden poziom na raz. Robiąc to, nadaj każdej krawędzi wagę. Ta waga powinna reprezentować minimalną kwotę, którą musisz „zapłacić”, inaczej „zyskasz”, przechodząc przez słupek, zaczynając od węzła, na który wskazuje krawędź. Załóżmy, że jesteśmy na poziomie i + 1 i przechodzimy na poziom i. Oto, co zrobiłbym, aby przypisać wagę krawędzi wskazującej na węzeł poziomu i:
Następnie zbuduj kolejność w następujący sposób:
Pomysł polega na przejściu przez te podgrupy, które zapewnią jak największy zysk w pierwszej kolejności, aby później móc ponieść koszty podgrafów ujemnej wagi.
źródło