Алгоритми наближення, що використовуються в точних алгоритмах


11

Алгоритми наближення можуть давати вихід до деякого постійного коефіцієнта. Це трохи менш задоволення, ніж точні алгоритми.

Однак постійні фактори ігноруються в часовій складності.

Тож мені цікаво, чи можливий чи використаний наступний трюк для вирішення якоїсь проблеми :БА

  1. Використовуйте алгоритм наближення, що вирішує задачу щоб отримати рішення в межах постійного коефіцієнта;АS
  2. Використовуйте точний алгоритм, вирішуючи задачу , час виконання якої залежить від ваги але працює до тих пір, поки є правильним рішенням.БSS

Таким чином, наближення є "підпроцедурою" точного алгоритму, а постійний фактор, втрачений на кроці 1, проковтується на кроці 2.


Перехресний переклад з математики SE
sdcvvc

Чи уточнили б ви, що ви маєте на увазі під і вагою S ? БАS
Йосіо Окамото

Це неформально, для конкретності: це проблеми пошуку , A розглядається як проблема оптимізації (тому рішення мають певну вагу), а B A - композиція відносин. А,БАБА
sdcvvc

Відповіді - це збірка. Отже, я думаю, що було б доречнішим зробити вікі спільноти.
Йосіо Окамото

Додавання тегу з великого списку достатньо, не потрібно робити його вікі IMHO спільнотою.
Гопі

Відповіді:


12

Прикладом параметризованої складності є кернелізація задачі про вершину обкладинки з використанням теореми Немгаузера та Троттера.

У задачі про мінімальну вершину кришки нам дають ненаправлений графік G, і нам потрібно знайти кришку вершини G мінімального розміру. Вершинна кришка ненаправленого графа - це підмножина вершин, яка торкається всіх ребер.

Ось точний алгоритм, який використовує апроксимацію на першій фазі.

Фаза 1: Налаштування цілочислової лінійної програми програмування задачі про мінімальну вершину кришки . Відомо (або легко показати), що основним оптимальним рішенням релаксації лінійного програмування є напів інтеграл (тобто кожна координата або 0, 1, або 1/2). Таке основне оптимальне рішення можна знайти за допомогою звичайного алгоритму поліноміального часу для лінійного програмування (або в цьому спеціальному випадку ми можемо сформулювати це як задачу мережевого потоку, тому ми можемо вирішити його комбінаторно в поліноміальний час). Маючи таке основне оптимальне рішення, ми округляємо його для отримання можливого рішення вихідної цілочислової задачі лінійного програмування. Нехай S - відповідна підмножина вершин. Добре зазначити, що S - це 2-наближення даного мінімального екземпляра вершини кришки.

Фаза 2: Знайдіть мінімальну кришку вершини в підграфові, викликаному S (наприклад, вичерпним пошуком). Теорема Немгаузера та Троттера стверджує, що цей підграф містить оптимальне рішення вихідного вхідного графіка. Отже, правильність такого підходу випливає.

Ви можете проконсультуватися з книгою Нідермайєра про алгоритми з фіксованим параметром для цього алгоритму.


11

Один із прикладів стосується розкладу дерев та графіків невеликої ширини.

Як правило, якщо нам задано декомпозицію дерева, досить просто застосувати динамічне програмування для оптимального вирішення заданої задачі графа Час роботи залежить від ширини розкладання дерева.Б

Однак зазвичай нам не дається розкладання дерева, але нам потрібно його знайти. Для того, щоб вирішити проблему так швидко , як це можливо, ми хотіли б знайти розкладання дерева найменшій можливій ширини - тепер це наше завдання .БА

ААААБ


БА

БААБ


Хоча приклад treewidth працює в принципі, це було б важко виконати на практиці, тому що дуже важко наблизити широту ширини взагалі добре (оскільки ви можете наблизити кліку)
Suresh Venkat

8

Прикладом алгоритму наближення, який сходиться до точного рішення, був би алгоритм Еліпсоїда для розв’язання ЛП - якщо коефіцієнти раціональні, то можна обчислити мінімальну відстань між двома вершинами можливого багатогранника. Тепер алгоритм еліпсоїдів багаторазово обчислює менший і менший еліпозоїд, який повинен містити оптимальне рішення. Після того, як еліпозоїд досить малий, щоб містити лише таку одну вершину, ви по суті знайшли оптимальну вершину. Ось чому ЛП є слабополіномом.

к

Нарешті, подальше поле - багато алгоритму, який слідує техніці змін (візьміть випадкову вибірку - а потім зробіть деякі виправлення, щоб отримати те, що ви хочете) потрапляє в таку рамку. Один з приємних прикладів - алгоритм обчислення медіани за допомогою випадкової вибірки (див. Книгу Мотвані та Рагавана). Такого прикладу багато - напевно, багато випадкових рандомізованих алгоритмів нарощування обчислювальної геометрії потрапляє до цього підходу.


4

У багатьох алгоритмах, чутливих до виходу , використовується ця методика. Наприклад, ось проста проблема, щодо якої можна використовувати цю техніку:

Проблема . Вам надається масив A [1 .. n ], у якому кожен елемент знаходиться не менше k позицій від положення, у якому він був би, якби A було відсортовано.

Наприклад, A [1..7], показаний нижче, може бути вхідним масивом для k = 2.

Створіть алгоритм для сортування масиву за часом O ( n log k ), якщо k невідомо.

Джерело проблеми: Архів Algo Muse .

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