Daha düşük sınırları kanıtlamak gerçekten mümkün mü?


24

Herhangi bir hesaplama problemi göz önüne alındığında, böyle bir hesaplama için daha düşük sınırlar bulmak gerçekten mümkün mü? Sanırım, tek bir hesaplama adımının nasıl tanımlandığına ve ispat için hangi modeli kullandığımıza bağlı olduğunu düşünüyorum, ancak buna göre, genel olarak daha düşük bir sınırlama olduğunu kanıtlıyor muyuz? Ne demektir ki biz "sorunu gibi bir şey kanıtlayabilirim olan daha hızlı çözülemez yerine" sorun daha zaman " içinde çözülebilir zaman ya da daha hızlı"?Xt(X)Xt(X)

Özellikle alt sınırlar ve kanıtları hakkında bilgi bulmaya çalıştım, ancak konuyla ilgili kitap / bildiri / web siteleriyle ilgili herhangi bir öneri, gerçekten ilgi bulamıyorum.

Yanıtlar:


19

Böyle şeyleri kesinlikle ispatlayabiliriz.

Birçok sorun böyle bir dizi minimum bulma o kadar önemsiz alt sınır var (sıralanır değil / herhangi bir şekilde yapılandırılmış) sayıların en az sürer Ω ( n ) zaman. Bunun kanıtı basittir: o ( n ) zamanda çalışan varsayımsal bir algoritma , girdideki tüm sayıları inceleyemez. Bu yüzden algoritmayı bir girdi üzerine koyarsak, girdinin belirli bir öğesini hiç incelemediğini gözlemleyebiliriz. Bu elemanı minimuma değiştirerek algoritmanın başarısız olmasına neden olabiliriz.nΩ(n)o(n)

Daha az önemsiz bir alt sınır, karşılaştırma tabanlı modelde sıralama için alt sınırıdır. Bunun için kanıt şu satırlar boyunca gider: bir giriş verilmiş n numaraları vardır n ! olası çıkışlar (giriş, sıralanmış listenin herhangi bir permütasyonu olabilir, bu yüzden çıkış da girişin herhangi bir permütasyonu olabilir). Biz sadece yapıyor karşılaştırmalar sınırlıdır ise (ortalama olarak) daha sonra bizim algoritma gerçekleştirmek en azından gerekiyor günlük 2 ( n ! ) = Ω ( n log n ) vermek edebilmek amacıyla karşılaştırmalar nΩ(nlogn)nn!log2(n!)=Ω(nlogn)farklı çıktılar.n!

Düşük sınırlar daha güçlü olabilir. Üstel bir alt sınırın olduğu birkaç problem (özellikle zor problemleri) vardır. Bu sınıftaki problemler (genelleştirilmiş) satranç, dama ve oyun gibi oyunlar için en uygun stratejilerin hesaplanmasını içerir. Bunun kanıtı yoluyladır Zaman Hiyerarşi Teoremi (bazı kısıtlamalara tabi devletler, f ):EXPTIMEf

fonksiyonu verildiğinde , O ( f ( n ) ) zamanında çözülebilen ancak o ( f ( n ) zamanında çözülemeyen bir hesaplama problemi vardır.fO(f(n)).o(f(n)logn)

Bu nedenle, temel olarak, eğer fonksiyonunu düşünebilirseniz, çözülmesi gereken çok zaman gerektiren bir problem vardır.f

Son olarak, bir zamanın altında bir sınırlama getirme zorunluluğunu kanıtlamayan ancak daha güçlü bir şeyi kanıtlamanın başka bir yolu, bir sorunun çözülemezliğini göstermektedir (örneğin, yazışmaların durdurulması, durma).


Giriş veya çıkış boyutu en yaygın alt sınırlardır.
Raphael

14

Evet mümkün. Klasik örnek bir karşılaştırma esaslı sıralama algoritması gerektirmesidir uzunlukta bir sıralamak için karşılaştırmalar n .Ω(nlogn)n

Bununla birlikte, alt sınırların üst sınırlardan daha kanıtlanması daha zor görünmektedir. karşılaştırmaları gerektiren bir sıralama algoritması olduğunu kanıtlamak için , sadece böyle bir algoritma sergilemeniz gerekir (birleştirme sort - voila !). Ancak daha düşük bir sınır için, bir şekilde, belirli bir sınıftaki hiçbir algoritmanın probleminizi çözemediğini göstermeniz gerekir. Bunu yapmanın zorluğu sadece LN LPN PP S P A C E bildiğimiz gerçeğiyle açıklanmaktadır. O(nlogn) bu kapanımlardan en az birinin katı olduğunu bilmemize rağmen (uzay hiyerarşisi teoremine göre LP S P A C E ) ve çoğu insanhepsininkatıolduğunu düşünüyor.

LNLPNPPSPACE,
LPSPACE

Öte yandan, Ryan Williams'ın, daha düşük sınırlar bulmanın ve algoritmalar bulmanın temelde olmadığını iddia ettiği Devreler için Algoritmalar ve Algoritmalar için Devreler adında güzel bir makalesi (ve birkaç kez duyduğum konuşma) var. bu farklı. Örneğin, durma sorununun kararsızlığının kanıtını, tam olarak daha düşük bir sınır (kanıtlanamazlık) ispatlamak için kullanılan bir algoritmanın (üniversal Turing makinesi) bir örneği olarak gösterir.


Sanırım bunun peşinde olduğum şey olduğunu düşünüyorum ... "bir şekilde, belirli bir sınıftaki hiçbir algoritmanın probleminizi çözemediğini göstermeniz gerekiyor.", Bu biraz kafa karıştırıcı bulduğum bölüm. en azından böyle bir şey. @ Tom van der Zanden’in anladığım minimum sayıyı bulduğu gibi, bu yaklaşım genel midir? Genel olarak ispatları yaparken bu tür bir tartışmaya sahip olduğumu mu kastediyorum? Bağlantı için de teşekkürler.
hsalin

1
@ user1288420 Yalnız değilsiniz. Herhangi biri sezgisel olarak, belirli bir sınıftaki hiçbir algoritmanın bazı problemleri çözemeyeceğini ispatlayacağını görebilseydi, daha düşük sonuçlara sahip olurduk! Genelde, sınıftaki her algoritmanın sahip olduğu bir özellik bulmanız ve bu özelliğin bazı sorunların çözülmesini önlediğini göstermeniz gerekir. Örneğin, altı çizilen sürede çalışan her Turing makinesi, tüm girişlerini bile okuyamadığı bir özelliğe sahiptir. Bu, çoğu sorunu çözemediği anlamına gelir. Bu önemsiz; ne yazık ki, daha ilginç vakalar imkansız zor görünüyor.
David Richerby

3

n

Bununla birlikte, soruda alt sınır (veya genel olarak karmaşıklık sınırları) ile ilgili daha fazla açıklama gerektiren bir nokta var.

Gerçekte, tek bir hesaplama adımının ne olduğu seçimi, hesaplama adımlarının sabit bir üst sınır (ve alt sınır) olarak kabul edilebildiği sürece alakasızdır. Karmaşıklık sonucu, sabit bir değere kadar tanımlandığı için aynı olacaktır. Ünite işlemleri olarak 3 kıyaslama yapılması veya yalnızca bir tanesi farketmez.

Aynısı, hesaplamanın maliyetini değerlendirmek için referans olarak kullanılan verinin büyüklüğü için de geçerlidir. Tek bir tamsayı veya iki tamsayı boyut birimi olarak almak bir fark yaratmaz.

Ancak, iki seçenek birbiriyle ilişkili olmalıdır.

nlognO(günlükn)

Bir birimin birim maliyete sahip olarak değerlendirilip değerlendirilemeyeceği, hangi verinin birim boyut olarak kabul edilebileceği ile yakından ilgilidir. Bu da hesaplama modeliniz için hangi soyutlama seviyesini seçtiğinize bağlıdır.


Bir dizideki bir desenin bütün oluşumlarını bulmak için trivally tüm dizinin okunmasını gerektirir: desen "a" ise, dizinin her karakterinin olup olmadığını kontrol etmeden tüm oluşumları bulamazsınız.
David Richerby

1
@DavidRicherby Aslında her zaman değil. Boyer-Moore algoritması, desenin sonundan başlar, böylece dizgide atlar. Denenen deneme başarısız olursa, dizenin başlangıcını okumak zorunda değildir. Ayrıca, Knuth-Morris-Pratt algoritmasına benzer şekilde, desenin yapısı nedeniyle başarısızlığa uğrayan girişimleri atlamak için optimizasyona sahiptir. Tabii ki, dizenin tamamını okumayı gerektiren desenler var.
babou

@DavidRicherby Neden sordun, bunu biliyor muydun?
babou

İkinci yorumunu anlamıyorum. Orijinal cevabınız yanlış bir iddia içeriyordu. Elbette yanlış olduğunu biliyordum: bu şekilde işaret edebildim! Diğer insanlar bunun yanlış olduğunu bilmiyor olabilir, bu yüzden cevapları olduğu gibi bırakmaları kafa karıştırıcı olurdu.
David Richerby

1
@DavidRicherby Demek istediğim ne demek istediğimi anlıyorsun. Dediğim gerekirdi olmayabilir yerine değil . Bu, okuyucuların saçma konuştuğuma inanmasını sağlayan bir yorum tarzı gerektirmedi. Bunu yaparken Ve, tam olarak aynı dikkatsiz bir hata yaptı: "belirterek , tüm dizeyi okurken gerektirir trivially bir dizede bir desen tüm oluşumlarını bulma Dediğiniz gerekirken," " bir dizede bir desen tüm oluşumlarını bulma olabilir gerektirir tüm dize okuma ". Sadece önceki örneğimi hafifletmek için girdiyi okumak her zaman gerekli olmayabilir.
babou
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.