Yanıtlar:
Ali, güzel soru.
Varsayalım ki bazı P problemlerinin hesaplama açısından zor olduğunu göstermek istersiniz. Şimdi, P'nin zor olduğunu, bunun için henüz verimli bir algoritmamız olmadığına dayanarak düşünebilirsiniz. Ama bu oldukça dayanıksız bir kanıt, değil mi? P'ye bakmanın çok kolay bir yolunu kaçırmış olabiliriz ki bu da çözmeyi çok kolaylaştıracaktır. Bu nedenle, P'nin zor olduğunu tahmin etmek için daha fazla kanıt biriktirmek isteriz. İndirimler tam olarak bunu yapmak için bir araç sağlar! Başka bir doğal problemi Q'dan P'ye indirebilirsek, P'nin en azından Q kadar zor olduğunu gösterdik. Fakat Q, tamamen farklı bir matematik alanından bir sorun olabilir ve insanlar on yıllardır Q'yu çözmek için mücadele etmiş olabilirler. . Dolayısıyla, Q'nun P'nin zor olduğuna dair kanıt olması için etkin bir algoritma bulmadaki başarısızlığımızı görebiliriz. Eğer böyle bir sürü Q '
NP tamlık teorisi tam olarak bunu sağlar. Sorununuzun NP-tam olduğunu kanıtlarsanız, sertliğini, her biri çeşitli topluluklar için önemli ilgi gören yüzlerce başka sorunun sertliğine bağladınız. Böylece, ahlaki olarak konuşursak, probleminizin gerçekten zor olduğundan emin olabilirsiniz.
Bir problemi kanıtlamak NP-Complete bir araştırma başarısıdır, çünkü okuduğunuz genel problem için etkili ve kesin bir çözüm aramak zorunda kalmazsınız. Sorununuzun o kadar zor bir sorun sınıfının üyesi olduğunu kanıtlıyor, hiç kimse sorunların hiçbiri için etkili ve kesin bir algoritma bulamamıştır ve sorunların herhangi biri için böyle bir çözüm, tüm sorunlara çözüm getirecektir. sorunları.
Genellikle bir basamak taşıdır, çünkü sorununuz hala oradadır - sadece ihtiyaçlarınızı rahatlatmanız gerekir. Genellikle insanlar "verimli", "tam" veya "genel" in bir veya daha fazlasını nasıl rahatlatacaklarını anlamaya çalışırlar. Verimsiz ve kesin ve genel, bu algoritmalar için üs içinde daha iyi ve daha iyi sabitler bulma girişimidir. Etkili ve kesin olmayan ve genel yaklaşım algoritmalarının incelenmesidir. Verimli ve kesin, ancak genel olmayan, sabit parametre izlenebilirliği ve verimli algoritmaların bulunabileceği girdi alt sınıflarının araştırılmasıdır.
a) Bir yazılım projesi üzerinde çalışıyorsunuz. Sisteminizi belirledikten sonra, uygulamanızın mimarisini tanımlamaya başlıyorsunuz. Bu, uygulamanın daha küçük sorunlara hizmet ettiği büyük sorunun / ihtiyacın ortadan kaldırılmasını içerir. Diyelim ki bu küçük sorunlardan biri için verimli (uygulamamızın yavaş olmasını istemiyoruz!) Algoritması bulma görevi verildi. Bir süre mücadele ettikten sonra, bir polinom algoritması bulamazsınız. O zaman düşünebilirsiniz: belki de bu sorun çok zordur, bu nedenle verimli bir algoritma bulmak çok zordur (hatta imkansızdır). Sorunun olduğunu kanıtlayarak, bu varsayımınız için bazı kanıtlarınız var ve alternatif bir yaklaşım düşünmeye başlamalısınız (örneğin, sorunu daha kolay hale getirmek için değiştirmek).
Özetlemek, bir sorunu karakterize etmek yaygın teknikleri kullanmanıza izin verir. İlgili olduğu sınıfı inceleyerek, genel olarak matematik ve fen bilimlerinde yaygın olan bu problemin özelliklerini bozmadan soyut bir düzeyde düşünebilirsiniz. Bireysel üyeler yerine sınıflarla çalışmak, bilinen teknikleri kullanmanıza ve ayrıca görüşlerinizi yalnızca bir yerine çok sayıda nesneye uygulamanıza olanak tanır.
Her problemin diğer problemlerle birkaç bağlantısı vardır. Ayrıca, bir problem ve karmaşıklık sınıfları arasında ilişkiler vardır.
Bu nedenle, bir problemi NPC olarak sınıflandırmak genellikle bize diğer problemlerin yanı sıra karmaşıklık sınıfları hakkında bilgi verir.
Örneğin, grafik izomorfizmi (GI) problemini ele alalım . Aşağıdaki makalede:
Uwe Schöning, Grafik izomorfizmi düşük hiyerarşide , 4. Yıllık Bilgisayar Bilimi Kuramsal Yönleri Sempozyumu Bildirileri , 1987, 114-124; ayrıca: Bilgisayar ve Sistem Bilimleri Dergisi, cilt. 37 (1988), 312-323'te açıklanmaktadır.
GI ∈ NPC ise, polinom hiyerarşisinin (PH) ikinci seviyesine çöktüğü kanıtlanmıştır ; yapısal karmaşıklık teorisinde önemli bir atılım olacak.