P vs NP - NP


38

Bu sınıflandırmaları ve neden var olduklarını anlamaya çalışıyorum. Benim anlayışım doğru mu? Eğer değilse, ne?

  1. P, polinom karmaşıklığı veya bazı negatif olmayan gerçek sayılar içindir , örneğin , vb. Bir sorun P'ye aitse, polinom zamanında sıfırdan çözebilecek en az bir algoritma vardır. Örneğin, bazı tamsayıların bir döngü oluşturup asal olup olmadığını, her adımda bölünerek denetleyerek her zaman anlayabilirim .O(nk)kO(1), O(n1/2), O(n2), O(n3)n2 <= k <= sqrt(n)kn

  2. NP deterministik olmayan polinom karmaşıklığıdır. Deterministik olmamanın ne demek olduğunu gerçekten bilmiyorum. Polinom zamanında doğrulamanın kolay olduğu anlamına gelir, ancak cevabı bilmiyorsak sıfırdan çözmenin polinom zamanı olabileceği veya olamayabileceği anlamına gelir. O yana olabilir polinom zamanda çözülebilir olması, tüm P sorunları da NP sorunlardır. Tamsayılı çarpanlara ayırma, NP örneği olarak kabul edilir, ancak deneme çarpanlara ayırma O(sqrt(n))zaman aldığından kişisel olarak neden P olmadığını anlamıyorum .

  3. NP-Complete Hiç anlamıyorum, ancak Gezgin Satıcı Sorunu bunun bir örneği olarak belirtiliyor. Ancak bence TSP problemi sadece NP olabilir, çünkü size önden bir yol olup olmadığını doğrulamak gibi bir şey gerekiyor .O(2n n2) time to solve, but O(n)

  4. NP-Hard sanırım bilinmeyenlerle dolu. Doğrulaması zor, çözmesi zor.


4
CS.SE hakkındaki soruyu okudunuz mu P, NP, NP-complete ve NP- hard'un tanımı nedir? ?

Bu bağlantıyı henüz görmedim, hayır. Ben okuyacağım, teşekkürler
Nakano

1
Bu CS.SE'nin cevabı oldukça hayranlık uyandırıcı, ancak sanırım bu terimlerin ne anlama geldiğiyle ilgili çok fazla ve yanıltıcı olmayan bir açıklama yapmak neredeyse mümkün. @Nakano daha kısa, "noktaya" cevap verecek veya CS.SE'nin gönderdiği sorunu çözdü mü?
Ixrec

@MichaelT Bu bağlantıyı okudum ve gerçekten ayrıntılı buldum ve pek çok noktada net değil. Bana cevaplardan daha çok soru vermiş gibi hissediyorum.
Nakano

1
“deterministik olmayan”, “bir seçim yapıldığında bilgisayar her zaman doğru seçimi seçer” şeklinde yorumlanabilir.
Thorbjørn Ravn Andersen

Yanıtlar:


39

Temel olarak P ve NP konusunda haklısın, ama NP zor ve NP tamam hakkında değilsin.

Yeni başlayanlar için, burada söz konusu dört karmaşıklık sınıfının süper özlü tanımları:

  • P, polinom zamanında belirleyici bir Turing makinesi tarafından çözülebilen karar problemleri sınıfıdır.

  • NP, polinom zamanında deterministik olmayan bir Turing makinesi tarafından çözülebilen karar problemleri sınıfıdır. Eşdeğer olarak, deterministik bir Turing makinesi tarafından polinom zamanında doğrulanabilen problemler sınıfıdır .

  • NP-hard, deterministik bir Turing makinesi tarafından NP'deki tüm problemlerin polinom zamanına indirgenebileceği karar problemleri sınıfıdır.

  • NP-tamamlayıcı, NP-sert ve NP'nin kesişimidir. Eşdeğer olarak, NP-tamamlayıcı, NP'deki tüm problemlerin, belirleyici bir Turing makinesi tarafından polinom zamanına indirgenebileceği NP'deki karar problemleri sınıfıdır.

Ve işte bu, P'nin NP'ye eşit olmadığı varsayılarak, bu dört sınıf arasındaki ilişkileri gösteren Wikipedia'dan bir Euler diyagramı :

görüntü tanımını buraya girin

En aşina olduğunuzu veya kafanızın karıştığını düşündüğüm kısım, X sorunundan Y'ye bir "polinom zaman azalması" nosyonudur. Y problemini çözen diğer algoritma B, B'den başka A'nın tüm kısımlarının bir polinom zaman karmaşıklığına sahip olması durumunda, bu redüksiyona "polinom zaman azaltma" denir. Önemsiz bir örnek olarak, bir dizideki en küçük elemanı bulma problemi, sıralama problemine indirgenebilir, çünkü diziyi sıralayabilir ve sıralanan dizinin ilk elemanını geri döndürebilirsiniz.

NP zor tanımı hakkında kaçırılması kolay olan bir şey, azaltmanın NP sorunlarından NP zor soruna gitmesidir, ancak bunun tam tersi de değildir . Bu, NP zorlu sorunların NP'de veya daha yüksek bir karmaşıklık sınıfında (Euler diyagramından da görebileceğiniz gibi) olabileceği veya çözülemeyen sorunların bile olmadığı anlamına gelir. Bu yüzden insanlar bu tür şeyleri gayrı resmi olarak açıklamaya çalışırken “NP-zor en azından NP kadar zor demektir” diye bir şey söylerler.

Durma problemi, Wikipedia'da açıkça belirtildiği gibi açıkça NP'de olmayan bir NP-zor problemin iyi bir örneğidir :

Durma sorununun NP zor olduğunu ancak NP tamam olmadığını kanıtlamak kolaydır. Örneğin, Boole tatmin edilebilirliği sorunu, tüm gerçeğe uygun değer atamalarını deneyen bir Turing makinesinin açıklamasına dönüştürülerek durma sorununa indirgenebilir ve formülü karşılayan bir tane bulduğunda durur ve aksi takdirde sonsuz bir döngüye girer. Durdurma probleminin NP'de olmadığını görmek kolaydır, çünkü NP'deki tüm problemler sınırlı sayıda işlemle karar verilebilirken, durdurma problemi genel olarak kararsızdır.


3
@Nakano Sezgisel olarak, bir problemin başka bir problemin alt problemi haline getirilmesi anlamında bir "azalma". Bu indirimlerin bir kısmının zayıf "alt problem" seçimi ile azaltmak yerine karmaşıklığı arttırması, bu indirimleri hiçbir zaman gerçek dünya kurallarında kullanmayacağınız anlamına gelir. Dürüst olmakla birlikte, NP-zor beni tuhaf ve korkunç derecede ilginç bir sınıf olarak görmezden geliyor; bunu görmezden gelmek ve sadece NP-tamamlamayı düşünerek diğer tüm NP sorunlarının azalttığı NP sorunları kümesi olarak düşünmek daha verimli olabilir.
Ixrec

1
@Nakano stackoverflow.com/questions/12637582/… Kısa cevabın, insanlar tamsayılı çarpanlara ayırma konusunda NP olduklarından bahsettiklerinde normalde gerçekten büyük tamsayılardan bahsettikleri, gerçekten de büyük O ispatlarını n: "işleve girdiğiniz tam sayıların sayısı" yerine "tamsayıyı bellekte kaplayan bit sayısı".
Ixrec

1
@Nakano Bağladığım SO sorusu ve yorumum bu konuyu sizin için çözmek için yeterli değilse, özellikle bu tamsayı çarpanlarına ayırma olayı hakkında özellikle yeni bir soru sormaya değecektir.
Ixrec

2
@Nakano: Büyük O gösteriminde, ngirişin değerini değil, girişin boyutunu (elemanların sayısı, bayt, rakam vb.) Ölçüsü alır.
Bart van Ingen Schenau

2
@Nakano Kısa cevap sizin iyi olduğunuzdur ve bu yüzden zaman karmaşıklığı analizi yaparken daima n'in ne anlama geldiğini belirtmeniz gerekir . N'nin "girişin boyutu" olduğu iddiası yalnızca n'yi normalde nasıl tanımlamayı seçtiğimizin kısa bir özetidir. Büyük O notasyonu veya zaman karmaşıklığının titiz tanımlarının bir parçası değildir. N, girişin değeri olduğunda, tamsayı çarpanlarına ayırmanın O (sqrt (n)) olduğunu doğru yaptığınıza inanıyorum . Bu sadece, n'nin büyüklüğünün, pratikte n'nin değerininkinden çok daha faydalı olduğu durumlarda ortaya çıkan karmaşıklık sonucudur.
Ixrec

7

Tamsayılı çarpanlara ayırma, NP örneği olarak verilir, ancak deneme faktoringine ayırma O (sqrt (n)) zaman aldığından kişisel olarak neden P olmadığını anlamıyorum.

Karmaşıklık sınıfları niçin girişin uzunluğu budur. Eğer faktör tamsayı istiyorsanız Yani k, ndeğil kama log kbit (veya ne olursa olsun) sayısı, sayı yazmak için alır. Yani tamsayılı çarpanlaştırma O(sqrt(k))dediğiniz gibi, ama olan bu .O(sqrt(2n))O(2(n/2))

NP-Hard sanırım bilinmeyenlerle dolu. Doğrulaması zor, çözmesi zor.

Hayır. NP-Hard sadece bir sorunun çözülmesinin ne kadar zor olduğu ile ilgilidir.

NP-Zor problemleri en azından NP'deki en zor problem kadar zordur. En azından bu kadar zor olduklarını biliyoruz, çünkü NP-Zorlu bir problem için polinom-zaman algoritması olsaydı, bu algoritmayı NP'deki herhangi bir soruna uyarlayabilirdik.

NP-Complete Hiç anlamıyorum

NP-Complete, bir sorunun hem NP hem de NP Hard olduğu anlamına gelir. Bu, bir çözümü hızlıca doğrulayabileceğimiz anlamına gelir (NP), ancak en azından NP'deki en zor sorun kadar zor (NP-Hard).

Deterministik olmamanın ne demek olduğunu gerçekten bilmiyorum.

Determinizm olmayan bir alternatif NP tanımıdır. Deterministik olmayan bir turing makinesi, istediği zaman kendisini çoğaltabilir ve her bir kopyanın farklı bir yürütme yolunu izlemesini sağlayabilir. Bu tanım uyarınca, NP, bilgisayar tarafından kendi başına serbestçe kopyalanabilecek olan bir bilgisayar tarafından polinom zamanında çözülebilen sorunların kümesidir. Bunun, polinom zamanında doğrulanabilen sorunların aynısı olduğu ortaya çıktı.


Yani $ O (n ^ k) $ zaman algoritmalarının NP problemi olması mümkün mü?
Nakano

kSabit bir gerçek sayı nedir? Evet. Tüm P problemleri aynı zamanda NP problemleridir. Açıkçası, polinom zamanında çözebileceğiniz herhangi bir şey polinom zamanında da doğrulanabilir.
Winston Ewert

Burada uzunluk / boyut nasıl tanımlanmaktadır? Mesela $ n $ 'ı büyük bir tabana yazabilir ve yazarken uzunluğunu azaltabilirdim. Tamsayılarla açıkça ilgilenmeyen, ancak $ V $ köşeleri ve $ E $ kenarları, vb. Grafikleri söyleyen sorunlara ne dersiniz?
Nakano

@Nakano, aslında büyük bir üs onu değiştirmezdi, çünkü sadece sabit bir faktör farkı olacaktı. Bu nedenle polinomu olmayan polinomu etkilemez. Ancak, sayıyı unary olarak yazdıysanız, o zaman onu değiştirir.
Winston Ewert,

2
@Nakano, hmm ... Karmaşıklık sınıflarını beş yaşına kadar açıklamaya çalışmam. : P
Winston Ewert

5

Anlaşılması gereken ilk şey, P ve NP'nin sorunları değil, dilleri sınıflandırmasıdır . Bunun ne anlama geldiğini anlamak için önce başka tanımlara ihtiyacımız var.

Bir alfabe boş olmayan sonlu bir semboller kümesidir.

{ 0, 1} ASCII karakter kümesi gibi bir alfabedir. {} bir alfabe değil çünkü boş. N (tamsayılar) bir alfabe değildir, çünkü sonlu değildir.

Let Σ bir alfabe olacak. Dan sembollerin sonlu sayıda sıralı bir birleştirme Σ bir denir sözcüğü üzerinde Σ .

Dize 101, { 0, 1} alfabesinin üzerinde bir kelimedir . Boş kelime (genellikle yazılı £ değerinin ) Herhangi alfabenin üzerinde bir kelimedir. Dize penguin, ASCII karakterlerini içeren alfabenin üzerinde bir kelimedir. Numara tt ondalık notasyonu alfabesi üzerinde bir kelime değildir { ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} o sonlu olmadığı için.

Uzunluk , bir sözcüğün w , yazılı olarak | w |, içindeki sembol sayısıdır.

Örneğin, | hello| = 5 ve | ε | = 0 Herhangi bir kelime için w , | w | ∈ N ve bu nedenle sonlu.

Let Σ bir alfabe olacak. Set Σ * üzerindeki tüm kelimeleri içeren Σ dahil £ değerinin . Set Σ + üzerindeki tüm kelimeleri içeren Σ hariç £ değerinin . İçin nN , Σ N uzunluğu kelime grubu olan n .

Her alfabe için Σ , Σ ve Σ + sonsuz sayı kümeleridir . ASCII karakter kümesi için Σ ASCII , düzenli ifadeler .*ve .+göstermektedirler Σ ASCII * ve Σ ASCII + sırasıyla.

{ 0, 1} 7 7 bitlik ASCII kodları kümesidir { 0000000, 0000001, ..., 1111111}. { 0, 1} 32 , 32 bit tam sayı değer kümesidir.

Let Σ bir alfabe ve olmayacak LΣ * . L bir denir dili üzerinde Σ .

Bir alfabe için Σ boş seti ve Σ * üzerinde önemsiz dillerdir Σ . Eski sık sık boş dil olarak adlandırılır . Boş dil {} ve sadece boş kelime { ε } içeren dil farklıdır.

NaN olmayan IEEE 754 kayan nokta değerlerine karşılık gelen { 0, 1} 32 alt kümesi sonlu bir dildir.

Dillerin sonsuz sayıda kelimesi olabilir, ancak her dilde sayılabilir. Dizeleri seti { 1, 2, ...} onluk sistemde tamsayılar belirten alfabenin üzerinde sonsuz bir dildir { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Dizeleri sonsuz kümesi { 2, 3, 5, 7, 11, 13, ...} onluk sistemde asal sayılar belirten bunların uygun bir alt kümesidir. Düzenli ifadeyle eşleşen tüm kelimeleri içeren [+-]?\d+\.\d*([eE][+-]?\d+)?dil, ASCII karakter kümesi üzerindeki bir dildir (C programlama dili tarafından tanımlanan geçerli kayan nokta ifadelerinin bir alt kümesini ifade eder).

Tüm gerçek sayıları içeren herhangi bir dil yoktur (herhangi bir notasyonda) çünkü gerçek sayılar kümesi sayılabilir değildir.

Let Σ bir alfabe ve olmayacak LΣ * . Bir makine D karar L , her bir giriş için, eğer ağırlıkΣ * Bu hesaplar karakteristik fonksiyon χ L ( w sonlu zaman). Karakteristik fonksiyon olarak tanımlanır

χ L : Σ  → {0, 1}
     w   ↦ 1,   wL 
         0, aksi takdirde.

Böyle bir makine L için bir karar verici denir . “Verilen w , D çıkışı x ” için “ D ( w ) = x ” yazıyoruz .

Çok sayıda makine modeli var. Günümüzde pratik kullanımda en yaygın olanı bir Turing makinesinin modelidir . Bir Turing makinesinin hücrelere kümelenmiş sınırsız lineer depolaması vardır. Her hücre, herhangi bir zamanda tam olarak bir alfabenin bir sembolünü tutabilir. Turing makinesi, bir hesaplama adım dizisi olarak hesaplamasını gerçekleştirir. Her adımda, bir hücresini okuyabilir, muhtemelen değerinin üzerine yazabilir ve okuma / yazma kafasını bir konum sola veya sağ hücreye taşıyabilir. Makinenin gerçekleştireceği eylem sonlu durumlu bir otomat tarafından kontrol edilir.

Sınırlı sayıda talimat ve sınırsız saklama özelliğine sahip rastgele erişimli bir makine, Turing makine modeli kadar güçlü olan başka bir makine modelidir.

Bu tartışma uğruna, kullandığımız kesin makine modeliyle bizi rahatsız etmeyeceğiz, ancak makinenin sınırlı bir deterministik kontrol ünitesine, sınırsız depolamaya sahip olduğunu ve sayılabilecek adımların bir sırası olarak bir hesaplama yaptığını söylemek yeterli olacaktır.

Sorunuzda kullandığınızdan beri, “büyük-O” yazımına aşina olduğunuzu farz ediyorum, bu yüzden burada sadece hızlı bir tazeleme.

Let f : N bir işlevi →. Grubu O ( f ) tüm fonksiyonlar içeren g : NN sabitleri orada mevcut olan N 0N ve cN gibi, her söz konusu nN ile n > n, 0 doğru olduğunu g ( n ) ≤ C f ( n )

Şimdi asıl soruya yaklaşmaya hazırız.

Sınıf P her dil içeren L Turing makinesi mevcut olduğu D karar L ve sabit kN Her giriş için bu şekilde ağırlık , D durur sonra en fazla T (| W bir işlev için adımlar |) TO ( nn k ).

Yana O ( nn k ), matematiksel olarak doğru iken, yazma için sakıncalı ve okumak, çoğu insan olduğunu - dürüst olmak gerekirse, herkesin kendim dışında - genellikle basitçe yazıyor Ç ( n k ).

Sınırın w uzunluğuna bağlı olduğunu unutmayın . Bu nedenle, asalların dili için yaptığınız argüman sadece unaray kodlamalarındaki sayılar için geçerlidir , burada n sayısının w kodlaması için, kodlamanın uzunluğu | w | n ile orantılıdır . Hiç kimse böyle bir kodlamayı pratikte kullanmaz. Ancak, tüm olası faktörleri denemekten daha gelişmiş bir algoritma kullanarak, eğer girdiler ikili (veya başka bir bazda) kodlanmışsa , asal sayıların dilinin P'de kaldığı gösterilebilir . ( Yoğun ilgiye rağmen, bu yalnızca Manindra Agrawal, Neeraj Kayal ve Nitin Saxena tarafından ispatlanabildi. 2004 yılında ödüllü bir makalede algoritmanın çok basit olmadığını tahmin edebilirsiniz.)

Önemsiz diller {} ve Σ * ve önemsiz olmayan dil { ε } Açıkçası olan P (herhangi bir alfabe için Σ ). En sevdiğiniz programlama dilinde, bir diziyi girdi olarak alan ve dizgenin, her biri için dilden bir kelime olup olmadığını belirten ve işlevinizin polinom çalışma zamanı karmaşıklığı olduğunu söyleyen bir boolean döndüren işlevler yazabilir misiniz?

Her normal dil (normal ifade ile tanımlanan dil) P cinsindendir .

Let Σ bir alfabe ve olmayacak LΣ * . Bir makine V iki kelime kodlanmış bir demet alır w , cΣ * adımları sınırlı bir sayıda sonra çıkışlar, 0 ya da 1 olduğu doğrulayıcı için L , aşağıdaki özelliklere sahip olduğu takdirde.

  • Verilen ( w , c ), V , yalnızca wL ise 1 değerini verir .
  • Her için ağırlıkL , bir vardır CΣ * bu şekilde V ( a , c ) 1 =.

C yukarıdaki tanımında adı şahit (veya sertifika ).

Bir doğrulayıcı bile yanlış tanık için yanlış negatif vermek için izin w aslında içindedir L . Bununla birlikte, yanlış pozitifler vermek yasaktır. Ayrıca, dildeki her bir kelime için, en az bir tanık bulunması gerekmektedir.

Asıl olmayan tüm tam sayıların ondalık kodlarını içeren KOMPOZİT dili için tanık bir çarpanlaştırma olabilir. Örneğin, ∈ KOMPOZİT (659, 709)için tanıktır 467231. Tanık olmadan, bir kağıdın üzerinde, 467231'in asal olmadığını kanıtlamanın, bilgisayar kullanmadan zor olacağını kolayca doğrulayabilirsiniz.

Uygun bir tanığın nasıl bulunabileceği hakkında hiçbir şey söylemedik. Bu deterministik olmayan kısımdır.

Sınıf NP her dil içeren L Turing makinesi mevcut olduğu V doğrular L ve sabit kN Her giriş için öyle ki ( a , c ), V durur sonra en fazla T (| a |) bir fonksiyon için adımlar TO ( n,n k ).

Not Yukarıdaki tanım her biri için bu ima ağırlıkL bir tanık vardır c ile | c | ≤ T (| w |). (Turing makinesi muhtemelen tanığın daha fazla sembolüne bakamaz.)

NP , P'nin bir üst kümesidir (neden?). NP dilinde olan dillerin olup olmadığı bilinmemektedir, ancak P dilinde değildir .

Tamsayılı çarpanlara ayırma kendi başına bir dil değildir. Bununla birlikte, kendisiyle ilişkili karar sorununu temsil eden bir dil oluşturabiliriz . Kendisine, bir bütün dizilerini içeren dil ( n , m, öyle ki) n, bir faktör vardır d ile Dm . Bu dile FACTOR diyelim. FACTOR'a karar verecek bir algoritmanız varsa, her asal çarpan için yinelemeli bir ikili arama yaparak sadece polinom yükü ile tam bir çarpanlaştırmayı hesaplamak için kullanılabilir.

FACTOR'un NP cinsinden olduğunu göstermek kolaydır . Uygun bir tanık basitçe d faktörü olacaktır ve tüm doğrulayıcının yapması gereken dm ve n mod d = 0 olduğunu doğrulamaktır. Tüm bunlar polinom sürede yapılabilir. (O yine, Ol kodlama uzunluğu sayısı fazla olduğu ve logaritmik olarak n .)

FACTOR'un P de olduğunu gösterebilirseniz, birçok harika ödül aldığınızdan emin olabilirsiniz. (Ve bugünün şifrelemesinin önemli bir bölümünü kırdınız.)

Her dil için NP , bir kaba kuvvet algoritması vardır karar deterministik onu. Sadece tüm tanıklar üzerinde kapsamlı bir araştırma yapar. (Bir tanığın azami uzunluğunun bir polinom tarafından sınırlandırıldığına dikkat edin.) Bu nedenle, PRIMES'e karar verme algoritmanız aslında KOMPOZİT'e karar vermek için kaba kuvvet algoritmasıydı.

Son sorunuzu ele almak için, azaltma yapmamız gerekiyor . İndirimler çok güçlü bir teorik bilgisayar bilimi kavramıdır. Bir problemi bir başkasına düşürmek temel olarak bir problemi başka bir problemi çözerek çözmek demektir.

Let Σ bir alfabe olması ve A ve B üzerinde dil olmak Σ . Bir olan polinom zamanlı birçok kimse indirgenebilir için B bir işlev mevcutsa f : Σ *Σ * aşağıdaki özelliklere sahip.

  • wbir   ⇔   f ( a ∈) B   için tüm ağırlıkΣ * .
  • Fonksiyon f Her giriş için Turing makine ile hesaplanabilmektedir ağırlık polinom in sınırlanmış adımların bir dizi | w |.

Bu durumda, biz yazmak Ap B .

Örneğin, A , bir üçgen içeren tüm grafikleri (bitişiklik matrisi olarak kodlanmış) içeren dil olsun . (Üçgen, uzunluğu 3 olan bir döngüdür.) Sıfır olmayan izli tüm matrisleri içeren dil B olsun . (Bir matrisin izi, ana diyagonal öğelerin toplamıdır.) O zaman, A , B'ye indirgenebilen çok-zamanlı bir çok-zamanlıdır . Bunu kanıtlamak için uygun bir dönüşüm fonksiyonu bulmamız gerekir f . Bu durumda, bitişik matrisin 3. gücünü hesaplamak için f değerini ayarlayabiliriz . Bu, her biri polinom karmaşıklığına sahip iki matris-matris ürünü gerektirir.

Lp L olduğu çok doğru . (Resmen kanıtlayabilir misiniz?)

Bunu şimdi NP'ye uygulayacağız .

Bir dil L olan NP -Zor ancak ve ancak L '≤ p L her dil için L ' ∈ NP .

Bir NP -Hard dil veya olmayabilir olabilir NP kendisi.

Bir dil L olan NP -tamamlamak ancak ve ancak

  • LNP ve
  • L , NP- serttir.

NP'nin en meşhur dili SAT'dır. Memnun olabilen tüm boolean formülleri içerir. Örneğin, ( ab ) ∧ (¬ a ∨ ¬ b ) ∈ SAT. Geçerli bir tanık { a = 1, b = 0}. ( Ab ) ∧ (¬ ab ) ∧ ¬ b ∉ SAT formülü. (Bunu nasıl ispat edersin?)

SAT ∈ NP olduğunu göstermek zor değil . SAT'ın NP- sertliğini göstermek biraz işe yarar, ancak 1971'de Stephen Cook tarafından yapılmıştır .

Bir NP- tamamlayıcı dili bir kez bilindiğinde, diğer dillerin NP- bütünlüğünü azaltma yoluyla göstermek nispeten basitti . Dil Eğer bir olduğu bilinmektedir NP o gösteren -Sert As B olduğu Şekil B olan NP ( “≤ geçişliliğinden ile de -Sert p ”). 1972'de Richard Karp , NP olduğunu gösterebileceği 21 dilden oluşan bir liste yayınladı.-SAT (geçişli) azaltma yoluyla tamamlandı. (Bu cevabın gerçekte okumanızı tavsiye ettiğim tek yazı bu. Diğerlerinden farklı olarak, anlaşılması zor değil ve NP'nin eksiksizliğini azaltma yoluyla nasıl çalıştığını kanıtlamak konusunda çok iyi bir fikir veriyor .)

Son olarak, kısa bir özet. Biz semboller kullanacağız NPH ve NPC sınıflarını göstermek için NP -Zor ve NP sırasıyla -tamamlamak dilleri.

  • PNP
  • NPCNP ve NPCNPH , aslında NPC = NPNPH tanım gereği
  • ( ANP ) ∧ ( BNPH ) ⇒   Ap B

NPCNP dahil edilmesinin P = NP olması durumunda bile uygun olduğuna dikkat edin . Bunu görmek için, kendinizi hiç olmayan önemsiz bir dil önemsiz bir birine düşürülmüş ve önemsiz de dil vardır edilebileceğini temizlemek yapmak P hem de önemsiz olmayan diller NP . Bu (çok ilginç değil) bir köşe durum olsa.

ek

Karışıklık Birincil kaynak siz “düşünüyorduk o gibi görünüyor n ” nde “ O ( nf ( n ))” olarak yorumlanması aslında referans veren bir algoritmanın girdi uzunluğunun girişinin. Bu önemli bir ayrımdır, çünkü bir algoritmanın asimptotik karmaşıklığının girdi için kullanılan kodlamaya bağlı olduğu anlamına gelir .

Bu hafta, bilinen en büyük Mersenne üssü için yeni bir rekor elde edildi. Şu anda bilinen en büyük asal sayı 2 74 207 281 - 1'dir. Bu sayı o kadar büyük ki başımı ağrıtıyor , bu yüzden aşağıdaki örnekte daha küçük bir tane kullanacağım: 2 31 - 1 = 2 147 483 647. farklı şekillerde kodlanmalıdır.

  • Mersenne üssüne göre ondalık sayı: 31(2 bayt)
  • ondalık sayı olarak: 2147483647(10 bayt)
  • : tekli sayı olarak 2 147 483 640 daha fazlası ile değiştirilecek olan s (yaklaşık 2 GiB)11111…111

Tüm bu dizgiler aynı sayıyı kodlar ve bunlardan herhangi birini verdiğimizde, aynı sayının başka bir kodlamasını kolayca yapabiliriz. (Ondalık kodlamayı, isterseniz ikili, sekizli veya onaltılı ile değiştirebilirsiniz. Uzunluğu yalnızca sabit bir faktörle değiştirir.)

İlkelliği test etmek için naif algoritma sadece unary kodlamalar için yalnızca polinomdur. AKS asallık Test onlu (ya da herhangi bir diğer baz için polinom b ≥ 2). Lucas-Lehmer asallık testi Mersenne için bilinen en iyi algoritma asal olan M p ile p tek bir asal ama yine de Mersenne üs ikili kodlama uzunluğu üstel p (polinom p ).

Bir algoritmanın karmaşıklığı hakkında konuşmak istiyorsak, hangi gösterimi kullandığımızın çok açık olması çok önemlidir. Genel olarak, en verimli kodlamanın kullanıldığı varsayılabilir. Yani, tamsayılar için ikili. (Her asal sayının bir Mersenne astarı olmadığını, bu nedenle Mersenne üssünü kullanmak genel bir kodlama şeması olmadığını unutmayın.)

Teorik şifrelemede, birçok algoritmalar resmen tamamen yararsız dize geçirilen k 1 ilk parametre olarak s. Algoritma asla bu parametre bakar ama buna resmen de polinom olmasını sağlar k olan, güvenlik parametresi ayarlamak için prosedürün güvenliğini kullandı.

İkili kodlamadaki karar dilinin NP- tam olduğu bazı problemlerde , gömülü sayıların kodlanması birliğe çevrilirse, karar dili artık NP- tam değildir . Diğer sorunlara ilişkin karar dilleri o zaman bile NP olarak tamamlanmış durumda . Sonuncusuna şiddetle NP- tamamlayıcı denir . En iyi bilinen örnek çöp kutusu ambalajıdır .

Girdi sıkıştırılmışsa bir algoritmanın karmaşıklığının nasıl değiştiğini görmek de ilginçtir (ve belki de daha fazlası) . Mersenne primerleri örneği için, her biri öncekinden daha logaritmik olarak sıkıştırılmış üç kodlama gördük.

1983 yılında, Hana Galperin ve Avi Wigderson , grafiğin giriş kodlaması logaritmik olarak sıkıştırıldığında, genel grafik algoritmalarının karmaşıklığı hakkında ilginç bir makale yazdılar . Bu girdiler için yukarıdan bir üçgen içeren grafiklerin dili (açıkça P'de olduğu yer ) aniden NP- tamamlayıcı hale gelir .

Bunun nedeni P ve NP gibi dil sınıflarının problemler için değil diller için tanımlanmış olmasıdır .


Bu cevap muhtemelen, askerin anlayışı için faydalı değildir. Diğer cevapları okuyun ve Nanako'nun neyle uğraştığını görün. Sence bu cevap ona yardımcı olacak mı?
Andres F.

Bu cevap OP'ye yardımcı olmayabilir, ancak kesinlikle diğer okuyuculara da yardımcı olur (kendim dahil).
Gabriel

4

Aynı şey için daha az gayri resmi tanımlamaya çalışacağım.

P problemleri: polinom sürede çözülebilen problemler. Etkili bir şekilde çözülebilen problemler içerir.

NP problemi: polinom sürede doğrulanabilen problemler. Örneğin: Seyyar satıcı, devre tasarımı. NP problemleri bir çeşit bulmaca gibidir (sudoku gibi) Sorun için doğru bir çözüm verildiğinde, çözümümüzü çok hızlı bir şekilde kontrol edebiliriz, ancak sorunu çözmeye çalışırsak, bu sonsuza kadar sürebilir.

Şimdi, P vs NP aslında çözümü hızlı bir şekilde doğru olarak kontrol edilebilecek bir sorunun olup olmadığını soruyor, o zaman bunu çözmek için her zaman hızlı bir yol var. Bu yüzden matematiksel terimlerle yazma: NP P'nin bir alt kümesi midir, değil mi?

Şimdi NP tamamlamaya geri dönüyor: bunlar NP sorunlarının gerçekten zorlu sorunları. Bu nedenle, NP tamamlamayı çözmenin daha hızlı bir yolu varsa, NP tamamlanma P olur ve NP sorunları P'ye dönüşür.

NP zor: polinom zamanında kontrol edilemeyen problemler çok zor. Örneğin, satrançta en iyi hamleyi seçmek bunlardan biridir.

Bir şey belirsiz kalırsa, bu videoyu izlemeyi deneyin: https://www.youtube.com/watch?v=YX40hbAHx3s

Umarım bu bulanık bir kontur sağlar.

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.