NP , NP-Complete ve NP-Hard arasındaki farklar nelerdir ?
Web üzerindeki birçok kaynağın farkındayım. Açıklamalarınızı okumak istiyorum ve bunun nedeni, orada olanlardan farklı olabilir veya farkında olmadığım bir şey var.
NP , NP-Complete ve NP-Hard arasındaki farklar nelerdir ?
Web üzerindeki birçok kaynağın farkındayım. Açıklamalarınızı okumak istiyorum ve bunun nedeni, orada olanlardan farklı olabilir veya farkında olmadığım bir şey var.
Yanıtlar:
Teknik tanımların anlaşılması biraz zaman gerektirdiğinden, sezgisel tanımları aradığınızı varsayıyorum. Her şeyden önce, bu tanımları anlamak için gerekli bir ön konsepti hatırlayalım.
Şimdi bu karmaşıklık sınıflarını tanımlayalım .
P, polinom zamanında çözülebilen tüm karar problemlerinin kümesini temsil eden bir karmaşıklık sınıfıdır .
Yani, sorunun bir örneği göz önüne alındığında, evet ya da hayır cevabına polinom zamanında karar verilebilir.
Misal
Bağlı bir grafik verildiğinde G
, köşeleri iki renk kullanılarak renklendirilebilir, böylece kenar tek renkli olmaz mı?
Algoritma: keyfi bir tepe noktasıyla başlayın, kırmızıya renklendirin ve tüm komşularını mavi yapın ve devam edin. Köşeler bittiğinde veya bir kenar yapmak zorunda kaldığınızda durun, her iki uç noktasının da aynı renkte olmasını sağlayın.
NP, cevabın "evet" olduğu örneklerin polinom zamanında doğrulanabilecek kanıtlara sahip olduğu tüm karar problemleri kümesini temsil eden bir karmaşıklık sınıfıdır.
Bu, birisi bize sorunun bir örneğini ve cevabın evet olarak verilen bir sertifikasını (bazen tanık olarak adlandırılırsa) evet, polinom zamanında doğru olup olmadığını kontrol edebileceğimiz anlamına gelir.
Misal
Tam sayı çarpanlara ayırma işlemi NP cinsindendir. Bu tamsayılar verilen sorun n
ve m
bir tamsayıdır, orada f
ile 1 < f < m
bu şekilde, f
bölme n
( f
küçük bir faktördür n
)?
Bu bir karar sorunudur çünkü cevaplar evet ya da hayırdır. Birisi bize sorunun bir örneğini verirse (böylece bize tamsayıları verir n
ve m
) ve bir tamsayı f
ile (sertifika) bir faktör 1 < f < m
olduğunu iddia ederse f
, bölümü gerçekleştirerek n
cevabı polinom zamanında kontrol edebiliriz n / f
.
NP-Complete tüm sorunlar kümesini temsil eden bir karmaşıklık sınıfıdır X
başka herhangi bir NP problemi azaltmak mümkün olduğu NP Y
için X
polinom zamanda.
Sezgisel olarak bu, Y
hızlı bir şekilde nasıl çözüleceğini bilirsek hızlı bir şekilde çözebileceğimiz anlamına gelir X
. Kesinlikle, Y
indirgenebilir X
bir polinom zaman algoritması varsa, f
örneklerini dönüştürmek için y
bir Y
örneklerine x = f(y)
ait X
olduğu cevabı için özelliğiyle, polinom zamanda y
evet, ancak ve ancak cevabı için f(y)
evet.
Misal
3-SAT
. Bu, bize 3 maddelik kesintilerin (ORs) bir birleşiminin (ANDs), formun ifadelerinin verildiği sorundur.
(x_v11 OR x_v21 OR x_v31) AND
(x_v12 OR x_v22 OR x_v32) AND
... AND
(x_v1n OR x_v2n OR x_v3n)
burada her x_vij
biri bir boole değişkeni veya önceden tanımlanmış sonlu bir listeden bir değişkenin reddedilmesidir (x_1, x_2, ... x_n)
.
Her NP sorununun 3-SAT'a düşürülebileceği gösterilebilir . Bunun kanıtı tekniktir ve NP'nin ( deterministik olmayan Turing makinelerine dayalı) teknik tanımının kullanılmasını gerektirir . Bu Cook teoremi olarak bilinir .
NP-tam problemlerini önemli kılan şey, bunlardan birini çözmek için deterministik bir polinom zaman algoritması bulunması durumunda, her NP probleminin polinom zamanında çözülebilir olmasıdır (hepsini yönetmek için bir problem).
Sezgisel olarak, bunlar en azından NP-tam problemleri kadar zor olan problemlerdir . NP-zor problemler o Not yok NP olmak ve onlar karar problemleri olmak zorunda değildir .
Buradaki kesin tanım , bir NP-tam problemi varsa , polinom zamanında azaltılabilecek bir problemin X
NP-zor olmasıdırY
Y
X
.
Ancak herhangi bir NP-tam problemi polinom zamanında herhangi bir NP-tam problemine indirgenebildiğinden, tüm NP-tam problemleri polinom zamanındaki herhangi bir NP-problemi problemine indirgenebilir. Daha sonra, polinom zamanında bir NP zor problemine bir çözüm varsa, polinom zamanında tüm NP sorunlarına bir çözüm vardır.
Misal
Durdurulması problemi NP-zor bir problemdir. Bir program P
ve girdi verilen problem I
bu durur mu? Bu bir karar problemidir ancak NP'de değildir. Herhangi bir NP-komple probleminin buna indirgenebileceği açıktır. Başka bir örnek olarak, herhangi bir NP-komple problemi NP-zordur.
En sevdiğim NP-tamam problemi Mayın Tarlası problemidir .
Bu, bilgisayar bilimindeki en ünlü problemdir ve matematik bilimlerindeki en önemli seçkin sorulardan biridir. Aslında, Clay Institute soruna bir çözüm için bir milyon dolar teklif ediyor (Stephen Cook'un Clay web sitesinde yazması oldukça iyi).
P'nin NP'nin bir alt kümesi olduğu açıktır. Açık soru NP problemlerinin deterministik polinom zaman çözümlerine sahip olup olmadığıdır. Olmadığına büyük ölçüde inanılmaktadır. : Burada P = NP sorununun son olağanüstü bir son makale (ve önemi) 'dir NP problemi karşısında P durumu .
Bu konuda en iyi kitap Garey ve Johnson tarafından Bilgisayarlar ve Sürdürülebilirlik.
Etrafa bakıyorum ve birçok uzun açıklama görüyorum. Özetlemek için yararlı olabilecek küçük bir grafik:
Zorluğun yukarıdan aşağıya nasıl arttığına dikkat edin: herhangi bir NP NP-Complete'e düşürülebilir ve herhangi bir NP-Complete , hepsi P (polinom) zamanında NP-Hard'a düşürülebilir .
P zamanında daha zor bir problem sınıfını çözebilirseniz, bu, P zamanında tüm daha kolay problemleri nasıl çözeceğinizi bulduğunuz anlamına gelir (örneğin, herhangi bir NP-Complete sorununun nasıl çözüleceğini anlarsanız, P = NP'yi kanıtlayın). P zamanı).
____________________________________________________________ | Sorun Türü | P zamanında doğrulanabilir | P zamanında çözülebilir | Artan Zorluk ___________________________________________________________ | | | P | Evet | Evet | | | NP | Evet | Evet veya Hayır * | | | NP-Komple | Evet | Bilinmeyen | | | NP-Sert | Evet veya Hayır ** | Bilinmiyor *** | | ____________________________________________________________ V
İle ilgili notlar Yes
veya No
girişler:
Ayrıca, bu diyagramın tüm bu türlerin birbirine nasıl karşılık geldiğini görmede oldukça yararlı olduğunu gördüm (diyagramın sol yarısına daha fazla dikkat edin).
Bu, sorulan soruya gayri resmi bir cevaptır.
3233, 1'den büyük diğer iki sayının çarpımı olarak yazılabilir mi? Königsberg'in Yedi Köprüsü'nün etrafında iki kez herhangi bir köprü almadan dolaşmanın bir yolu var mı? Bunlar ortak bir özelliği paylaşan sorulara örnektir. Cevabın nasıl etkili bir şekilde belirleneceği açık olmayabilir, ancak cevap 'evet' ise, kanıtın kontrol edilmesi kısa ve hızlıdır. İlk durumda, önemsiz olmayan 51 faktorizasyonu; ikincisinde, köprüleri yürümek için bir yol (kısıtlamalara uymak).
Bir karar problemi evet ile sorular veya tek parametrede sadece değişir hiçbir cevap topluluğudur. Sorunu söyleyin KOMPOZİT = {" n
Kompozit n
mi?: Bir tamsayı} veya EULERPATH = {" Grafiğin G
bir Euler yolu var mı? ": G
Sonlu bir grafik}.
Şimdi, bazı karar problemleri, bariz algoritmalar olmasa bile, kendilerini verimli bir şekilde borçlandırmaktadır. Euler, 250 yıl önce "Königsberg'in Yedi Köprüsü" gibi problemler için etkili bir algoritma keşfetti.
Öte yandan, birçok karar sorunu için, cevabı nasıl alacağınız açık değildir - ancak ek bir bilgi biliyorsanız, cevabı doğru bulduğunuzu nasıl kanıtlayacağınız açıktır. KOMPOZİT şu şekildedir: Deneme bölümü açık bir algoritmadır ve yavaştır: 10 basamaklı bir sayıyı hesaba katmak için 100.000 olası bölücü gibi bir şey denemeniz gerekir. Ancak, örneğin biri size 61'in 3233'ün bir böleni olduğunu söylerse, basit uzun bölme doğru olduklarını görmenin etkili bir yoludur.
Karmaşıklık sınıfı NP , 'evet' cevaplarının devlete kısa, kanıtları kontrol etmenin hızlı olduğu karar problemleri sınıfıdır. KOMPOZİT gibi. Önemli bir nokta, bu tanımın sorunun ne kadar zor olduğu hakkında bir şey söylememesi. Bir karar sorununu çözmenin doğru ve etkili bir yoluna sahipseniz, sadece çözümdeki adımları yazmak yeterince kanıttır.
Algoritmalar araştırması devam ediyor ve her zaman yeni akıllı algoritmalar oluşturuluyor. Bugün verimli bir şekilde nasıl çözeceğinizi bilmediğiniz bir sorun, yarın verimli (açık değilse) bir çözüme sahip olabilir. Aslında, KOMPOZİT'e etkili bir çözüm bulmak araştırmacıları 2002 yılına kadar sürdü ! Tüm bu ilerlemelerle gerçekten merak etmek gerekiyor: Bu, kısa kanıtların olması sadece bir yanılsama mı? Belki de etkili kanıtlara katkıda bulunan her karar sorununun etkili bir çözümü vardır? Kimse bilmiyor .
Belki de bu alana en büyük katkı, tuhaf bir NP problemleri sınıfının keşfiyle geldi. Hesaplama devresi modelleri ile yaklaşık oynayarak, Stephen Cook daha kanıtlanmıştır sert veya sert olan NP çeşitli bir karar sorun bulundu her diğer NP sorun. Booleanın tatmin edilebilirlik problemi için verimli bir çözüm, NP'deki diğer herhangi bir probleme verimli bir çözüm oluşturmak için kullanılabilir . Kısa bir süre sonra, Richard Karp bir dizi başka karar sorununun aynı amaca hizmet edebileceğini gösterdi. Bu sorunlar, bir anlamda NP'deki "en zor" problemler, NP-tam problemler olarak bilinir hale geldi .
Tabii ki, NP sadece bir tür karar problemleri sınıfıdır. Birçok sorun doğal olarak bu şekilde ifade edilmez: "N faktörlerini bul", "G grafiğinde her tepe noktasını ziyaret eden en kısa yolu bul", "aşağıdaki boole ifadesini doğru yapan bir dizi değişken atama verir". Her ne kadar bu tür problemlerin "NP'de" olduğu konusunda gayri resmi olarak konuşabilse de, teknik olarak bu pek mantıklı değil - karar problemleri değiller. Bu sorunlardan bazıları NP-tam sorunuyla aynı güce sahip olabilir: bu (kararsız) sorunlara etkili bir çözüm, herhangi bir NP sorununa doğrudan etkin bir çözüm getirecektir. Böyle bir soruna NP-hard denir .
P (Polinom Zamanı): İsminden de anlaşılacağı gibi, bunlar polinom zamanında çözülebilecek problemlerdir.
NP (Deterministik olmayan-polinom Zamanı): Bunlar, polinom zamanında doğrulanabilen karar problemleridir. Bu, belirli bir sorun için polinom zaman çözümü olduğunu iddia edersem, bunu kanıtlamamı istersiniz. Daha sonra, polinom zamanında kolayca doğrulayabileceğiniz bir kanıt vereceğim. Bu tür problemlere NP problemleri denir. Burada, bu sorun için bir polinom zaman çözümü olup olmadığından bahsetmiyoruz. Ancak polinom zamanında belirli bir probleme çözümün doğrulanmasından bahsediyoruz.
NP-Hard: Bunlar en azından NP'deki en zor problemlerdir. Bu sorunları polinom zamanında çözebilirsek, var olabilecek herhangi bir NP problemini çözebiliriz. Bu sorunların mutlaka NP sorunları olmadığını unutmayın. Bu, polinom zamanında bu sorunların çözümünü doğrulayabiliriz / doğrulamayabiliriz.
NP-Complete: Bunlar NP ve NP-Hard olan problemlerdir. Bu, eğer bu problemleri çözebilirsek, başka bir NP problemini çözebiliriz ve bu problemlerin çözümleri polinom zamanında doğrulanabilir.
Diğer harika cevaplara ek olarak, insanların NP, NP-Complete ve NP-Hard arasındaki farkı göstermek için kullandıkları tipik şema :
P v. NP ve benzerlerini tekniklere girmeden açıklamanın en kolay yolu, "kelime problemlerini" "çoktan seçmeli problemlerle" karşılaştırmaktır.
Bir "kelime problemini" çözmeye çalışırken çözümü sıfırdan bulmalısınız. Bir "çoktan seçmeli problemleri" çözmeye çalıştığınızda bir seçeneğiniz vardır: ya bir "kelime problemi" gibi çözebilir ya da size verilen cevapların her birini takmaya çalışın ve uygun aday cevabı seçin.
Genellikle bir "çoktan seçmeli problemin" karşılık gelen "kelime probleminden" çok daha kolay olduğu görülür: aday cevapları değiştirmek ve uygun olup olmadıklarını kontrol etmek, doğru cevabı sıfırdan bulmaktan daha az çaba gerektirebilir.
Şimdi, polinom zamanını "kolay" alan çabayı kabul edersek, P sınıfı "kolay kelime problemlerinden" ve NP sınıfı "kolay çoktan seçmeli problemlerden" oluşur.
P v. NP'nin özü şudur: "Kelime problemleri kadar kolay olmayan çoktan seçmeli kolay problemler var mı?" Yani, verilen bir cevabın geçerliliğini doğrulamanın kolay olduğu, ancak bu cevabı sıfırdan bulmak zor mu?
Şimdi NP'nin ne olduğunu sezgisel olarak anladığımıza göre, sezgilerimize meydan okumalıyız. Bir anlamda hepsinden daha zor olan "çoktan seçmeli problemler" olduğu ortaya çıkıyor: eğer biri "en zor" problemlerden birine bir çözüm bulursa, TÜM'e bir çözüm bulabilir NP sorunları! Cook bunu 40 yıl önce keşfettiğinde tam bir sürpriz oldu. Bu "hepsinden zor" problemleri NP-zor olarak bilinir. Bunlardan birine "kelime sorunu çözümü" bulursanız, otomatik olarak her "kolay çoktan seçmeli sorun" için bir "kelime sorunu çözümü" bulacaksınız!
Son olarak, NP-tamamlama problemleri aynı anda NP ve NP-zor olanlardır. Bizim benzetimimizi takiben, eşzamanlı olarak "çoktan seçmeli problemler kadar kolay" ve "en zoru kelime problemleri olarak".
NP-komple problemleri NP-Hard ve NP karmaşıklık sınıfındaki problemlerdir. Bu nedenle, herhangi bir sorunun NP-tamamlanmış olduğunu göstermek için, sorunun hem NP'de hem de NP-zor olduğunu göstermeniz gerekir.
NP karmaşıklık sınıfındaki problemler polinom zamanında belirleyici olmayan bir şekilde çözülebilir ve NP'deki bir sorun için olası bir çözüm (yani bir sertifika) polinom zamanında doğru olup olmadığı doğrulanabilir.
K-clique problemine deterministik olmayan bir çözüm örneği şöyle olacaktır:
1) bir grafikten rastgele k düğümleri seçin
2) bu düğümlerin bir klik oluşturduğunu doğrulayın.
Yukarıdaki strateji, giriş grafiğinin büyüklüğünde polinomdur ve bu nedenle k-klibi problemi NP'dedir.
Polinom zamanında belirleyici olarak çözülebilen tüm problemlerin NP'de olduğunu unutmayın.
Bir sorunun NP-zor olduğunu göstermek, polinom zaman eşlemesi kullanarak diğer NP-zor sorunlarından bir kısmına probleminizi azaltmayı içerir: http://en.wikipedia.org/wiki/Reduction_(complexity)
Bence çok daha özlü bir şekilde cevap verebiliriz. İlgili bir soruyu cevapladım ve cevabımı oradan kopyaladım
Ancak ilk olarak NP zor bir problem, polinom zaman çözümünün var olduğunu kanıtlayamadığımız bir sorundur. Bazı "problem-P" nin NP sertliği, zaten kanıtlanmış bir NP-sert probleminin polinom zamanında "problem-P" ye dönüştürülmesi ile kanıtlanmıştır.
Sorunun geri kalanına cevap vermek için, öncelikle hangi NP-zor sorunlarının NP-tamamlanmış olduğunu anlamanız gerekir. Bir NP-zor problemi NP setine aitse, NP-tamamlanmış demektir. NP setine ait olmak için bir problemin
(i) bir karar problemi,
(ii) probleme çözüm sayısının sonlu olması ve her bir çözümün polinom uzunluğunda olması ve
(iii) bir polinom uzunluk çözümü verildiğinde, sorunun cevabının problem evet / hayırŞimdi, set NP'ye ait olmayan ve çözülmesi daha zor olan birçok NP-zor probleminin olabileceğini görmek kolaydır. Sezgisel bir örnek olarak, gerçek bir program bulmamız gereken seyahat eden satış elemanının optimizasyon sürümü, yalnızca <= k uzunluğuna sahip bir programın var olup olmadığını belirlememiz gereken seyahat satıcısının karar sürümünden daha zordur.
Bu soru için gerçekten güzel cevaplar var, bu yüzden kendi açıklamamı yazmanın bir anlamı yok. Bu yüzden, farklı hesaplama karmaşıklığı sınıfları hakkında mükemmel bir kaynakla katkıda bulunmaya çalışacağım.
Hesaplama karmaşıklığının sadece P ve NP ile ilgili olduğunu düşünen biri için, burada farklı hesaplama karmaşıklığı sorunları hakkında en kapsamlı kaynak bulunmaktadır . OP tarafından sorulan sorunların yanı sıra, hoş tanımları olan yaklaşık 500 farklı hesaplama problemi sınıfını ve ayrıca sınıfı tanımlayan temel araştırma makalelerinin listesini listelemiştir.
Anladığım kadarıyla, bir np-hard problemi bir np-complete probleminden "daha zor" değildir . Aslında, tanım gereği, her np-complete sorunu:
- Giriş. a Cormen, Leiserson, Rivest ve Stein, Algoritmalar (3ed), s.1069
I
üzerinden bir teklif girmek için, değişkenlere olasın
tüm2^n
atamaları deneyin ve biri teklifi karşılarsa durur ve aksi takdirde sonsuz bir döngü girer. Bu algoritmanın ancakI
tatmin edici olduğunda durduğunu görüyoruz . Böylece, durma problemini çözmek için bir polinom zaman algoritmamız olsaydı SAT'ı polinom zamanda çözebiliriz. Bu nedenle, durma problemi NP-zordur.