Ustawiono . Dla każdego elementu mamy wagę i kosztujemy . Celem jest znalezienie podzbioru o rozmiarze który maksymalizuje następującą funkcję celu: .e i w i > 0 c i > 0 M k ∑ e i ∈ M w i + ∑ e i ∉ M w i c i
Czy problem jest trudny NP?
Ponieważ funkcja celu wydaje się dziwna, pomocne jest wyjaśnienie zastosowania funkcji celu.
Załóżmy, że mamy n przedmiotów od do a w naszym ekwipunku są kopie każdego obiektu . Mamy kilku klientów, którzy są zainteresowani tymi obiektami proporcjonalnie do ich wagi , co oznacza, że obiekt o większym jest bardziej popularny. Mamy internetowy system sprzedaży i musimy poprawnie odpowiadać na prośby naszych klientów. Nie możemy rozpoznać obiektów po ich kształtach (wszystkie wyglądają tak samo!). Ale mamy jakiś klasyfikator, aby je znaleźć. Każdy klasyfikator może służyć do wykrywania kopii obiektu. Naszym celem jest uruchomienie k klasyfikatora, aby zmaksymalizować zadowolenie naszych klientów.e n c i e i w i w i
PS: Przydatne może być przemyślenie przypadku, w którym dla wszystkich ; jednak nie jestem pewien. [ Myliłem się co do tego! Zgodnie z tym założeniem jest w P ]i ≤ n
źródło
Odpowiedzi:
Poniższa odpowiedź zauważa, że szczególny przypadek problemu można rozwiązać w czasie wielomianowym. To nie w pełni odpowiada na pytanie zawarte w poście, ale może dać pewien wgląd w to, co może być potrzebne do potwierdzenia twardości NP i może wywołać dodatkowe zainteresowanie postem ...
Obserwacja. Problemem stanowisko zawiera algorytm, który, biorąc pod uwagę wszystkie przypadki, gdzie każdy jest liczbą całkowitą, jest uruchamiany w czasie wielomian n i D = Σ i c i .doja n D = ∑jadoja
Szkic próbny. Napraw dowolne dane wejściowe gdzie w , c ∈ R n + i (WLOG) S = { 1 , 2 , … , n } . Lekko odtwarzając problem, celem jest znalezienie M ⊆ S o rozmiarze K maksymalizującym ∑ i ∈ M w i c i( S, w , c , K) w , c ∈ Rn+ S.= { 1 , 2 , … , n } M.⊆ S. K. .∑i ∈ M.wjadoja∑i ∈ M.doja- ∑i ∈ M.wja
Rozważ następujący program dynamiczny. Dla dowolnych liczb całkowitych z 0 ≤ d 1 ≤ d 2 ≤ D , 0 ≤ k ≤ K , i k ≤ m ≤ n , zdefiniuj ϕ ( d 1 , d 2 , k , m ) = max { ∑ i ∈ M w( d1, d2), k , m ) 0 ≤ d1≤ d2)≤ D 0 ≤ k ≤ K k ≤ m ≤ n
Pożądanym rozwiązaniem jest maks. D ϕ(d,d,K,n).
Dzieląc możliwe rozwiązania dla na te, które zawierają m, a te, które tego nie robią, otrzymujemy powtarzalność ϕ ( d 1 , d 2 , k , m ) = max { ϕ ( d 1 , d 2 - c m , k - 1 , m - 1 ) + w mϕ ( d1, d2), k , m ) m
Sprawy graniczne zostawiamy jako ćwiczenie.
Liczba podproblemów jest , a każda strona prawy nawrotu można ocenić w stałym czasie, tak przebiegów algorytmu czasu wielomian n i D . ◻O ( n2)re2)) n re □
źródło
Pytasz o maksymalizację funkcji bez ograniczeń?
To jest naprawdę proste. Jeśli M jest największym zestawem, to jest najlepszym rozwiązaniem. Nie trzeba niczego obliczać.
Ten problem wydaje się podobny do problemu plecaka, który jest nawiasem mówiąc NP.
źródło