Anladığım kadarıyla, iki soru soruyorsunuz: (1) örneğin saf kaba kuvvetten daha akıllı SAT algoritmaları var ve (2) NP-tam problemini çözerken sadece EVET / HAYIR yanıtı veren algoritmalar var aslında olmadan bulma çözümü. Her iki soruyu da bu sırayla cevaplayacağım.
(1) Bir problemi kaba kuvvet olmadan, yani tüm olasılıkları saf bir şekilde denemeden çözmek mükemmel bir şekilde mümkündür. Örneğin, modern tam SAT çözücüler , belirli (kısmi) ödevleri çıkaran veya kanıtlayan akıllı bir algoritma uygulayabilirler, bu yüzden o kısmı bile incelemezler.
Daha genel olarak, NP zor problemleri bile çoğu zaman algoritmayı kaba kuvvetten daha hızlı tasarlamamıza izin veren bir çeşit algoritmik dayanak sergiler. Bu araştırmanın alanı kesin (üstel) algoritmalardır . Bu algoritmalar üstel zaman alır, ancak saf algoritmalardan daha hızlıdır. Örneğin, TSP'yi kabaca çözebilirsiniz ! zaman, burada n ziyaret edilecek şehir sayısıdır. Bu yöntem n'nin orta değerlerine bile ölçeklenmez , ancak Held & Karp nedeniyle klasik bir dinamik programlama O ( 2 n n 2 ) zaman algoritması vardır . Genel teknikler için örneğin bkz şube ve bağlı .n !nnO ( 2nn2)
(2) Açık bir sertifika olmadan YES / NO çıktısını veren NP-tam problemleri için "oracle algoritmaları" vardır. Örneğin, -yolu problemini düşünün :k
( -Path sorunu)k bir grafiktir Verilen ve bir tam sayı k , basit bir yolu yoktur G ile k köşe?G,kG,k
Yukarıdaki sorunun kolayca NP-tam olduğu görülmektedir. Bir çözmek için algoritma [1] de verilmiştir. Algoritmanın kendisi sadece soruna EVET / HAYIR yanıtı verir, ancak gerçek k -yolunun kendisini oluşturmak için ek numaralar kullanabiliriz . Daha genel olarak, böyle bir "kehanet algoritması" verildiğinde, tanığın kendisini çıkarmak için kombinatoryal grup testinden araçlar kullanılabilir.Ö*( 2k)k
[1] Williams, Ryan. "Uzunluk yollarını bulmak olarak zaman." Bilgi İşleme Mektupları 109.6 (2009): 315-318. yayıncı bağlantısı , PDFkÖ*( 2k)