Bilgisayar bütünlüğü uzmanlarına NP eksiksizliği öğretmenin en iyi yolunu sormakla ilgileniyorum. Özellikle, Karp azaltmalarını kullanarak mı yoksa Turing azaltmalarını mı kullanmalıyız?
NP bütünlüğü ve azaltma kavramlarının her bilgisayar biliminin bilmesi gereken bir şey olduğunu hissediyorum. Ancak, NP'nin eksiksizliğini öğretirken, Karp azaltmalarının kullanımının bazı olumsuzlukları olduğunu fark ettim.
Her şeyden önce, Karp azaltma bazı öğrenciler için gereksiz yere kafa karıştırıcı gibi görünüyor. Bir indirgemenin sezgisel nosyonu "X problemini çözmek için bir algoritmam varsa, onu da Y problemini çözmek için kullanabilirim" dır. Bu çok sezgiseldir - ancak Turing azaltma işlemlerine Karp azaltma işlemlerinden çok daha iyi eşler. Sonuç olarak, NP'nin bütünlüğünü kanıtlamaya çalışan öğrencilerin sezgileriyle sapmış olmalarını ve yanlış bir kanıt oluşturduklarını görüyorum. Her iki azaltma türünü öğretmeye çalışmak ve Karp azaltmalarının bu yönünü vurgulamak bazen gereksiz bir formalizm gibi hissediyor ve gereksiz sınıf zamanını ve öğrencinin kaçınılmaz bir teknik ayrıntı gibi hissettirdiği konusuna dikkat çekiyor; bu daha kısıtlı bir indirgeme nosyonunu neden kullandığımız belli değil.
Karp indirimleri ve Turing (Cook) indirimleri arasındaki farkları ve bunların farklı NP-bütünlüğü kavramlarına neden olduğunu anlıyorum. Karp azaltmalarının bize karmaşıklık sınıfları arasındaki ayrımların daha ince bir ayrıntı verdiğini fark ediyorum. Dolayısıyla, karmaşıklık teorisinin ciddi bir şekilde incelenmesi için, Karp azaltmalarının kesinlikle doğru araç olduğu açıktır. Ancak, bunu öğrenen ve hiçbir zaman karmaşıklık teorisine girmeyecek olan bilgisayar bilimi öğrencileri için, bu ince ayrımın kritik olup olmadığına, maruz kalmaları açısından kritik olup olmadığından emin değilim.
Sonunda, bir öğrenci olarak, "tautology" gibi bir sorunla karşılaştığımda şaşkın hissettiğimi hatırlıyorum - örneğin, bir boolean formülü verildiğinde, bunun bir totoloji olup olmadığını kontrol edin. Kafası karıştıran bu sorunun açıkça zor olduğuydu: bunun için herhangi bir polinom-zaman algoritması P = N P anlamına gelirdi.; ve bu problemi çözmek, açıkça totoloji problemini çözmek kadar zor. Bununla birlikte, sezgisel olarak totoloji tatmin edilebilirlik kadar zor olsa da, totoloji NP-zor değildir. Evet, bugün durumun neden böyle olduğunu anlıyorum ama o zaman bununla şaşkın kaldığımı hatırlıyorum. (Sonunda anladığımda aklımdan geçen şey şuydu: Neden yine de NP-sert ile NP-sert arasındaki bu ayrımı çiziyoruz? Bu yapay olarak pratik olarak çok motive değil gibi görünüyor. Neden NP'ye odaklanıyoruz? eş-NP'den daha eşit mi görünüyorlar.Önemli bir perspektiften, pratik bir perspektiften, ko-NP-sertliği, temel olarak NP-sertliği ile aynı pratik sonuçlara sahip gibi gözüküyor, öyleyse neden hepimiz bu ayrımdan vazgeçiyoruz? Evet, biliyorum cevaplar, ancak bir öğrenci olarak, bunun konuyu daha heyecan verici ve kötü motive edici hissettirdiğini hatırlıyorum.)
İşte benim sorum bu. NP-bütünlüğünü öğrencilere öğrettiğimizde, Karp azaltmalarını mı yoksa Turing azaltmalarını kullanmayı mı öğretmek daha iyi? Turing azaltmalarını kullanarak NP eksiksizliği kavramını öğretmeye çalışan var mı? Eğer öyleyse nasıl gitti? Turing azaltmalarını kullanarak kavramları öğretip Karp azaltmalarıyla ilgili kavramsal sorunları atlasaydık, bariz olmayan herhangi bir tuzak veya dezavantaj olur mu?
İlgili: Karp azaltmalarını literatürde kullanmamızın sebebinin NP sertliği ile yardımcı NP sertliği arasında ayrım yapmamızı sağladığından dolayı, buraya ve buraya bakın . Ancak, bu kabiliyetin, her CS uzmanı tarafından alınması gereken bir algoritma sınıfının öğrenme hedefleri için kritik olup olmadığına dair pedagojik bir perspektife odaklanmış herhangi bir cevap vermiyor gibi görünmektedir. Benzer bir tartışmaya sahip olan sstheory.SE hakkında da bakınız .