NP-Complete sınıfı NP-hard'a kıyasla neden önemlidir?


19

Hesapsal karmaşıklığı inceliyorum ve NP-Complete (NPC) problemlerinin neden önemli bir sınıf olduğunu merak ediyordum. Belirli bir NP sorununun neden NP zor olduğunu göstermekle ilgilendiğimizi açık bir şekilde görüyorum.

NPC'nin tanımını da anlıyorum ve belirli bir karar problemini göstermenin NP zor olduğunu, NP'de olduğunu bilmenin tam olarak NPC anlamına geldiğini anlıyorum.

Ancak, anlamadığım şey: bu kavram neden bu kadar önemli? Elbette, P zamanında çalışan herhangi bir NP-sert algoritması bulursak (NP'de olsun ya da olmasın), .N-P=P

Bu kavram neden bu kadar önemli?


3
İkinci sorunuzu sildim, çünkü bu birinciden tamamen ayrı. Ancak, bu çok iyi bir soru ve bunu yeni bir soru olarak sormanızı tavsiye ediyorum. Metni kurtarmak için, düzenleme geçmişini gösterecek ve metni kopyalayıp yapıştırmanıza izin veren "düzenlenmiş [ne zaman olursa olsun" bağlantısını tıklayın.
David Richerby

Yanıtlar:


16

NPC'nin ilginç olmasının en az birkaç nedeni vardır:

  • NP sınıfı, ilginç (hem pratik hem de teorik olarak) birçok problem içerir, ayrıca bu problemlerin birçoğu NP-sert (ve böylece NP-tamamlanmış) olur, ancak NP dışındaki birçok problem neredeyse kesinlikle çok zordur teorik ilgi fazla NPC ama o kadar da zor onlarla bir şey yapmaya olamayacağını, görünüşe zor sorunların (kaba) grubu sağlar, böylece.
    Başka bir deyişle, NPC muhtemelen polinom zamanı çözülebilir olabileceğini umabileceğimiz şeyin sınırıdır, PSPACE = P'yi denemek için bir streç gibi görünecektir (örneğin).
  • Sınıf NP yapısal olarak ilginçtir. "Belirsizcilikten daha fazla hesaplama hızı alıyor muyuz?" P = NP olsun ya da olmasın ilgileniyoruz ve NPC (muhtemelen) bu çalışmanın önemli bir bileşenidir.
  • NP-hard (bir sınıf olarak) gerçekten çok büyük ve tek bir şeyle başa çıkmak için çeşitlidir, NP dışındaki bir problemden , NP dışındaki büyük bir şey de dahil olmak üzere azaltılabilen her şeydir, bu yüzden genel sonuçlar ve teknikler geliştirmeye çalıştığımıza bakacak hiçbir şey yok.

Orijinal sorum başlığı yansıtmak için düzenlendiğinden, belki de ikinci sorunun cevabını da gizlemelisiniz.
Amnestic

1
NP-hard, "en azından NP'deki NP-tamamlama problemlerini içerdiği için" NP dışındaki her şey "değildir. Ne demek istediğini anlıyorum, ama bunu nasıl özlü bir şekilde ifade edeceğini bilmiyorum.
vonbrand

@vonbrand, evet, çılgınca abarttım (belki de delilik)? Yeni sürüm doğrudur, ancak ne yazık ki hissi yoktur.
Luke Mathieson

9

Yaşam için kod yazan birinin bakış açısından, NP tamlığına aşina olmak aşağıdakiler için önemlidir:

1. Yanlış ağaca havlarken tanıma

NP-tamamlanmış problemler NP-zor problemlerin en kolayıdır ve yine de anlayabildiğimiz kadarıyla, böyle bir karar problemini çözmek için girdinin boyutuna göre katlanarak zaman alır. Bu nedenle, çözmeye çalıştığınız sorunun NP-zor olduğunu gösterebiliyorsanız pratik bir konu olarak (tipik olarak etkili bir çözümün bazı NP-komple sorunlarına da etkili bir çözüm sağlayacağını göstererek), yapabilecekleriniz arama durdurmak tam genel olarak bunu çözmek için etkili bir algoritma için. Bunun yerine, NP-hard optimizasyon problemleri için iyi yaklaşımlar vaat eden ve projenizin geri kalanına devam eden bilinen algoritmalar arasından seçim yapabilirsiniz.

2. Doğru ağacı bulmak

Bilgisayarlar genellikle NP zor sorunlara saldırmak için kullanıldığından, bazı NP zor sorun örneklerini etkili bir şekilde çözebilen özel çözücüler geliştirilmiştir . Sorununuzun NP-tamamlanmış olduğunu kabul etmek, aksi takdirde bir çözüm bulmak zorunda kalacağınız bazı durumlarda kesin çözümler bulmanıza yardımcı olabilecek mevcut bir aracı (SAT, ILP, SMT, CSP, birkaçını adlandırma) bulmanın ilk adımıdır. yaklaştırılması.


-4

"Elbette, P zamanında çalışan herhangi bir NP-sert algoritma bulursak (NP'de olsun ya da olmasın), NP = P olduğunu gösterdik. Bu kavram neden bu kadar önemli?"

Her NP problemi herhangi bir NPC problemine indirgenir, ancak her NP probleminin herhangi bir NP-sert problemine azaldığı doğru değildir, bu nedenle NP-sert bir algoritmanın P'de olduğunu kanıtlamak P = NP'yi hiç kanıtlamaz. Bununla birlikte, bir NPC probleminde, "indirgeme" nin anlamı budur. Yani, bir NPC problemi için bir P algoritması bulursak, P = NP olduğunu kanıtlamış oluruz.


3
XX
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.