Визначення алгоритму, що працює в поліноміальний час і в сильно поліноміальний час


18

Вікіпедія визначає, якою вона є

Кажуть, що алгоритм має поліноміальний час, якщо його час роботи верхній межами виражається поліномом у розмірі входу для алгоритму, тобто для деякої постійної k.Т(н)=О(нк)

Алгоритм працює в сильно поліноміальний час, якщо [8]

  • кількість операцій в арифметичній моделі обчислення обмежена поліномом у кількості цілих чисел у вхідному екземплярі; і

  • простір, що використовується алгоритмом, обмежений поліномом розміру вхідного сигналу.

У Бернарда Корте, Йенса Вигена, комбінаторна оптимізація :

Визначення 1.4.

Кажуть, що алгоритм з раціональним введенням запускається в поліноміальний час, якщо

  • є ціле число k таке, що воно працює в час, де n - розмір вводу, іО(нк)
  • всі числа в проміжних обчисленнях можуть зберігатися з бітами .О(нк)

Кажуть, що алгоритм з довільним введенням працює в сильно поліноміальний час, якщо

  • існує ціле число k таке, що воно працює в час для будь-якого введення, що складається з n чисел іО(нк)
  • він працює в поліном час для раціонального введення.

Будь ласка, виправте мене, якщо я помиляюся. Нижче перелічені буквальні відмінності, які я помітив:

  • Для алгоритмів поліноміального часу визначення Корте та Вигена - це визначення Вікіпедії + поліноміальний простір зберігання.

  • Для сильно поліноміальних часових алгоритмів визначення Корте та Вигена та визначення Вікіпедії вимагають часу полінома у розмірі вхідного сховища. Але K і V додатково вимагає поліноміального часу в кількості чисел на будь-якому вході, тоді як Вікіпедія додатково вимагає поліноміального простору для зберігання у розмірі вводу.

Тож, значення K та V та Wikipedia для цих двох понять рівнозначні відповідно? Які ще відмінності та відносини між ними?

Дякую та з повагою!


розділ Вікіпедії відразу після defn має досить хороше пояснення, хіба це недостатньо ясно? це стосується того, скільки біт представляють числа, і дуже великі числа можуть впливати на вимірювання складності "вгору". думаю, що дефни з K&V є еквівалентом "майже". що стосується раціональних входів, потрібен доказ того, що арифметика на раціональних ресурсах не збільшує їх розмір в значній мірі. думаю, це можна показати, знайшовши РК-дисплеї всіх входів і виконавши всю арифметичну цифру в ЖК-дисплеї.
vzn

@vzn: пояснення у Вікіпедії (1) є пристойним для арифметичної та машини Тьюрінга, але є досить дрібним щодо сильно-полі мети та визначення, і (2) було абсолютно помилковим у тому, що є прикладом GCD.
alexei

Відповіді:


5

Перед офіційними визначеннями розглянемо, що має на меті виділити класифікацію "сильно / слабко".

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

О(1)

Набір алгоритмів, що виконуються за кількістю полінома арифметичних операцій у кількості вхідних чисел, добре визначений, але перегукується з класом алгоритмів, що приймають кількість ступенів ТМ, експоненціальних по довжині вхідного кодування, що кодується бінарними ознаками (див. Приклади ). Отже, для цього набору властивості другого абзацу не матимуть значення. Для виключення небажаного перетину додаємо умову для поліноміального простору ТМ [*].

У [1] це зазначено двома способами:

  • Алгоритм працює в сильно поліноміальний час, якщо алгоритм є алгоритмом поліноміоального простору і виконує ряд елементарних арифметичних операцій, які обмежені поліномом у кількості вхідних чисел.
  • Поліноміальний алгоритм - це алгоритм поліноміального простору (у нашій стандартній моделі машини Тьюрінга) та алгоритм поліноміального часу в арифметичній моделі ( для уточнення див. Це питання ).

О(н3)О(н2)

[*] Друга умова скрізь викладена як поліноміальний простір, тоді як вимагає поліноміального часу має більше сенсу для мене. Перший - більш інклюзивний, але дивний. Чи існують сильнополіноміальні алгоритми, які займають більше, ніж поліноміальний час? Зауважимо, що приклад повторного квадратування не займає ані поліноміального часу, ані поліноміального простору.

[1] Grötschel, Martin; Ласло Ловаш, Олександр Шрівер (1988). "Складність, оракули та числові обчислення". Геометричні алгоритми та комбінаторна оптимізація. Спрингер. ISBN 0-387-13624-X.

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