Bilinen en iyi algoritması çalışma süresi olan herhangi bir sorun var mı


18

Daha önce paydada bir günlük içeren bir algoritma görmedim ve bu formda gerçekten kullanışlı bir algoritma olup olmadığını merak ediyorum?

Bir günlük faktörünün çalışma zamanında çoğalmasına neden olabilecek birçok şeyi anlıyorum, örneğin sıralama veya ağaç tabanlı algoritmalar, ancak bir günlük faktörüne bölmenize neden olabilecek ne olabilir?


24
Mergesort ile . f(n)=nlog2n
Jeffε

12
@ Jɛ ff E snarky Mcsnarkster
Suresh Venkat

5
Radix sort - gerçekten O(nlogn/logn) . Neler oluyor rastgele erişim nedeniyle, bir günlük faktörü kurtarmak mümkün ....
Sariel Har-Peled

DTIME hiyerarşi teoreminin, RAM modelinde benzer bir yer maliyet tasarrufu hilesi yapabileceği düşünüldüğünde, bu tür algoritmaların varlığına karşı bir argüman olarak kullanılıp kullanılamayacağını merak ediyorum.
chazisop

Yanıtlar:


41

"Bir günlüğe bölmenize ne sebep olabilir?" iki şeyin birleşimidir:

  1. kelime boyutlu tamsayılar üzerinde sabit zamanlı aritmetik işlemlere izin verilen, ancak kelimelerin ne kadar uzun olduğu konusunda muhafazakar olmak istediğiniz bir hesaplama modeli, böylece kelime başına O(logn) bitini varsayıyorsunuz (çünkü bundan daha az ve hatta tüm belleği ele alamıyordunuz ve ayrıca tablo aramalarını kullanan algoritmaların, kelimeler daha uzunsa tabloları ayarlamak için çok fazla zaman alacağı için) ve
  2. bitleri kelimelere paketleyerek verileri sıkıştıran ve daha sonra kelimeler üzerinde çalışan bir algoritma.

Ben birçok örnek olduğunu düşünüyorum, ama klasik bir örneğidir Dört Ruslar Algoritma en uzun ortak alt sıralar vb Aslında olmak biter için o bit ambalaj fikir kullanır ama sonra bir saniye kazandırır, çünkü başka bir fikir kullanarak log faktörü: O ( log 2 n ) bit işlem bloklarının tek bir tablo aramasıyla değiştirilmesi.O(n2/log2n)O(log2n)


35

Rubik Küpü çok doğal (ve benim için beklenmedik) bir örnektir. Bir n×n×n küpü çözmek için Θ(n2/logn) adımı gerektirir. (Bunun teta gösterimi olduğuna dikkat edin, bu yüzden sıkı bir üst ve alt sınır).

Bu, bu yazıda gösterilmiştir [1].

Bu değer Rubik küpün belirli kullanım çözme karmaşıklığı söz olabilir (tartışılan açık ama NP-zor olması conjectured burada örneğin) NP zor [2]. Θ(n2/logn) algoritması bir çözelti garanti ve tüm çözümler asimptotik uygun olduğunu garanti, ama en iyi şekilde, belirli örneklerini çözmek olmayabilir. Yararlı tanımınız burada geçerli olabilir veya olmayabilir, çünkü Rubik küpleri genellikle bu algoritma ile çözülmez ( Kociemba'nın algoritması genellikle pratikte hızlı, optimum çözümler sağladığı için küçük küpler için kullanılır).

[1] Erik D. Demaine, Martin L. Demaine, Sarah Eisenstat, Anna Lubiw ve Andrew Winslow. Rubik Küplerini Çözme Algoritmaları. 19. Yıllık Avrupa Algoritmalar Sempozyumu Bildirileri (ESA 2011), 5–9 Eylül 2011, sayfa 689–700

[2] Erik D. Demaine, Sarah Eisenstat ve Mikhail Rudoy. Rubik Küpünü En Uygun Şekilde Çözmek NP-tamamlandı. 35. Uluslararası Bilgisayar Biliminin Teorik Yönleri Sempozyumu Bildirileri (STACS 2018), 28 Şubat - 3 Mart 2018, sayfa 24: 1-24: 13.


16

Bit paketleme hileleri olmadan paydada görülen örneği, Agarwal, Ben Avraham, Kaplan ve Sharir tarafından O zamanındaki iki poligonal zincir arasındaki ayrı Fréchet mesafesini hesaplamak için yeni bir makaledir ( n 2 log log n / log n ) . Algoritmanın ayrıntılarına aşina olmasam da, genel bir hile girdiyi nispeten küçük parçalara bölmek ve daha sonra cevapları akıllıca birleştirmektir (elbette bu bölün ve fethetmek gibi geliyor, ancak log n bazı akıllı hilelerle paydada)lognO(n2loglogn/logn)


5
Bu, David'in cevabında açıklanan "Dört Rus" tekniğinin daha karmaşık bir örneğidir.
Jeffε

13

Tam olarak ne istedi ama bir günlük faktörü paydada göründüğü "vahşi" bir durum kağıt "dir Ağacı Değerlendirme Çakıl ve Dallanma Programları Stephen Cook, Pierre McKenzie, Dustin Wehr Mark Braverman'ın ve tarafından" Rahul Santhanam.

Ağaç değerlendirme problemi (TEP): iç düğümlerde yapraklarda ve { 1 , , k } d{ 1 , , k } yapraklarında { 1 , , k } değerleriyle açıklamalı -bir ağaç verilir. , ağacı değerlendirmek. Burada her bir iç düğüm açıklamalı fonksiyonunun değerini çocuklarının değerleri üzerinden alır. Bu kolay bir sorundur ve amaç logaritmik alanda çözülemeyeceğini göstermektir (ağacın yüksekliği girişin bir parçası olduğunda). Bu amaçla, TEP'yi çözen dallanma programlarının büyüklüğü ile ilgileniyoruz.d{1,,k}{1,,k}d{1,,k}

Bölüm 5'te, hem TEP hem de ilgili problem BEP için yüksekliğin 3 ağaçları için sıkı sınırlar sunulmaktadır, burada çıkışın bir şekilde keyfi olarak e daraltıldığı görülmektedir . TEP için sınır Θ ( k 2 d - 1 ) iken, BEP için sınır Θ ( k 2 d - 1 / log k ) şeklindedir , yani k kaydından bir tasarruf elde edersiniz .{0,1}Θ(k2d1)Θ(k2d1/logk)logk


12

Çalışma zamanı ile ilgili olmasa da, Hopcroft, Paul ve Valiant'ın klasik sonucundan bahsetmeye değer olduğunu düşündüm: [1], çünkü hala " bir günlük faktörünü kurtarmanıza neden olan şey" ruhu .TIME[t]SPACE[t/logt]

Bu, uzay karmaşıklığında en iyi bilinen üst sınırı paydada bir günlüğe sahip olan birçok soruna örnek verir. (Görüşünüze bağlı olarak, ya bu örneği çok ilginç kılan - ne şaşırtıcı bir teorem! - ya da çok ilgisiz - muhtemelen "gerçekten yararlı" değildir.)

[1] Hopcroft, Paul ve Valiant. Zamana karşı uzaya . J. ACM 24 (2): 332-337,1977.



8

nO((n/logn)2)

William J. Masek, Mike Paterson: Daha Hızlı Bir Algoritma Bilgi İşlem Dizesi Düzenleme Mesafeleri. J. Comput. Sist. Sci. 20 (1): 18-31 (1980) 'de tarif edilmektedir.


4
Yine, bu Dört Rus algoritmasının bir varyasyonu, sanırım.
David Eppstein

7

Θ(n/günlükn) Greg ve Paul Valiant tarafından dikkate alınan bir sorun için doğru sınır olarak görünüyor (bit numaralarıyla bağlantı yok):

Gregory Valiant ve Paul Valiant, Doğrusal tahmin edicilerin gücü, 2011. Bilgisayar Biliminin Temelleri Hakkında 52. Yıllık IEEE Sempozyumu'nda, FOCS 2011.


7

Aşağıda, bir günlük faktörüne sahip sıkı bir bağın başka bir örneği verilmiştir. (Bu, Boolean İşlev Karmaşıklığından Teorem 6.17: Stasys Jukna'nın İlerlemeleri ve Sınırları.)

Eleman ayırt etme probleminin formül boyutu (tam ikili veya De Morgan bazında) Θ(n2/günlükn), nerede n girişteki bit sayısıdır.

The reason the log factor appears in the denominator is that representing m integers between 1 and poly(m) requires n:=O(mlogm) bits in total, since each integer requires O(logm) bits. So an upper bound that looks natural in terms of m, like Θ(m2logm), becomes Θ(n2/logn) when expressed in terms of n, where n is the number of bits in the input.


2

Finding the prime factors of n by trial division when the list of primes is already given. There are θ(nlog(n)) primes less than n so if these primes are given to you, then trial division of n by each of them takes θ(nlog(n)) time (assuming division is a constant-time operation)


3
In fact, it's enough to look at the roughly 2n/logn primes below n. But there are far better algorithms out there.
Yuval Filmus

-2

somewhat similar to JG's answer & "thinking outside the box", this seems like a related/relevant/apropos/fundamental negative result. based on diagonalization with a universal TM, there exists a O(f(n)) DTIME language that cannot run in O(f(n)logf(n)) DTIME, due to the time hierarchy theorem. so this applies to a linear DTIME algorithm that exists, f(n)=n, that runs impossibly in O(nlogn) DTIME.


2
on a TM, DTIME(n/logn) is trivial as it doesn't allow the machine to read the whole input. also, the DTIME notation makes the big-oh notation unnecessary.
Sasho Nikolov

?? there is still theory for sublinear time algorithms...
vzn

3
sublinear algorithms make sense in oracle & random access models. DTIME is standardly defined w.r.t. multitape TM, and that's the definition used in the hierarchy theorem for DTIME.
Sasho Nikolov

1
No, @SashoNikolov, DTIME(n/logn) is not trivial. Compare "Are the first n/lgn bits of the input all zeros?" with "Do the first n/lgn bits of the input encode a satisfiable boolean formula?"
Jeffε

5
@JɛffE: You cannot test “Are the first n/lgn bits of the input all zeros?” in O(n/logn) time on a TM, since you do not know what n is without first reading the whole input, which takes time n. It is a standard fact that if f(n)<n, then DTIME(f(n)) contains only languages the membership in which can be determined from the first k bits of input for a constant k (and therefore are computable in constant time).
Emil Jeřábek supports Monica
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.