Sırt çantası problemi - dinamik programlama çözümüne rağmen NP tamamlandı mı?


50

Sırt çantası problemleri dinamik programlama ile kolayca çözülür. Dinamik programlama polinom sürede çalışır; Bu yüzden yapıyoruz, değil mi?

Aslında bunun NP-tamamlanmış bir sorun olduğunu okudum, ancak bu, polinom problemindeki problemi çözmenin muhtemelen imkansız olduğu anlamına geliyor.

Benim hatam nerde?


5
DP'nin "masa boyutunda" polinom olduğunu unutmayın. Masa, Sırt Çantası için üssel olarak büyüktür (Kaveh'in cevabına bakınız).
Raphael

Yanıtlar:


40

Sırt çantası sorun olan NP-complete numaraları verilen zaman ikili sayı. Bu durumda, dinamik programlama bitirmek için (giriş boyutunda, girişteki bit sayısını yani) katlanarak birçok adımlar atacağız .

Öte yandan, eğer girdideki sayılar aynı şekilde verilmişse, dinamik programlama polinom zamanla (girişin boyutunda) çalışacaktır.

Bu problemlerin tür adı verilir zayıf NP-complete .

2nnnnlgnO(n)=O(2lgn/2)

Bu tür bir algoritma, yani girişin bir parçası olan, ancak giriş uzunluğunda üstel olan polinom , sahte polinom olarak adlandırılır .


Ancak sırt çantasına konacak nesneleri düşünün. Nesnelerin girilmesi gerekir ve böyle bir girdi, nesne sayısı ile polinom olmalıdır. Nesneler yeterince fazlaysa, giriş sorunun boyutuna göre çok yönlüdür. Öyleyse neden Sırt Çantası Probleminin masa boyutu açısından P problemi olduğunu söyleyemiyorum? Yanlış mıyım?
Strin

mm2lgmm

Girişi, ikili kodlaması algoritmayı polinom zamanında bitiren bir boyuta sahip olan ve sonra çözümleri birleştiren daha küçük girişlere böler misiniz?
Char

@Kaveh "Girişin büyüklüğü yaklaşık 2 lg m" Bu kısmı nereden aldığınızı anlamıyorum. m(Paket büyüklüğü) ve n(ürün sayısı ) arasındaki ilişki tamamen bilinmiyor, değil mi? Ve "sayılar ikili sayılar olarak verildiğinde" ... ama bunu bir şey için söyleyemez miydin? Çoğu algoritma ile, 10 tabanındaki giriş büyüklüğünden bahsediyoruz. Neden burada ikili hakkında konuşalım? Ve vb ikili, sekizlik, onluk içinde kodlamak ister ... actualEğer ana algoritma döngü içinde yineleme sayısı hem doğrudan bağlıdır nve W.
The111,

1
@ The111, bence bunu yeni bir soru olarak gönderirseniz ve ben bir cevap gönderirseniz daha iyi olur. Sorunuzun daha temel olduğunu ve yorumların bu soru ile pek ilgili olmadığını düşünüyorum.
Kaveh

33

Ana karışıklık, " boyut " ve " değer " arasındaki farktan kaynaklanmaktadır .

" Polinom Süresi " , girişin büyüklüğündeki polinom anlamına gelir .

" Pseudopolynomial Time " , girişin değeri olan polinom anlamına gelir . Bunun girişin boyutuna göre üssel olmasına eşdeğer olduğu (aşağıda) gösterilebilir .


NsizeNval

O(Nsizex)xN

O(Nvalx)xN

O(nW)W

Nsize=Logb(Nval)NvalbNval

Nval=bNsize

Nsize

O(bxNsize)b,xN


7
Burada çok teşekkür etmek için bir hesap oluşturduk! Sadece örneğinden sonra nihayet anladım.
Inoryy

2
Cevabınız herkesi yener, bravo!
Muhammad Razib

1
Biz 100'den 101'e W değiştirirseniz söyleyebiliriz bu büyük cevaba eklemek için boyut sorunun artmamıştır biz iki katı kadar büyük kılan W için başka bit eklerseniz, boyut artar, böylece masa olur iki katı kadar satır olması ve bu nedenle boyutu birer birer arttırmasıyla birlikte, problem süresi ikiye katlanır, bu yüzden üstel.
Amin

@bcorso Size N değeri verildiğini varsayalım Ve 1'den N'ye kadar olan sayıların toplamını bulmanız gerekiyordu ve for loop yöntemini kullandınız, bu bir psödopolinomiyal Zaman algoritması olurdu?
DollarAkshay

8

P=NP

Bununla birlikte, polinom-zaman çözeltileri veya iyi yaklaşımları olabilen veya içermeyen farklı değişkenler (örneğin, 0-1 Sırt Çantası ve diğerleri ) vardır. Ancak bu, genel Sırt Çantası problemiyle aynı değildir. Ayrıca, belirli ( örneklerin aileleri) örnekleri için çalışan etkili algoritmalar olabilir , ancak bu algoritmalar diğer durumlarda daha uzun sürer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.