Часова складність алгоритму Беллмана-Холд-Карпа для TSP, візьміть 2


16

Нещодавнє запитання обговорювало класичний алгоритм динамічного програмування для TSP, незалежно від Bellman та Held-Karp . Алгоритм повсюдно повідомляється працювати в O(2nn2) часу. Однак, як нещодавно зазначив один з моїх учнів, цей час роботи може зажадати необґрунтовано потужної моделі обчислення.

Ось короткий опис алгоритму. Вхід складається з спрямованого графіка G=(V,E) з n вершинами і функцією невід’ємної довжини :ER+ . Для будь-яких вершин s і t і будь-якого підмножини X вершин, що виключає s і t , нехай L(s,X,t) позначає довжину найкоротшого гамільтонового шляху від s до tв індукованому підграфові G[X{s,t}] . Алгоритм Беллмана-Холда-Карпа заснований на наступному повторенні (або, як економісти та теоретики управління називають його «рівняння Беллмана»):

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

Для будь-якої вершини довжина оптимального туру продавця подорожі становить . Оскільки перший параметр є постійним у всіх рекурсивних викликах, є різні підпрограми, і кожна підпроблема залежить щонайбільше інших. Таким чином, алгоритм динамічного програмування працює в час.L ( s , V { s } , s ) s Θ ( 2 n n ) n O ( 2 n n 2 )sL(s,V{s},s)sΘ(2nn)nO(2nn2)

Або це ?!

Стандартна цілочисельна модель ОЗУ дозволяє маніпулювати цілими числами з бітами , але принаймні для арифметичних та логічних операцій великі цілі числа повинні бути розбиті на шматки розміру слова. (Інакше можуть трапитися дивні речі .) Чи це також не стосується доступу до довших адрес пам'яті? Якщо алгоритм використовує суперполіномічний простір, чи розумно вважати, що для доступу до пам'яті потрібен лише постійний час?O(logn)

Зокрема, для алгоритму Bellman-Held-Karp алгоритм повинен перетворити опис підмножини в опис підмножини для кожного , щоб отримати доступ до таблиці запам'ятовування. Якщо підмножини представлені цілими числами, ці цілі числа потребують біт і тому не можуть бути маніпульовані постійним часом; якщо вони не представлені цілими числами, їх представлення не може використовуватися безпосередньо в якості індексу в таблиці запам'ятовування.X { v } v nXX{v}vn

Отже: Який власне асимптотичний час роботи алгоритму Беллмана-Холд-Карпа?


Посилання "Ваші дивні речі" порушено.
Тайсон Вільямс

Я зафіксував посилання.
Jeffε

Відповіді:


12

Це менше математичної відповіді, ніж філософської, але я вважаю за краще модель RAM, яка дозволяє маніпулювати цілими числами в постійному часі з деяким числом B бітів, яке невідоме, але принаймні таке велике, як , де S - це кількість місця, яке алгоритм вимагає. Тому що, якщо цілі числа не були такими великими, як ви могли навіть звернутися до своєї пам'яті? Для алгоритмів поліноміального часу та простору це те саме, що і біти O (log n), але для експоненціальних алгоритмів простору це дозволяє уникнути проблеми.log2S

Звичайно, якщо S перевищує об'єм пам'яті, який ви насправді маєте, ваш алгоритм взагалі не працюватиме. Або він запуститься шляхом підключення інформації до пам'яті та з неї, і вам слід використовувати модель ієрархії пам'яті замість моделі оперативної пам'яті.


Я звик до думки, що модель машини повинна залежати від вхідного розміру , але є щось трохи химерне, щоб дозволити машинної моделі залежати від алгоритму. Ви дійсно хочете, щоб ваша машина постійно вирішувала будь-яку проблему в PSPACE, поки ви вже використовуєте експоненціальний простір? n
Jeffε

3
Для мене це менше питання про те, щоб змусити модель змінюватись залежно від алгоритму, і більше питання про те, що модель, яка є фіксованою, але не здатною виконувати всі алгоритми (тому що у неї не вистачає місця). Мені це не дуже відрізняється від реальних комп’ютерів.
Девід Еппштейн

1
Я не переконаний у відповіді Девіда. Тут є два питання. Одне - теоретичне, інше - практичне. У теоретичній обстановці більш природним є точність щодо моделі та відповідний аналіз часу роботи. У практичній обстановці непросто дізнатись, чи дійсно не вистачає пам’яті в якомусь конкретному екземплярі через різні оптимізації, які можна зробити (і зробити часткове запам'ятовування тощо), однак при реалізації алгоритму нам доведеться мати справу. як ми зберігаємо набори та індексуємо їх. Наведена вище модель не допомагає в цьому плані.
Чандра Чекурі

8

Про це питання йде мова в недавній книзі Федора В. Фоміна та Дітера Кратча " Точні експоненціальні алгоритми ", де вони визначають час роботи в RAM-одиниці вартості на одиницю вартості та моделі оперативної пам'яті, що має вартість журналу ( - максимальна відстань між містами і f ( n ) = O ( g ( n ) ), якщо f ( n ) = O ( g ( n ) p o l y ( n ) ) ):Wf(n)=O(g(n))f(n)=O(g(n)poly(n))

та 2 n logW n O ( 1 ) (примітка, 2 n logW n O ( 1 ) O ( 2 n )) відповідно.O(2n)2nlogWnO(1)2nlogWnO(1)O(2n)


1
Таким чином вони ухиляються від проблеми, приховуючи поліноміальний фактор. Хочу знати, що таке поліноміальний фактор!
Jeffε

3
Вони припускають, що коефіцієнт многочлена дорівнює (див. Посилання в моєму коментарі). n2
Олександр Бондаренко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.