Чи відомі алгоритми для наступної проблеми, яка перемагає наївний алгоритм?
Вхідні дані : Система х ≤ б з т лінійних нерівностей.
Вихід: можливе рішення якщо таке існує.
Припустимо, що і b мають цілі записи. Мене цікавлять найгірші межі.
Чи відомі алгоритми для наступної проблеми, яка перемагає наївний алгоритм?
Вхідні дані : Система х ≤ б з т лінійних нерівностей.
Вихід: можливе рішення якщо таке існує.
Припустимо, що і b мають цілі записи. Мене цікавлять найгірші межі.
Відповіді:
Якщо є надлінійним, такий алгоритм спростує гіпотезу сильного експоненціального часу, оскільки формули у сполучній нормальній формі є особливим випадком програмування 0-1, а лемма розщеплення дозволяє зменшити k -SAT до CNF-SAT на лінійно багато пунктів .
Однак існує алгоритм завдяки Імпальязцо, Патурі та мені, який може вирішити таку систему нерівностей, якщо число проводів, тобто кількість ненульових коефіцієнтів в , лінійне. Зокрема, якщо кількість проводів c n , алгоритм працює в часі 2 ( 1 - s ) n , де s = 1 .
Якщо досить малий, ви можете зробити краще, ніж наївний алгоритм, тобто краще, ніж у 2 n рази. Тут "досить малий" означає, що m менше, ніж щось на зразок n / lg n . Час роботи все ще буде експоненціальним - наприклад, це може бути 2 n / 2 рази - але це буде швидше, ніж алгоритм наївності.
Між іншим, схоже, що це дозволяє нам вирішити задачу швидше, ніж за у деяких випадках, коли матриця A має надлінійну кількість записів. Я не знаю, як це визначити за допомогою іншої відповіді, наданої тут. Отже, ви повинні уважно перевірити мою відповідь: це може означати, що я десь зробив серйозну помилку.
Основний підхід: запишіть , де x 0 містить перші n / 2 компоненти x і x 1 містить останні n / 2 компоненти; і аналогічно A = ( A 0 , A 1 ) , де A 0 має лівий n / 2 стовпців A і A 1 правий n стовпчики. Тепер A x ≤ b можна переписати у форму
або рівнозначно,
Перерахуємо всі можливості для A 0 x 0 , і нехай S позначає набір можливих значень, тобто
Аналогічно перерахуйте множину усіх 2 n / 2 можливостей для b - A 1 x 1 , тобто
Тепер проблема стає
Враховуючи множини розміром 2 n / 2 , чи існують s ∈ S і t ∈ T такі, що s ≤ t ?
(Тут взято по точці, тобто нам потрібно, щоб s i ≤ t i для всіх i .)
Остання проблема обговорюється на CS.StackExchange , і, мабуть, існує алгоритм для неї, який працює в часі . Якщо m досить малий (скажімо, менший n / lg n ), то з цього випливає, що загальний час роботи буде менше 2 n , як бажано.