Bir sorunun NP-tam olduğunu kanıtlamak neden önemlidir?


Yanıtlar:


26

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.


Yani ilk amaç P için etkili bir algoritma bulmaktır, ancak bu ulaşılamaz gibi göründüğünden, P'nin hesaplama açısından zor olduğunu varsayar ve sonra cevaplarınız gerisini açıklar mı?
Ali

P sorunumuzun hesaplamalı olarak zor olduğunu göstermek istiyoruz, ancak P'nin P'nin zor olduğunu kanıtlamak zor olduğunu varsaymak istemiyoruz :) Bunun yerine, P'nin NP-tam (veya NP-zor olduğunu kanıtlarsanız, ancak burada ayrım göz ardı edelim), zaten iyi incelenmiş yüzlerce problemden herhangi biri zorsa, P'nin de zor olduğunu gösterdiniz. Çünkü P için etkili bir algoritma olsaydı, yüzlerce sorunun her biri için de etkili algoritmalar olurdu.
arnab

4
@Ali: Kesinlikle giriş karmaşıklığı teorisi ders kitabına bakmanızı öneririm. Bu web sitesi gerçekten bu tür sorular için bir forum değil, daha çok araştırma düzeyindeki sorular için bir forumdur.
arnab

5
@Ali: Kesinlikle Garey ve Johnson'ı okumanızı tavsiye ederim . Kitaptaki ünlü çizgi film mutlaka görülmeli!
Tsuyoshi Ito

9

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.


Sorunu gevşetmek için üç yol için güzel bir nokta! Rastgele algoritmalar "verimli ve tam olmayan ve genel" kategorisine girmektedir.
Hsien-Chih Chang 張顯 之

Gerçekten mi? Tüm randomize algoritmalar tam değildir.
Jeffε

Ve elbette haklısın JeffE. Ayrıca, eski bir öğrencime algoritmalarla talimat verdiğini (veya verdiğini) anlıyorum! Hsien-Chih'in noktasına gelince, randomize algoritmaların bu şemaya iyi uyduğunu düşünmüyorum. Kesinlikle bazı randomize algoritmalar (genetik algoritmalar ve nöral ağlar akla gelir) kesin değildir ancak verimli ve geneldir, ancak bazı rastgele algoritmalar oldukça doğrudur - bir sayıyı doğrulamak için algoritmayı düşünün! Rastgele bir algoritma, ancak kimsenin makul bir uygulamadan hiç kimsenin asal olmayan bir şey elde edemeyeceğinden eminim.
Peter Boothe

5

N-P-cÖmplete

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ıtlayarakN-P-cÖmplete, 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).

N-P-cÖmplete

N-P-cÖmplete

P=N-P3-SbirT

N-P-cÖmpleteCLbenSUE

Ö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.


2
Pek çok insan NP-zor problemlerini yaklaşık olarak NP-zor olsa bile pratikte çözer. Ortalama bir durumda, birçok sorunun çok daha kolay olduğu ortaya çıksa da, bunu göstermek zor olabilir; pratikte iyi çalışan sezgisel algoritmalar hakkında bir şey kanıtlamak daha zordur. Yazılım mimarına, tasarımını bırakmadan ve tasarımını değiştirmeden önce sorunun "gerçekten" zor olup olmadığını sormasını öneriyorum.
Yuval Filmus

Tasarımın değişmesi gerektiğini söylemiyorum. Sezgisel veya yaklaşık bir algoritma kullanmak bana göre (yanlış mı?) Problemi değiştirmek gibi görünüyor ... çünkü daha az kesin çözümler istediğinizi bildiğiniz için (bunlar kabul edilebilir mi? Uygulamaya bağlıdır!).
chazisop

3

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.


3

pppp


1
Bazı problemlerin NP-tamamlanmış olduğunu kanıtladığınız bir zaman olduğunu duydum, doktora tezinizi alacaksınız. Bu doğru mu?
Hsien-Chih Chang 張顯 之

@ Hsien-ChihChang 張顯 之: Bu konuda yorum yapamam, ancak bu sonuçlar kesinlikle birkaç on yıl önce çok daha popülerdi. Bu günlerde (elbette "ünlü sorunlar" hariç) "sadece" bir sertlik sonucu kanıtladığınız bir makale yayınlamak gittikçe zor görünüyor, oysa bu 70'li-80'lerde bir sorun olmazdı. o dönemdeki bu tür kağıtların bolluğu.
Anthony Labarre
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.