Tanımı nedir


247

Bilgisayar ve karmaşıklıkla ilgili bir kursa gidiyorum ve bu terimlerin ne anlama geldiğini anlayamıyorum.

Tek bildiğim, NP'in NP zorluğunun bir alt kümesi olan NP tamamının bir alt kümesi olduğu, ancak gerçekte ne anlama geldiklerini bilmiyorum. Açıklamalar hala biraz fazla yüksek olduğu için Wikipedia da pek yardımcı değil.


6
Resmi tanımı olan resmi bir nesnedir. Eksik olan en basit açıklamaları buldum. Tanımları anlamada sorun yaşıyorsanız, karmaşıklık teorisi hakkında bir sınıfta ne yapıyorsunuz? (Ciddi soru.) Bu arada, Wikipedia, TCS için çok iyi bir referans değil.
Raphael

17
Bildiğiniz her şey doğru değil: NPC (NP tamamlandı) tam tersine bir NP alt kümesidir. Tamlık her zaman problemin tam olduğu sınıfın bir parçası olmayı içerir. Ayrıca NP, NP'nin zor bir alt kümesi değildir, çünkü NP'deki her problem zor değildir.
frafl

5
@frafl: "NP'deki her sorun zor değil" - hala gösterilmeye devam ediyor.
Raphael

2
@Raphael: Bu aslında kullandığınız azaltma türüne bağlıdır. Polinom zamanının bir çok azalma olduğunu düşünmüştüm, . NPC
frafl

Yanıtlar:


364

Bence Wikipedia makaleleri , ve vs. oldukça iyi. Hala burada diyeceğim şey: Bölüm I , Bölüm IIPNPPNP

[İsterseniz atlayabileceğiniz bazı teknik ayrıntıları tartışmak için parantez içindeki açıklamaları kullanacağım.]


Bölüm I

Karar Sorunları

Çeşitli hesaplama problemleri vardır. Bununla birlikte, hesaplamalı karmaşıklık teorisi dersine giriş olarak karar sorununa odaklanmak daha kolaydır , yani cevabın YES veya NO olduğu problemler. Başka hesaplama problemleri de vardır, ancak çoğu zaman onlar hakkındaki sorular karar problemleriyle ilgili benzer sorulara indirgenebilir. Üstelik karar sorunları çok basit. Bu nedenle, hesaplamalı karmaşıklık teorisi dersine giriş olarak, dikkatimizi karar problemlerinin incelenmesine odaklıyoruz.

Bir karar problemini, YES'e cevap veren girdiler alt kümesi ile belirleyebiliriz. Bu notasyonu kolaylaştırır ve bize yazmak için izin veren yerine ve yerine .xQQ(x)=YESxQQ(x)=NO

Başka bir bakış açısı, bir kümedeki üyelik sorgularından bahsettiğimizdir . İşte bir örnek:

Karar Sorunu:

Giriş: Doğal sayı , Soru: çift ​​sayı mı?x
x

Üyelik Sorunu:

Girdi: Bir doğal sayı , Soru: de ?x
xEven={0,2,4,6,}

Girdiyi kabul eden bir girdideki YES cevabını ve girişi reddeden bir girdideki NO cevabını ifade ederiz .

Karar problemleri için algoritmalara bakacağız ve bu algoritmaların hesaplanabilir kaynakları kullanımında ne kadar etkili olduğunu tartışacağız . Bir algoritma ve hesaplamalı kaynaklar ile ne demek istediğimizi resmen tanımlamak yerine C gibi bir dilde programlama konusundaki sezginize güveneceğim.

[Notlar: 1. Her şeyi resmi ve kesin olarak yapmak isteseydik, bir algoritma ile ne demek istediğimizi tam olarak tanımlamak için standart Turing makine modeli gibi bir hesaplama modelini düzeltmemiz gerekir . 2. Modelin doğrudan kullanamayacağı nesneler üzerindeki hesaplama hakkında konuşmak istiyorsak, bunları makine modelinin kullanabileceği nesneler olarak kodlamamız gerekir, örneğin Turing makineleri kullanıyorsak, doğal sayılar ve grafikler gibi nesneleri kodlamamız gerekir İkili dizeler olarak.


P = Çözüm Bulma İçin Verimli Algoritmalar ile İlgili Sorunlar

Verimli algoritmaların , en fazla sayıda polinom hesaplama kaynağı kullanan algoritmalar anlamına geldiğini varsayalım . Önemsediğimiz ana kaynak , algoritmaların giriş büyüklüğüne göre en kötü çalışma süresi , yani bir algoritmanın büyüklüğündeki bir girdide aldığı temel adımların sayısıdır . Bir giriş büyüklüğü olan o alırsa mağaza bilgisayar belleğinin -bits biz yazmak bu durumda, . Dolayısıyla , verimli algoritmalar ile polinomun en kötü durumlu çalışma süresine sahip olan algoritmaları kastediyoruz .nxnnx|x|=n

Varsayım polinom zamanlı algoritmalar verimli algoritmaların sezgisel kavramını yakalamak olarak bilinir Cobham'ın tezi . Bu noktada in etkin bir şekilde çözülebilen problemler için doğru model olup olmadığını ve in pratikte ve ilgili konularda verimli bir şekilde hesaplanabilecekleri yakalayıp yakalamadığını tartışmayacağım. Şimdilik bu varsayımı yapmak için iyi nedenler var, bu yüzden amacımızın böyle olduğunu varsayıyoruz. Eğer Cobham'ın tezini kabul etmezseniz, aşağıda yazdıklarımı yanlış yapmaz, kaybedeceğimiz tek şey sezgidir.PPpratikte verimli hesaplama hakkında. Karmaşıklık teorisi hakkında bilgi edinmeye başlayan biri için yararlı bir varsayım olduğunu düşünüyorum.

P verimli bir şekilde çözülebilen
karar problemleri , yani polinom-zaman algoritmaları olan karar problemleri sınıfıdır .

Daha resmi olarak, kararın olduğunu iffQP

etkili bir algoritma var olan şekilde, tüm girişler için ,A
x

  • Eğer sonra , Q(x)=YESA(x)=YES
  • Eğer sonra .Q(x)=NOA(x)=NO

Basitçe yazabilirimA(x)=Q(x) yazabilirim, ancak bu şekilde yazarım, böyleceNP tanımını karşılaştırabiliriz.


NP =Kanıtları / Sertifikaları / TanıklarıDoğrulamakiçin Verimli Algoritmalarla İlgili Sorunlar

Bazen bir karar sorununun cevabını bulmanın etkili bir yolunu bilmiyoruz, ancak birisi bize cevabı söyler ve bize bir kanıt verirse, geçerli bir kanıt olup olmadığını görmek için kanıtı kontrol ederek yanıtın doğru olduğunu etkili bir şekilde doğrulayabiliriz . . Karmaşıklık sınıfı N P'nin ardındaki fikir budur .NP

Eğer kanıt çok uzunsa, gerçekten faydalı olmazsa, geçerli olup olmadığını kontrol etmek için sadece prova okumasını okumak çok uzun sürebilir. Doğrulama için gereken sürenin, verilen kanıtın boyutunda değil, orijinal girdi boyutunda makul olmasını istiyoruz! Bu, gerçekten istediğimiz şey isteğe bağlı uzun ispatlar değil, kısa ispatlar demektir. Doğrulayıcının çalışma süresi orijinal girişin boyutunda polinom ise, ispatın yalnızca polinom kısmını okuyabilir. Yani kısaca , polinom büyüklüğünü kastediyoruz .

Ne zaman "kanıt" kelimesini ne zaman kullanırsam "kısa kanıt" demek istiyorum.

Verimli bir şekilde nasıl çözeceğimizi bilmediğimiz ancak ispatları etkin bir şekilde doğrulayabildiğimiz bir problemin örneği :

Bölüm
Girdisi: sonlu bir S doğal sayı kümesi ,
Soru: SA ve B ( AB=S ve AB= ) iki grubuna bölünmesi mümkün olur
, böylece A sayıların toplamı eşit olur B sayının toplamı ( xAx=xBx )?

Size S verir ve size toplamları eşit olacak şekilde iki gruba ayırabilir miyiz diye sorarsam, çözmek için etkili bir algoritma bilmiyorsunuzdur. Muhtemelen, toplamların eşit olduğu bir bölüm bulana veya tüm olası bölümleri deneyene ve hiçbiri çalışmamış olana dek sayıları iki kümeye ayırmanın olası tüm yollarını deneyeceksiniz. Bunlardan herhangi biri işe yaradıysa, YES, aksi takdirde HAYIR diyeceksiniz.

Ancak katlanarak birçok olası bölüm var, bu yüzden çok zaman alacaktır. Ancak size iki A ve B verirseniz, toplamların eşit olup olmadığını ve A ve BS bir bölümü olup olmadığını kolayca kontrol edebilirsiniz . Toplamları verimli bir şekilde hesaplayabileceğimizi unutmayın.

Burada size verdiğim A ve B çifti, YES cevabı için bir kanıt. Talebimi verimli bir şekilde kanıtlarıma bakarak ve geçerli bir kanıt olup olmadığını kontrol ederek doğrulayabilirsiniz . Cevabınız EVET ise, geçerli bir kanıt var ve ben size verebilirim ve siz de bunu doğrulayabilirsiniz. Cevabınız HAYIR ise geçerli bir kanıt yoktur. Öyleyse size verdiğim her şeyi kontrol edip geçerli bir kanıt olmadığını görebilirsiniz. Cevabınız EVET olduğuna dair geçersiz bir kanıt ile sizi kandıramam. Eğer kanıt çok büyükse, bunu doğrulamak çok zaman alacaktır, bunun olmasını istemeyiz, bu yüzden sadece etkili kanıtları, yani polinom büyüklüğüne sahip kanıtları önemsiyoruz .

Bazen insanlar "ispat" yerine " sertifika " veya " tanık " kullanırlar.

Not Size verilen x girişinin cevabı hakkında yeterli bilgi veriyorum, böylece cevabı verimli bir şekilde bulabilir ve doğrulayabilirsiniz. Örneğin, bölüm örneğimizde size cevabı söylemiyorum, sadece size bir bölüm veriyorum ve bunun geçerli olup olmadığını kontrol edebilirsiniz. Cevabı kendiniz doğrulamanız gerektiğine dikkat edin, söylediklerim konusunda bana güvenemezsiniz. Üstelik yalnızca doğruluğunu kontrol edebilirsiniz benim kanıtı. Kanıtım geçerliyse, cevabın EVET olduğu anlamına gelir. Benim kanıtı geçersiz Ama eğer yok değil cevabı HAYIR demek. Bir kanıtın geçersiz olduğunu, geçerli bir kanıt bulunmadığını gördünüz. EVET için kanıtlardan bahsediyoruz. NO için ispatlardan bahsetmiyoruz.

Bir örneğe bakalım: A={2,4} ve B={1,5} , S={1,2,4,5} in eşit toplamlarla iki kümeye bölünebileceğinin bir kanıtıdır . Sadece A sayıları ve B sayıları toplamamız ve sonuçların eşit olup olmadığına bakmamız ve A , BS bölümü olup olmadığını kontrol etmemiz gerekir .

Size A={2,5} ve B={1,4} verdiysem , kanıtımın geçersiz olup olmadığını kontrol edecek ve göreceksiniz. Cevabın HAYIR olduğu anlamına gelmez, sadece bu özel kanıtın geçersiz olduğu anlamına gelir. Buradaki göreviniz cevabı bulmak değil , yalnızca verdiğiniz kanıtın geçerli olup olmadığını kontrol etmek.

Bir sınavda bir soru çözen bir öğrenci ve cevabın doğru olup olmadığını kontrol eden bir profesör gibidir. :) (maalesef öğrenciler cevaplarının doğruluğunu doğrulamak için yeterli bilgi vermezler ve profesörler kısmi cevaplarının geri kalanını tahmin etmeli ve kısmi cevaplar için öğrencilere ne kadar puan vermeleri gerektiğine karar vermelidirler, aslında oldukça zor görev).

Şaşırtıcı olan, aynı durumun çözmek istediğimiz diğer birçok doğal sorun için de geçerli olmasıdır: verilen kısa bir kanıtın geçerli olup olmadığını etkin bir şekilde doğrulayabiliriz , ancak cevabı bulmanın etkili bir yolunu bilmiyoruz . Bu karmaşıklık sınıf niçin motivasyon olduğunu NP ise son derece ilginç (bu tanımlamadan için orjinal hareket olmamasına rağmen). Ne yaparsanız yapın (sadece CS'de değil, matematikte, biyolojide, fizikte, kimyada, ekonomide, yönetimde, sosyolojide, işletmede ...) bu sınıfa giren bilgisayar problemleriyle karşılaşırsınız. İçinde haline gelmek kaç problem bir fikir edinmek için NP check-out NP optimizasyon problemlerinin bir özeti . Gerçekten de, NP olmayan doğal problemleri bulmakta zorlanacaksınız . Bu sadece şaşırtıcı.

NP , verimli doğrulayıcıları olan bir problem sınıfıdır, yani
verilen bir çözümün doğru olup olmadığını kontrol edebilen bir polinom zaman algoritması vardır.

Daha teorik bir karar problemi ki Q olduğu NP IFF

Doğrulayıcı olarak adlandırılan verimli bir algoritma V vardır, öyle ki
tüm girdiler için x ,

  • Q(x)=YESyV(x,y)=YES
  • Q(x)=NOyV(x,y)=NO

Doğrulama NO ise, herhangi bir kanıt kabul etmiyorsa bir doğrulayıcının sesli olduğunu söylüyoruz . Başka bir deyişle, eğer cevap gerçekten HAYIR ise, bir ses doğrulayıcısının bir kanıtı kabul etmesi için kandırılamaz. Yanlış pozitif yok.

Benzer şekilde, cevap YES olduğunda en az bir kanıt kabul ederse doğrulayıcının tamamlandığını söylüyoruz . Başka bir deyişle, eksiksiz bir doğrulayıcı cevabın EVET olduğuna ikna edilebilir.

Terminoloji mantık ve ispat sistemlerinden gelir . Herhangi bir yanlış ifadeyi kanıtlamak için ses geçirmez bir sistem kullanamayız. Tüm doğru beyanları kanıtlamak için eksiksiz bir kontrol sistemi kullanabiliriz.

Doğrulayıcı V iki giriş alır,

  • x :Q için orijinal girişve
  • y :Q(x)=YES için önerilen bir kanıt.

VxyyyVxVxyyx

QNP

NPVPNPNP


PNP

PNPP=NP

PNP

Bunun nedeni, ihtiyacımızın olmadığı, doğrulayıcının cevabı kendi başına hesaplayabileceği, cevabın herhangi bir yardım almadan EVET veya HAYIR olup olmadığına karar verebilmesidir. Cevabınız HAYIR ise, kanıt bulunmaması gerektiğini biliyoruz ve doğrulayıcımız önerilen her kanıtı reddedecektir. Cevabınız EVET ise, bir kanıt olmalı ve aslında sadece bir kanıt olarak kabul edeceğiz.

[Doğrulayıcımızın yalnızca bazılarını kabul etmesini sağlayabilirdik, bu doğrulayıcıdır, doğrulayıcımız sorunun doğru olduğunu doğrulayan en az bir kanıtı kabul ettiği sürece.

İşte bir örnek:


n+1a1,,ans
Σi=1nai=s

Ps

NPVP

NPPPNP


için Brute-Force / Exosisive Search AlgoritmalarıNPNPExpTime

NPNP

Bölüm örneğimizde, olası tüm bölümleri dener ve toplamların herhangi birinde eşit olup olmadığını kontrol ederiz.

m2m

NPNPExpTimeNPPSpace

NPPNPNP

NP=PNP

NPNP

NPNPNPPNP

NPNP


Düşük Sınırların Kanıtlanması Zor Görünüyor

NP

Ne yazık ki, düşük sınırları kanıtlama görevi çok zor. Biz olamaz hatta bu sorunlar daha fazlasını gerektiren kanıtlamak lineer zaman ! Üstel zaman gerektiren yalnız bırak.

Doğrusal zaman alt sınırlarının kanıtlanması oldukça kolaydır: algoritmanın sonuçta girişi okuması gerekir. Süper lineer alt sınırları kanıtlamak tamamen farklı bir hikaye. Süper lineer alt sınırları, düşündüğümüz algoritmalar hakkında daha fazla kısıtlamayla kanıtlayabiliriz, örneğin karşılaştırma kullanarak algoritmaları sıralama, ancak bu kısıtlamalar olmadan alt sınırları tanımıyoruz.

Bir problemin üst sınırını kanıtlamak için sadece yeterince iyi bir algoritma tasarlamamız gerekir. Bu tür bir algoritmanın ortaya çıkması için genellikle bilgiye, yaratıcı düşünceye ve hatta ustalığa ihtiyaç duyar.

Bununla birlikte, görev daha düşük bir sınır kanıtlamaya kıyasla oldukça basittir. İyi bir algoritma olmadığını göstermeliyiz . Biz değil kalmamasıdır biliyor şu anda herhangi yeterince iyi algoritmalar, ama bu hiç iyi algoritmaları orada yok olduğunu, hiç kimse iyi bir algoritma ile gelecek . Daha önce yapmadıysanız, bir dakika için düşünün, böyle bir imkansızlık sonucunu nasıl gösterebiliriz ?

1=0

Bir sorun olduğunu göstermek için, yani bir alt sınır kanıtlamak için gereklidir çözmek için belli sürenin, bunu kanıtlamak için var demektir herhangiNPörneğin açgözlü ve uzantıları gibi problemler işe yaramaz ve dinamik programlama algoritmaları ile ilgili bazı işler vardır ve doğrusal programlamanın belirli yolları üzerinde bazı çalışmalar vardır. Ancak bunlar, bildiğimiz zekice fikirleri dışlamak için bile yakın değil (ilgileniyorsanız sınırlı hesaplama modellerinde daha düşük sınırları arayın).


Engeller: Alt Sınır Are kanıtlayın zor

Öte yandan , düşük sınırlı bir kanıtın böyle olamayacağını söyleyen engeller denilen matematiksel sonuçlara sahibiz ve böyle ve neredeyse daha düşük sınırları kanıtlamak için kullandığımız tüm teknikleri kapsar! Aslında birçok araştırmacı Alexander Razbarov ve Steven Rudich'in doğal kanıtlar engeli sonucundan sonra alt sınırlar üzerinde çalışmaktan vazgeçti . Belirli türden alt sınır kanıtların varlığının kriptografik yalancı sayı üretici ve diğer birçok kriptografik araçların güvensizliği anlamına geldiği ortaya çıktı.

Neredeyse son yıllarda, temel olarak Ryan Williams'ın bariyer sonuçlarını zekice engelleyebilen bir ilerleme kaydettiği için, şu ana kadar elde edilen sonuçlar çok zayıf hesaplama modelleri için ve genel polinom-zaman algoritmalarını dışlamaktan oldukça uzak. .

NP

[Diğer yandan, Ryan Williams'ın çalışması alt sınırları kanıtlamak ve üst sınırları kanıtlamak arasında yakın bağlantılar olduğunu göstermektedir. İlgileniyorsanız ICM 2014'teki konuşmasını görün .]


Azaltmalar: Başka Bir Sorunu Alt Rutin / Oracle / Kara Kutu Olarak Kullanarak Sorunu Çözme

Azaltma fikri çok basittir: bir sorunu çözmek için başka bir problem için bir algoritma kullanın.

nSumSum

Sorun:

nx1,,xn
i=1nxi

Azaltma Algoritması:

  1. s=0
  2. i1n
    s=Sum(s,xi)
  3. dönüşs

SumSumSumSum

Esasen bu, azaltmanın ne olduğudur: bir problem için algoritmaya sahip olduğumuzu ve başka bir sorunu çözmek için bir kehanet olarak kullandığımızı varsayalım. Burada verimli olan, kehanetin bir süre içinde cevap verdiğini varsaymak anlamına gelir; yani, kehanetin her uygulamasını tek bir adım olarak sayarız.

Oracle büyük cevabı dönerse okumamız gerekiyor ve bu biraz zaman alabilir, bu yüzden gereken süreyi saymak gerekir bize torpil bize verdiği cevabı okumak için. Benzer şekilde, soruyu kehanetten yazmak / sormak için. Fakat kehanet anında çalışır, yani kehaneden soru sorduğumuzda, kehanet bizim için cevabı tek bir zaman diliminde yazar. Oracle'ın yaptığı tüm işler tek bir adım olarak sayılır, ancak bu bize soruyu yazmamızın ve cevabı okumamız için gereken süreyi hariç tutar.

Oracle'ın nasıl çalıştığını umursamıyoruz, ancak yalnızca geri döndürdüğü cevaplarla ilgili bir sadeleştirme yapabilir ve bunun için bir algoritma yerine sorunun kendisi olduğunu düşünebiliriz. Başka bir deyişle, kahinenin bir algoritma olmaması umrunda değil, oracles'ın cevapları ile nasıl ortaya çıkacağı umrumda değil.

Sum

Bir kehanetten birden fazla soru sorabiliriz ve bu soruların önceden belirlenmiş olması gerekmez: bir soru sorabiliriz ve kehanetin geri döndürdüğü cevabına dayanarak bazı hesaplamaları kendimiz yaparız ve sonra elde ettiğimiz cevaba dayanarak başka bir soru sorabiliriz. önceki soru.

Buna bakmanın başka bir yolu da etkileşimli bir hesaplama olarak düşünmektir . İnteraktif hesaplamalar başlı başına büyük bir konudur, bu yüzden buraya girmeyeceğim, ancak bu indirgeme perspektifinden bahsetmek faydalı olabilir.

AOAO

Yukarıda tartıştığımız azaltma, en genel azaltma şeklidir ve kara kutu azaltma (aka oracle azaltma , Turing azaltma ) olarak bilinir .

Daha resmi:

QOQTO
Ax
Q(x)=AO(x)

AOQ

AQTPOT

Bununla birlikte, indirgeme algoritmasının kahinle etkileşime girme şekline bazı kısıtlamalar koymak isteyebiliriz. Üzerinde çalışılan birkaç kısıtlama var, ancak en kullanışlı kısıtlama, bir -çok azaltma ( eşleme azaltma ).

xy

Daha resmi,

QOQmO
Ax
Q(x)=O(A(x))

QmPO

NPANPBANP

PNPNP


Gönderi çok uzadı ve cevap sınırını aşıyor (30000 karakter). Cevap Bölüm II'de devam edeceğim .



4
@Kaveh Bu harika bir mesaj, teşekkürler. Sınıfta bu bölümden önce karar verilebilirlik yaptım ancak kararsızlığı kanıtlama anlayışımda biraz geride kaldım. Bunun karmaşıklığı olan anlayış eksikliği ile bir ilgisi olup olmadığını bilmiyorum.
ajan154

5
Giriş seviyesinden (Sipser dahil) daha gelişmiş birçok karmaşıklık kitabı okudum. Soyut matematik problemim yok (örn. Lang Cebirini okuyabilirim). Bu yanıt NP ve P'yi açıklamak için en iyisidir. Parlatmak için daha fazla zaman harcamanızı ve ders notlarını almanızı öneririm. Birçok insana yardım edebilir.
scaaahu

@scaaahu, nazik yorumunuz ve önerileriniz için teşekkür ederim. Bunu yakında tamamlayıp cilalamayı düşünüyorum.
Kaveh

10
Bu cevap referans olarak cevaplandırılmalıdır. Gelecekteki tüm temel P / NP tipi sorular öncelikle buna yönlendirilmelidir. Çok sıvı açıklaması!
Paresh

179

Bölüm II

Bölüm 1'den devam etti .

Birincisi, bir cevapta izin verilen maksimum harf sayısını (30000) aştı, bu yüzden ikiye böldüm.

NP NP

PNPNPNP

Şimdi bazen bir sorunun çözülmesinin zor olduğunu söylemek istiyoruz . Ancak yukarıda belirttiğimiz gibi, bu amaç için daha düşük sınırları kullanamayız: teorik olarak onlar tam olarak ispatlamak istediklerimizdir, ancak pratikte daha düşük sınırları kanıtlamakta çok başarılı olamadık ve genel olarak dediğimiz gibi ispatlamak zor yukarıdaki. Bir sorunun çözülmesinin zor olduğunu söylemenin bir yolu var mı ?

NPNP

Göreceli Zorluk Olarak Azalmalar

ABAB

ABAB

MBABMBANBMBNMNA

P

NPNP

NPNP

NPNP
NPNP

ANP

ANP
NPBBABmPA

NPNPNPNP

NPNP

(Endüstride pratik kullanım için birçok insanın kendi algoritmalarını optimize etmek için çalıştıkları diğer iki problem Tamsayılı Programlama ve Kısıt Memnuniyet Sorunu'dur . Sorununuza ve bunlardan biri için optimize edilmiş algoritmalar ile ilgilendiğiniz durumlara bağlı olarak bunlardan daha iyi performans gösterebileceklerinden daha iyi performans gösterebilir. diğerleri.)

NP
NP

NP

NPNP

NPNPNPNPNPNP zor (yani herhangi bir polinom zaman algoritması yok).

Şimdi sorular:

  • NP

  • Bunlardan herhangi birini tanıyor muyuz?

NPNPNPNP

NPExpTimeNPNP

p¬p

NPNP

ANPABBNPNPAABNPB

NPNPNP

NPNP

SATNPSATSubsetSumNPSATSubsetSum

NP

NP

Not: Aşağıdaki bölüm ilk okumada biraz teknik olabilir.

NP


Vxtk
YESkVxtNO

UniVerNP

VNPxVxUniVer
tkVxVx

tttk

NPUniVerNP


MxMt
YESMxYEStNOYESt

CPt

Interpreter

UniVerNPMxtkcckInterpreterMYESxct

SATNP

UniVerNPUniVerNP

NPSAT

SAT


φ
YESφNO

SATNP


Yazılmak ...

NP

NP

NP

PNP

Sıradaki ne? Buradan Nereye Gidilir?


6
Keşke birden fazla kez oy kullanabilseydim, cevaplamak için çok çaba harcadığınız için teşekkür ederim!
Fingolfin

2
Vay, harika makale! Ayrıca duyurulmuş kısımları da bekliyorum, özellikle de "NP-komple bir problemi çözmen gerekiyorsa ne yapmalı?"
Tobias Hermann

5
@ xci13 Yapabilirsiniz! İlk kısmı oylayın;)
Vince Emigh

4
Her iki gönderinizi de oylamak için burada bir hesap oluşturdum!
ghosts_in_the_code

6
@Kaveh Bu harika yazılmış makaleyi bitirmek için herhangi bir plan var mı?
Gab

26

Yararlı cevaplardan daha fazlası, Michael Sipser tarafından " Hesaplamanın Ötesinde: P-NP Sorunu " nu izlemenizi şiddetle tavsiye ederim . Bence bu video bilgisayar bilimlerinde önde gelen öğretim videolarından biri olarak arşivlenmeli.

Keyfini çıkarın!


İlginçtir ki, ders kitabım onun tarafından. Korkunç bir kitap değil, ancak bazı arzulanan bırakır.
ajan154

8

Cevabımı Stack Overflow'ta benzer bir soruya kopyalamak:

P. NP'yi ve bunları tekniklere girmeden açıklamanın en kolay yolu, "kelime problemlerini" "çoktan seçmeli problemler" ile karşılaştırmaktır.

Bir "kelime problemini" çözmeye çalıştığınızda çözümü sıfırdan bulmanız gerekir. Bir "çoktan seçmeli problemleri" çözmeye çalıştığınızda bir seçeneğiniz vardır: ya bir "kelime problemi" gibi çözün, ya da size verilen cevapların her birini takmaya çalışın ve uygun olan aday cevabını seçin.

Genellikle "çoktan seçmeli bir problem" in karşılık gelen "sözcük probleminden" daha kolay olduğu görülür: aday cevapların değiştirilmesi ve uygun olup olmadıklarının kontrol edilmesi sıfırdan doğru cevabı bulmaktan çok 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 problemler var mı?" Yani, verilen bir cevabın geçerliliğini doğrulamanın kolay olduğu ama sıfırdan cevabı bulmanın zor olduğu problemler var mı?

Artık NP'nin ne olduğunu sezgisel olarak anladığımızda, sezgimize meydan okumalıyız. Bir bakıma hepsinden daha zor olan “çoktan seçmeli problemler” olduğu ortaya çıkıyor: eğer biri, hepsinden daha zor olanlardan birine bir çözüm bulursa, birinden ALL'ye bir çözüm bulabiliriz. NP problemleri! Cook, 40 yıl önce bunu keşfettiğinde, tam bir sürpriz oldu. Bu "hepsinden zor" problemi NP zor olarak bilinir. Bunlardan birine bir "kelime problemi çözümü" bulursanız, her "kolay çoktan seçmeli problem" e otomatik olarak bir "kelime problemi çözümü" bulacaksınız!

Son olarak, NP tamamlama problemleri aynı anda NP ve NP zor olan problemlerdir. Analojimizden sonra, eşzamanlı olarak "çoktan seçmeli problemler kadar kolay" ve "hepsi en zoru kelime problemleri" şeklindedirler.


Artık NP'nin ne olduğunu sezgisel olarak anladığımızda, sezgimize meydan okumalıyız. "Çoktan seçmeli problemler" olduğu ortaya çıktı - orada "kelime problemleri" mi kastediyorsunuz? Bunu düşünüyorum, çünkü tüm NP problemleri tanım olarak "çoktan seçmeli" olarak kolaydır.
Dmitry Grigoryev

Çizgi ile Bazı anlamda, en zor hepsini vardır, "çoktan seçmeli sorunları" olduğunu çıkıyor demek O bir anlamda, en zor hepsini olan NP sorunlar olduğunu çıkıyor . Bu NP problemleri tanımı gereği kolay çoktan seçmeli problemlerdir , fakat aynı zamanda kelime problemi olarak da en güçleridir . Standart örnek SAT3'tür: çoktan seçmeli bir problem kadar kolaydır, ancak bir kelime problemi kadar zordur.
Michael

7

Bunların en basiti P, polinom zamanında çözülebilen sorunlar buraya ait.

Sonra NP gelir. Belirleyici olmayan bir Turing makinesinde polinom zamanında çözülebilen problemler buraya aittir.

Sertlik ve eksiksizlik azaltmalarla ilgilidir. Bir sorun, A, sabit bir sorun bir ise C her sorunun A'ya da azaltır bir C sınıfı için NP, sabit ya da NP-zor NP her sorunun A'ya azaltıyorsa,

Son olarak, eğer C sınıfındaysa ve C için zorsa C sınıfı için bir problem tamamlanır . Sizin durumunuzda, A problemi NP için tamamlanır veya NP tamamlanır, eğer NP'deki her problem A'ya düşerse ve A NP'de olur. .

NP açıklamasına ek olarak, eğer (sadece deterministik) polinom zamanında bir çözüm doğrulanabiliyorsa sorun NP'de olur. Bildiğiniz tüm NP-tamam problemlerini, SAT, CLIQUE, SUBSET SUM, VERTEX COVER, vb .'yi göz önünde bulundurun. Bunlar, değişkenler için doğruluk atamaları, tam bir altyazı, sayı alt kümeleri ve tüm kenarlara hakim olan köşe kümeleridir.


6

Temel hususlar için P ve NP ve Hesaplamalı Karmaşıklık Hayvanat Bahçesi videosunun anlaşılması çok daha kolay görünüyor.

Sorunun gerçekten büyük bir sürümü olan bir bilgisayar için :

P problemleri

Çözülmesi kolay (Rubix küp)

NP problemleri

zor - ama cevapları kontrol etmek kolaydır (sudoku)

Belki de bunların hepsi gerçekten P problemleridir ancak bunu bilmiyoruz… P vs. NP .

NP-tam

Çok sayıda NP problemi aynı kaynağa kadar kaynamaktadır (sudoku listeye yeni girmiştir).

EXP sorunları

gerçekten zor (satrançta en iyi sıradaki hamle)

NP zor problemler

Düzenleme: NP-hard videoda çok iyi açıklanmadı (hepsi pembe bitler), Wikipedia'nın NP-hard Euler diyagramı bu konuda daha açık.

Video özeti

Blackboard Euler P, NP, NP tamamlandı, EXP ve NP zor diyagramları

Vikipedi NP-sert Euler diyagramı

SVG Euler P, NP, NP tamamlandı ve NP zor diyagramları


0

P , NP , NP tamam ve NP zor , problemleri çözmek için algoritmik karmaşıklığa göre sınıflandırarak karmaşıklık sınıflarıdır. Kısacası, üç özelliğe dayanıyorlar:

karmaşıklık sınıfları tablosu

Polinom süresinde çözülebilir: Polinom bir miktarda hesaplama süresi kullanarak, deterministik bir Turing makinesi (DTM) tarafından çözülebilen karar problemlerini tanımlar, yani çalışma süresi algoritma için girdi boyutundaki bir polinom ifadesiyle üst sınırlandırılmıştır. Big-O notasyonu kullanılarak bu zamanın karmaşıklığı, O(n ^ k)n'nin girdi büyüklüğü ve ka sabit katsayısı olduğu tanımlanır .

Polinom zamanında doğrulanabilir çözüm: Belirli bir çözümün, polinom miktarındaki hesaplama süresi kullanılarak DTM tarafından doğrulanabileceği karar problemlerini, doğru çözümü elde etmek için daha fazla zaman gerektirse bile tanımlar.

Polinom zamanındaki herhangi bir NP problemini azaltır : Polinom zaman çevirisi adımından sonra herhangi bir NP problemini çözmek için algoritmaları çözmek için kullanılabilecek karar problemlerini tanımlar.


Kısa bir süre önce, NP sorununu NP zorlu bir soruna indirgemek için bir kod gösterimi de dahil olmak üzere daha fazla ayrıntı sağlayan bir makale yazdım: Karmaşıklık sınıfları

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.