Karmaşıklık sınıfları arasındaki eşitlikler neden yukarı doğru değil, aşağı doğru çevriliyor?


25

Hey numarasının karmaşıklık sınıflarını yukarı - örneğin . Dönüşüm çalışan, girdi "şişirme" eserlerini doldurma (diyelim dan söylemek için sen yastıklı girişine çalışabilir bir "sihirli" algoritmasını verir). Bu teknik anlamda mantıklı olsa da, bunun nasıl çalıştığını iyi anlayamıyorum. Burada tam olarak ne oluyor? Dolgu ne için basit bir benzetme var mı?N P PP=NPEXP=NEXPNPP

Bir sağlayabilir sağduyu bu durumda olmasının nedeni?


11
Tüm karmaşıklık sınıfı sonuçlarının yukarı çıkmadığını belirtmek isterim. Örneğin, , bu anlamına gelir . Genel olarak, ayrılıklar azalırken, çöküşler artar. P N PEXPNEXPPNP
Robin Kothari

aslında. Aslında, ayrılıklar çökmelerden daha sezgisel olduğu için bu, düşünmek için iyi bir yol gibi görünüyor.
gabgoh

2
@Robin, @gabgoh: bazı çökmeler bile aşağıya iner, fakat tartışmaları doldurmaz. Örneğin, arxiv.org/abs/cs/9910008 adresini ziyaret edin .
Joshua Grochow

Yanıtlar:


30

Bence bu konuda sezgisel olmanın en iyi yolu, üstel zaman sınıfları için tam sorunların ne olduğunu düşünmektir. Örneğin, NE için tam problemler, kısaca tanımlanabilen girdilerde, örneğin bir grafiğin bitişik matrisini tarif eden bir devre verildiğinde, standart NP-tamamlanmış problemlerdir, grafik 3-renklendirilebilir mi? Daha sonra, E = NE'nin NP problemlerinin kısa sürede tanımlanabilen girdilerde, örneğin küçük etkili Kolmogorov karmaşıklığına sahip olanlar üzerinde polinom zamanında çözülebilir olup olmadığına eşdeğer hale gelmesi sorunu. Bu tabii ki tüm girdilerde çözülebilir olup olmadıklarından daha güçlü değil. Zaman sınırı arttıkça, ilgili girdilerin Kolmogorov karmaşıklığı azalır, bu nedenle daha büyük zaman sınırları için daraltılır, daha küçük girdi alt kümelerinde çalışan algoritmalar etkilidir.

Russell Impagliazzo


14

Tamam hedef olduğunu göstermek için, bu nedenle dayalı (biz don Bu sınıfların tam olarak ne olduğunu belirtmeyin, sadece bir şekilde girdi boyutuyla parametrelediklerini biliyoruz). dilinde sahip bir dilimiz var , bazı algoritmalarla belirlendi . Şimdi her bir kelimeyi içinde , bir dil yapıyoruz , böylece uzunluğu şimdi ' dir ve temel olarak yeni algoritmamız içerdiğini sadece eklenen sıfırları yok sayar ve gerçek, kısa girişte çalıştırır).C L A S S 1 [ g ( n ) ] = C L A S S 2 [ h ( n ) ] L C L ACLASS1[g(f(n))]=CLASS2[h(f(n))]CLASS1[g(n)]=CLASS2[h(n)]A L x L f ( n ) C L A S S 1 [ g ( n ) ] A ALCLASS1[g(f(n))]ALxLf(n)CLASS1[g(n)]AA

Yaptığımız şey: daha büyük sınıftan bir dil alıyoruz ve onu dolduruyoruz, böylece daha küçük bir sınıfta çevrelemizi sağlayan daha zayıf bir algoritma ile çözülebilir - daha zayıf algoritma bunu yapabilir, çünkü aynı miktarda 'gerçek iş' eskisi gibi yapacak, ancak girişi genişleterek kaldırılan (giriş uzunluğunun bir fonksiyonu olan) kısıtlamaları var.

Şimdi biliyoruz ve dolayısıyla (bazı algoritma tarafından karar ). Buradan 'e ulaşmak istiyoruz . Fakat bu basittir - algoritmasına karar vermek için sadece girişi buna göre doldurur ve dolgulu giriş üzerinde çalıştırır .L 'L bir S S 2 [ h ( n ) ] B ' L L bir S S 2 [ h ( f ( n ) ) ] B L B LCLASS1[g(n)]LCLASS2[h(n)]BLCLASS2[h(f(n))]BLB

Bu adım şu şekilde özetlenebilir: daha büyük ve daha becerikli bir sınıfta karar vermek istiyoruz . Ekstra kaynaklarımızı kullanarak girdiyi doldurur ve dolgulu dile karar veren algoritmayı çalıştırırızL .

Elbette burada yer alan bazı teknik detaylar var (örneğin, dolgu malzemesinin düşündüğümüz sınıflarda uygulanabileceğinden emin olmalıyız) ama genel sezgiyi vermek için onları görmezden geldim.


13

Dolgu argümanlarını sunumun kompaktlığı açısından görüyorum. İki tercüman düşünün Turing makineleri: örnekleri havaya uçurur ve bunları tekrar sıkıştırır.CBC

Dolgu argümanı ile çalışır oluşturarak, alt nondeterministic sınıfta dil için TM'nin deterministik sürümü ile. çıktıları toplu olarak kompakt bir şekilde temsil edilmeyen bir dil oluşturur, bu yüzden bu "kolay" olur.B BBBB

Bu fikri kullanarak diğer yoldan uygulamak mümkün değildir , çünkü kolay sınıftaki dillerin yalnızca bazıları zor sınıftaki dilleri havaya uçurarak üretilir.C


5

Daha sezgisel hale getirmek için daha soyut olarak neler olup bittiğine bakalım!

Biri girdiler diğeri problemler için olan iki dönüşümümüz var. Her ikisini de göstereceğim, birincisi ve ikincisi olduğunda bağlamdan anlaşılacaktır.pad

Bu iki dönüşüm aşağıdaki özelliğe sahiptir:

I. Tüm problemler için , tüm girişler için :AΣxΣ

pad(x)pad(A) iff ,xA

II. Eğer olan ( ), sonra içinde ( ).AEXPNEXPpad(A)PNP

III. girdilerin dönüşümü karmaşıklık sınıfında ,EXP

Dolgu dönüşümlerinin bu özelliklere sahip olduğu açıktır.

(Biz alışverişinde Şimdi, biz ters yönde aynı şeyi yapmak nasıl bilmiyorum sebebi ters yönde dolgu gibi dönüşümler yok olmasıdır ile ve ile ). Öyleyse soru neden?EXPPNEXPNP

Şu anda neden bu kadar dönüşüm olmadığına dair resmi bir fikrim yok, ama sezgisel bir şekilde András Salamon'un söylediği şey doğru. Girdilerin boyutunu artırmak kolaydır, ancak nasıl sıkıştırılabilecekleri açık değildir?

Bunu anlamanın başka bir yolu da şu şekilde düşünmektir. olduğunu varsayalım ve bir problemini çözmek istiyoruz. Bu, bir giriş verilir uzunluğu , biz düşünmek uzunlukta bir girdi olarak bunun :P=NPNEXP=NTime(2nO(1))xnN=2nO(1)

NEXP(n)=NTime(2nO(1))=NTime(N)NP(N)P(N)=Time(NO(1))=Time(2nO(1))=EXP(n)


1
Bir tür "değişkenlerin dönüşümü" argümanı olarak gördüğüm ikinci argüman bana geldi. Bununla birlikte, in bir girdisine sahip olmasının neden sadece "düşünemediğini" anlamıyorum, bu yüzden onu aşağıya çeviriyorsunuz. Diğer iki yaklaşıma rağmen, NP algoritmasına daha fazla kaynak vermek ve sıkıştırma vs dolgusu anlamında anlam ifade etmek için düşünmek pek işe yaramıyor. N=log(n)
gabgoh

1
Bunu düşünmenin üçüncü bir yolu, aslında, sohbete bakmaktır. Acı sona doğru bu yaklaşımı takip etmedim, ancak büyük bir içgörü gelirse, kendime bir cevap olarak gönderirim.
gabgoh

1
@gabgoh: Sadece değişkenlerin değişmesinden daha hassastır. Ben am düşünme uzunluğunun olarak girdi , bu eserler nedeniyle , sadece marka orijinal girdi sonunda yeterli boşlukları olduğunu hayal uzunluk eşittir , ancak uzunluğu girişini olarak nasıl düşünebilirsiniz ? Parantez içinde olanın girişin uzunluğu olduğunu unutmayın! yani, girişin fonksiyon çıkışının bağlı olacağı kısımdır. n N N n N = log ( n )N=2nO(1)nNNnN=log(n)
Kaveh

1
[devam] Bu da yardım olabilir düşünüldüğünde: girdi tekli ve uzunluğunun olduğunu varsayalım o zaman bunu sıkıştırabilir, bit ve aslında bu işe yarar! kodlamalı ( ) problemi ikili kodlamalı ( ) olacaktır . , N = günlük ( n ) P K P E X- P , N D x PnN=log(n)PNPEXPNEXP
Kaveh

1
Sanırım benim sorunum "düşünmek" ifadesiyle ilgili, kafamı daha küçük bir girdi olarak daha büyük bir girdi olarak düşünmenin ne anlama geldiğini ve bunun gerçekte ne yaptığını bulamıyorum. Diyelim ki düşünemediğinizin farkındayım , bu da doldurma argümanının bir ifadesi, sanırım temiz bir benzetme değil. Sonuçta, değişkenleri değiştirdiğimizde değişkenleri daima diğer değişkenler açısından düşünüyoruz, ancak gerçek değişkenlerin aksine "sıkıştırılamaz". Kötü bir cevap olduğunu söylememek değil, bana kişisel olarak pek yardımcı olmuyor. N=log(n)
gabgoh
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.