TSP için Bellman-Held-Karp algoritmasının zaman karmaşıklığı, 2


16

Yakın tarihli bir soru , TSP için Bellman ve Held-Karp'tan bağımsız olarak şu anda klasik dinamik programlama algoritmasını tartıştı . Algoritmanın evrensel olarak sürede çalıştığı bildirilmiştir . Ancak, öğrencilerimden birinin yakın zamanda belirttiği gibi, bu çalışma süresi mantıksız derecede güçlü bir hesaplama modeli gerektirebilir.O(2nn2)

İşte algoritmanın kısa bir açıklaması. Giriş yönlendirilmiş bir grafiktir oluşur olan köşeler ve negatif olmayan bir uzunluk fonksiyonu . Herhangi bir köşe için ve ve herhangi bir alt kümesi hariç bu köşelerin ve , izin en kısa Hamilton yolun uzunluğu belirtmek için kaynaklı alt grafiği olarak . Bellman-Held-Karp algoritması aşağıdaki tekrarlamaya dayanmaktadır (veya iktisatçılar ve kontrol teorisyenleri buna “Bellman denklemi” demeyi sever):n : E R + s t X s t L ( s , X , t ) s t G [ X { s , t } ]G=(V,E)n:ER+stXstL(s,X,t)stG[X{s,t}]

L(s,X,t)={(s,t)if X=minvX (L(s,X{v},v)+(v,t))otherwise

Herhangi bir tepe s , satıcı tur seyahat optimum uzunluğu L(s,V{s},s) . İlk parametre s tüm özyinelemeli aramalarda sabit olduğundan, Θ(2nn) farklı alt sorunlar vardır ve her alt sorun en fazla n kişiye bağlıdır . Böylece, dinamik programlama algoritması O(2nn2) zamanında çalışır.

Yoksa öyle mi ?!

Standart tamsayı RAM modeli, bitleri ile tamsayıların sabit zamanlı manipülasyonuna izin verir , ancak en azından aritmetik ve mantıksal işlemler için, daha büyük tamsayıların kelime boyutlu parçalara bölünmesi gerekir. (Aksi takdirde garip şeyler olabilir.) Bu, daha uzun bellek adreslerine erişim için de geçerli değil mi? Bir algoritma süperpolinomyal alan kullanıyorsa, bellek erişimlerinin sadece sabit bir süre gerektirdiğini varsaymak mantıklı mıdır?O(logn)

Özellikle Bellman-Held-Karp algoritması, algoritma alt küme tanımı dönüştürmek gerekir X alt-kümesi açıklaması içine X{v} , her biri için v , sırayla erişim memoization tablo. Alt kümeler tamsayılarla temsil ediliyorsa, bu tamsayılar n bit gerektirir ve bu nedenle sabit zamanda değiştirilemez; tamsayılarla temsil edilmiyorsa, temsilleri doğrudan not tablosunda bir dizin olarak kullanılamaz.

Peki: Bellman-Held-Karp algoritmasının asimtotik çalışma süresi nedir?


"Tuhaf şeyler" bağlantınız koptu.
Tyson Williams

Bağlantıyı düzelttim.
Jeffε

Yanıtlar:


12

Bu daha az bir felsefi olandan matematiksel cevabın, ama bilinmediğini bit bazı sayı B ile tamsayılar sürekli zamanlı manipülasyon sağlayan bir RAM modelinin düşünmeyi tercih ama en azından kadar büyük , nerede S algoritmanın gerektirdiği alan miktarıdır. Çünkü eğer tamsayılar o kadar büyük olmasaydı, hafızanıza nasıl hitap edebilirdiniz? Polinom zaman ve uzay algoritmaları için O (log n) bitleri ile aynıdır, ancak üstel uzay algoritmaları için problemden kaçınır.log2S

Elbette, S gerçekten sahip olduğunuz bellek miktarını aşarsa, algoritmanız hiç çalışmaz. Ya da, belleğe ve belleğe bilgi girerek çalışır ve RAM modeli yerine bir bellek hiyerarşi modeli kullanmanız gerekir.


Makine modelinin giriş boyutuna bağlı olması gerektiği fikrine alışkınım , ancak makine modelinin algoritmaya bağlı olmasına izin vermede biraz sakat bir şey var. Zaten üstel alan kullandığınız sürece, makinenizin PSPACE'deki herhangi bir sorunu sabit zamanda çözmesine gerçekten izin vermek istiyor musunuz? n
Jeffε

3
Bana göre bu, modelin algoritmaya bağlı olarak değişmesini sağlamaktan daha az, daha çok sabit olan ancak tüm algoritmaları çalıştıramayan bir modele sahip olmanın bir sorusudur (çünkü yer kalmaz). Bu gerçek bilgisayarlardan bana çok farklı gelmiyor.
David Eppstein

1
David'in cevabı konusunda ikna olmadım. Burada iki konu var. Biri teorik, diğeri pratik. Teorik ortamda model hakkında kesin olmak ve çalışma süresini uygun şekilde analiz etmek daha doğaldır. Pratik ortamda, kişinin yapabileceği (ve kısmi not vb.) Çeşitli optimizasyonlar nedeniyle herhangi bir örnekte gerçekten bellek tükenip tükenmeyeceğini bilmek kolay değildir, ancak algoritmayı uygularken uğraşmak zorundayız kümeleri nasıl sakladığımızı ve dizine nasıl eklediğimizi. Yukarıdaki model bu konuda yardımcı olmuyor.
Chandra Chekuri

8

Fedor V.Fomin ve Dieter Kratsch " Tam Üstel Algoritmalar " tarafından birim kitaplı RAM modelinde ve günlük maliyetli RAM modelinde ( - maksimum mesafe şehirde arasında f ( n ) = O * ( g ( n ) ) eğer f ( n ) = O ( g ( n ) p O l y ( n ) ) ):Wf(n)=O(g(n))f(n)=O(g(n)poly(n))

ve 2 n logW n O ( 1 ) (not, 2 n logW n O ( 1 ) O ( 2 n )).O(2n)2nlogWnO(1)2nlogWnO(1)O(2n)


1
Böylece polinom faktörünü gizleyerek sorunu atlatıyorlar. Polinom faktörünün ne olduğunu bilmek istiyorum!
Jeffε

3
Polinom faktörünün olduğunu varsayarlar (yorumumdaki bağlantıya bakın). n2
Oleksandr Bondarenko
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.