NP'nin tamamlandığını nasıl kanıtlayabilirim?


108

Planlamayla ilgili sorun yaşıyorum. Sorunun NP tamamlandığını kanıtlamam gerekiyor. NP'nin tamamlandığını kanıtlamanın yöntemleri neler olabilir?


Karp'ın "Kombinatoryal Problemler Arasında İndirgenebilirliği" ni okuyun.
Paul Hankin

Yanıtlar:


146

NP'nin tamamlandığını göstermek için şunları yapmanız gerekir:

NP'de olduğunu göster

Başka bir deyişle, bazı bilgiler verildiğinde C, alanınızda olsun veya olmasın Vher olası girişi doğrulayacak bir polinom zaman algoritması oluşturabilirsiniz .XX

Misal

Kanıtlayacak tepe kapakların problemi (bazı grafik, bir G, bu büyüklükte bir tepe kapağı grubu var kgibi her kenarının Gkapak kümesindeki en az bir tepeye sahiptir ?) NP olduğu:

  • bizim girdimiz Xbir grafik Gve bir sayıdır k(bu, problem tanımından)

  • Bilgilerimizi C" Gboyut grafiğindeki olası herhangi bir köşe alt kümesi k" olarak alın

  • Sonra bir algoritma yazabiliriz Vverilen G, kve Cköşeler bu seti için bir köşe örtme olup olmadığını dönecektir, Giçinde, ya da değil polinom zamanda .

Daha sonra, her bir grafik için Gbir "bir köşe olası alt kümesi vardır, eğer Gbüyüklükte kbir köşe kapağı", o zaman Giçinde NP.

Not biz anlamına değil bulmalıyız Cpolinom zamanda. Yapabilseydik, sorun `` P.

Algoritmanın bazıları Viçin herkes G için çalışması gerektiğini unutmayınC . Her girişi için orada gerektiğini mevcut bize giriş sorunu etki alanında olup olmadığını doğrulamak yardımcı olabilecek bilgiler. Yani, bilginin bulunmadığı bir girdi olmamalıdır.

NP Hard olduğunu kanıtlayın

Bu, SAT gibi bilinen , boolean ifadeler kümesi gibi bilinen bir NP-tam problemi elde etmeyi içerir :

(A veya B veya C) ve (D veya E veya F) ve ...

İfade tatmin edici olduğunda , yani bu booleler için ifadeyi doğru kılan bazı ayarlar vardır .

Ardından , NP-tam problemini polinom zamanda probleminize indirgeyin .

Yani, bazı girdi verilir Xiçin SAT(ya da her türlü kullandığınız NP-tam problemi), bazı girdi oluşturmak Ytür sorununuza için, Xancak ve ancak SAT olduğunu YSorununu olduğunu. Fonksiyon f : X -> Y, polinom zamanda çalışmalıdır .

Yukarıdaki örnekte, girdi , köşe kapağının Ygrafiği Gve boyutu olacaktır k.

Bir İçin tam kanıtı , her iki kanıtlamak zorunda kalacak:

  • O Xise SAT> = YSorununu

  • ve Yprobleminizde => Xiçinde SAT.

marcog'un cevabının, probleminize indirgeyebileceğiniz diğer NP-tam problemlerle bir bağlantısı vardır.

Dipnot: 2. adımda ( NP-zor olduğunu kanıtlayın ), NP-zor (NP-tam olması gerekmez) problemi mevcut probleme indirgemek yeterli olacaktır, çünkü NP-tam problemler NP-zor problemlerin bir alt kümesidir (yani ayrıca NP'de).


7
Bunun arkasında eksik veri veya döngüsel bir mantık olup olmadığını merak ediyorum. Demek istediğim, bir problemin NP'de olduğunu 'zaten NP'de olan' başka bir soruna atıfta bulunmaksızın nasıl 'kanıtlayabilirim '? "Demirden yapılmış çünkü parçası demir olarak biliniyor" demek gibi, bu demir kanıtı değil.
Hernán Eche

6
Hatırladığım kadarıyla, SAT'ın NP-tamamlandığını belirten Cook-Levin teoremi adlı bir teorem var. Bu kanıt, yukarıda özetlediğimden biraz daha karmaşık ve bunu kendi kelimelerimle açıklayabileceğimi sanmıyorum.
Laila Agaev

4
Daha kesin olmak gerekirse, Cook-Levin Teoremi SAT'ın NP-tam olduğunu belirtir: NP'deki herhangi bir problem, deterministik bir Turing makinesi tarafından polinom zamanında bir Boole formülünün tatmin edici (SAT) olup olmadığını belirleme problemine indirgenebilir. İşte sorduğun eksik parça bu. Wikipedia'da teoreme bakarsanız, bir kanıt vardır ve kanıtınızda teoremi referans alabilirsiniz. Bununla birlikte, SAT'ı belirli bir soruna indirgemek, bana NP-bütünlüğünü kanıtlamayı öğretmenin yoluydu.
Laila Agaev

Yani benim sorum SAT polinomda çözülebilir mi, yani P = NP problemi ile bitiyor .. Cevabınız için teşekkürler.
Hernán Eche

İkinci adımda NP-zor bir sorunu neden istediğimiz soruna indirgeyemediğimizi açıklar mısınız? NP-tam bir problem olmak zorunda mı?
MLT

23

NP-Complete sorununu, sahip olduğunuz soruna indirgemeniz gerekir. Azaltma polinom zamanda yapılabiliyorsa, problem zaten NP'de ise probleminizin NP-tamamlandığını kanıtlamış olursunuz, çünkü:

Problemi NP-Zor hale getiren polinom zamanında ona indirgenebildiğinden NP-tam probleminden daha kolay değildir.

Daha fazla bilgi için http://www.ics.uci.edu/~eppstein/161/960312.html'nin sonuna bakın .


2
Anlaşılır şekilde açıklayan birini + 1'leyin. anahtar kelimelere atıfta bulunmak yerine pek anlamıyorum.
ColacX

22
İlk cümle geri-önüne şudur: Bilinen NP-tam problemi azaltmak gerekir için kendi sorunu. Bu, probleminizin en az bilinen NP-tam problemi kadar zor olduğunu gösterir . Bölüm (b) de yanlıştır: indirgemeyi bulduysanız, probleminizin NP-zor olduğunu zaten biliyorsunuzdur; tek soru NP'de olup olmadığıdır (Halting Problemi gibi bazı problemler değildir). NP-sert ve NP'de ise, o zaman NP-tamamlanmıştır (yani "NP-tam", "NP-sert" ten daha spesifiktir).
j_random_hacker

1
P! = NP olduğunu bilmediğimiz için a) bir çelişkiye yol açar demem.
Chiel ten Brinke

8

L probleminin NP-tamamlandığını kanıtlamak için aşağıdaki adımları uygulamamız gerekir:

  1. L probleminizin NP'ye ait olduğunu kanıtlayın (yani bir çözüm verildiğinde, polinom zamanında doğrulayabilirsiniz)
  2. Bilinen bir NP-tam problemi seçin L '
  3. L 'yi L'ye dönüştüren bir f algoritmasını tanımlayın
  4. Algoritmanızın doğru olduğunu kanıtlayın (resmi olarak: x ∈ L 'ancak ve ancak f (x) ∈ L ise)
  5. Algo f'nin polinom zamanda çalıştığını kanıtlayın

7

İlk olarak, NP'de yattığını gösterirsiniz.

Sonra zaten bildiğiniz başka bir problem bulursunuz NP tamamlandı ve NP Hard problemini polinomik olarak probleminize nasıl indirgediğinizi gösterin.


Hayır. NP'nin bütünlüğünü kanıtlamak VE bunun NP'de olduğunu kanıtlamak için NP tam probleminden NP probleminize indirgeyebileceğinizi göstermeniz gerekir. NP'de ispatlayamadığınız sürece NP zor gelmez.
mrmemio29

6
  1. NP Complete problemlerinin bir alt kümesine aşina olun
  2. NP Sertliğini Kanıtlayın: Bir NP tam probleminin keyfi bir örneğini probleminizin bir örneğine azaltın. Bu, pastanın en büyük parçası ve NP Complete problemlerine aşinalığın karşılığını veriyor. Azaltma, seçtiğiniz NP Complete soruna bağlı olarak az çok zor olacaktır.
  3. Probleminizin NP'de olduğunu kanıtlayın: Bir örneğin çözüm olup olmadığını polinom zamanında doğrulayabilen bir algoritma tasarlayın.
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.