NP-komple problemler için farklı yaklaşım karmaşıklıklarını görmemizin bir nedeni, NP-komple için gerekli koşulların, bir problemin karmaşıklığının çok kaba taneli bir ölçüsünü oluşturmasıdır. Bir problemin temel tanımını biliyor olabilirsiniz tamamlayıcı olması:Π
- Π , NP cinsinden ve
- Her sorun için np, biz bir örnek açabilirsiniz ait örneğidir içine arasında öyle ki polinom zamanda bir evet-örneğidir ancak ve ancak bir evet-örneğidir .ΞxΞyΠyΠxΞ
Koşul 2'yi göz önünde bulundurun: tüm gerekli olan, alıp "tek-bit" evet / hayır cevabını koruyan çevirebiliriz . Örneğin, şahitlerin göreceli büyüklüğü ile ilgili evet veya hayır (yani, optimizasyon bağlamındaki çözümün boyutu) ile ilgili hiçbir koşul yoktur. Bu nedenle, kullanılan tek ölçü, çözümün boyutu üzerinde çok zayıf bir koşul veren girdinin toplam büyüklüğüdür. Oldukça "kolay" olduğunu Yani bir çevirmek bir içine .xyΞΠ
Bazı basit algoritmaların karmaşıklığına bakarak çeşitli NP-komple problemlerdeki farkı görebiliriz. -Renklendirme, kaba bir kuvvetine sahiptir (burada , girdi büyüklüğüdür). İçin -Dominating Set, bir ham kuvvet yaklaşımıdır almak . Bunlar, özünde sahip olduğumuz en iyi kesin algoritmalardır. -Vertex Cover, ancak çok basit bir algoritmasına sahiptir (bir kenar seçin, hangi uç noktanın ekleneceği, tüm kaplamayı işaretleyin, kenarları işaretlenene veya isabet edene kadar devam edin) bütçenizkO(kn)nkO(nk)kO(2knc)kve bactrack). Polinom-zamanında çok-bir azaltma altında (Karp azaltmaları, yani yukarıda 2. durumda ne yaptığımız) bu sorunlar eşdeğerdir.
Karmaşıklığa biraz daha hassas araçlarla yaklaşmaya başladığımızda (yaklaşıklık karmaşıklığı, parametreli karmaşıklık, aklıma gelmeyen diğerleri), kullandığımız azaltmalar çözümün yapısına daha katı veya daha duyarlı hale geliyor ve farklılıklar ortaya çıkmaya başlar; -Vertex Cover (Yuval'ın bahsettiği gibi) basit bir 2-yaklaşıma sahiptir (ancak bazı karmaşıklık sınıfları çökmediği sürece bir FPTAS yoktur), -Ayarın Seti -aproximasyon algoritmasına sahiptir (ancak -bazı ) ve yaklaşım, -Coloring'in ileri düz versiyonu için hiç bir anlam ifade etmiyor .kk(1+logn)( clogn )c > 0k