Jestem nieco zdezorientowany pewną terminologią, którą napotkałem, dotyczącą złożoności problemów związanych z optymalizacją. W klasie algorytmów miałem duży problem z oszczędnością opisany jako NP-zupełny. Nie jestem jednak do końca pewien, co oznacza termin NP-complete w kontekście problemu optymalizacji. Czy to tylko oznacza, że odpowiedni problem decyzyjny jest NP-zupełny? Czy to oznacza, że problem optymalizacji może być trudniejszy (być może poza NP)?
W szczególności niepokoi mnie fakt, że chociaż problem decyzyjny związany z całkowitą NP może być weryfikowany w czasie wielomianowym, rozwiązanie odpowiedniego problemu optymalizacji nie wydaje się być weryfikowalne w czasie wielomianowym. Czy to oznacza, że problem tak naprawdę nie występuje w NP, czy też wielomianowa weryfikowalność czasowa jest jedynie cechą problemów decyzyjnych NP?
źródło
Odpowiedzi:
Próba częściowej odpowiedzi:
Problemy decyzyjne były już badane przez pewien czas, zanim pojawiły się problemy z optymalizacją , w tym sensie, że są one traktowane z perspektywy algorytmów aproksymacyjnych.
Należy zachować ostrożność przy przenoszeniu pojęć z problemów decyzyjnych. Można to zrobić i podać dokładne pojęcie kompletności NP dla problemów optymalizacyjnych. Spójrz na tę odpowiedź . Oczywiście różni się od NP-kompletności problemów decyzyjnych, ale opiera się na pomysłach sames (redukcjach).
Jeśli masz do czynienia z problemem optymalizacji, który nie pozwala na weryfikację wykonalnego rozwiązania, niewiele możesz zrobić. Dlatego zwykle zakłada się, że:
W przeciwnym razie nie możemy wiele osiągnąć.
Jeśli chcesz sprawdzić, czy rozwiązanie jest nie tylko wykonalne, ale także optymalne, powiedziałbym, że jest to tak trudne, jak rozwiązanie pierwotnego problemu optymalizacji, ponieważ aby obalić dane wykonalne i możliwie optymalne rozwiązanie jako nieoptymalne, musisz podać lepsze rozwiązanie, które może wymagać znalezienia prawdziwego optymalnego rozwiązania.
Ale to nie znaczy, że problem optymalizacji jest trudniejszy. Zobacz tę odpowiedź , która zależy oczywiście od dokładnych definicji.
źródło
Przyczyną większości problemów optymalizacyjnych jako P, NP, NP-complete itp. Są warunki Kuhna-Tuckera. Opowiem o problemach z programowaniem liniowym, ale KTC ma zastosowanie w wielu innych problemach związanych z optymalizacją. Dla każdego problemu optymalizacji występuje problem podwójny. Jeśli celem pierwotnego problemu jest maksymalizacja niektórych funkcji, wówczas podwójny (zwykle) ma funkcję, którą należy zminimalizować. * Wykonalne, ale nieoptymalne rozwiązania pierwotnego problemu będą niewykonalne / nieważne dla podwójnego problemu i odwrotnie -versa. Jeśli i tylko wtedy, gdy rozwiązanie jest możliwe dla pierwotnego i podwójnego, jest to optymalne rozwiązanie dla obu. (Technicznie może to być jedno z wielu optymalnych rozwiązań, które dają ten sam rezultat).
Zatem znalezienie optymalnego rozwiązania problemu optymalizacji jest równoważne ze znalezieniem prawidłowego rozwiązania dla pierwotnego i podwójnego. Możesz użyć algorytmów optymalizacyjnych, aby znaleźć to rozwiązanie, ale cały proces jest dowodem na istnienie.
źródło