Навіщо використовувати мови в теорії складності


10

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

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

Чому все зосереджене на понятті та визначенні МОВ (тобто звичайні мови та вільні від контексту мови)? І як вони співвідносять і описують складність алгоритму та можливі обчислювальні моделі їх вирішення?

Я читав такі пов'язані питання:

але все ще не маю відповіді на мої сумніви, оскільки вони дають практичне обґрунтування того, чому вони важливі (що я розумію), але не допомагають мені зрозуміти, чому на них базується теорія складності.


1
Чи це не стосується наших довідкових питань ?
Рафаель

@Raphael - Дякую, що вказали мені на це питання, це чудова довідка! Я зараз читаю це, але наразі вважаю, що це може бути доповненням до питання cs.stackexchange.com/questions/13669/… . Мені не здається, що на нього вже відповіли, будь ласка, дайте мені знати, якщо ви худнете інакше
Маттео

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

Відповіді:


10

Це тому, що мови є найкращим (єдиним?) Способом формалізації поняття "проблема".

Алгоритм (машина Тьюрінга) має продуктивність, яку ми виражаємо за допомогою складності big-O. Проблема (мова) належить до класу складності. Зазвичай вони визначаються існуванням: якщо існує машина, яка приймає мову який працює в заданій продуктивності (просторі чи часі), то мова належить до відповідного класу складності.L

Для цього є кілька причин. По-перше, це те, що мови не залежать від платформи. Ви не турбуєтесь про те, чи є ціле число 32 або 64 біта, чи операції з плаваючою комою виконуються паралельно з іншими операціями. Ці речі забезпечують швидкість роботи на мікрорівні, проте аналіз складності цікавить макрорівень. Коли ви масштабуєте від 100 до до до , як змінюється продуктивність алгоритму? Чи йде від використання 1 мільйона стрічкових комірок до 1 мільярда, або від 1 мільйона до більше клітин, ніж є атоми у Всесвіті?10 9 10 121061091012

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

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

Я здогадуюсь перед вашим завданням: знайти спосіб математично описати проблеми, які не є мовами. Я не знаю, чи є мови особливими, але я думаю, що вони найпростіший інструмент, який ми маємо, найпростішим для вирішення.


7
Мови, безумовно, не єдиний спосіб формулювання проблем. Наприклад, ви можете формалізувати щось на зразок хроматичного числа як функцію від графіків до натуральних чисел. Насправді, над проблемою функціонування та оптимізації досить багато роботи.
Девід Річербі

2
Правда, але як би ви вирішили складність обчислення хроматичного числа без якогось поняття мови чи машини?
jmite

1
Дякую за вашу відповідь, я розумію. Однак у мене все ще є 2 питання: 1) чи не вплине факт, що ми використовуємо мови, на результати складності чи вирішення проблеми? тобто чи може бути вирішена проблема в арифметиці з плаваючою комою, але не в цілій арифметиці (тобто цілому програмуванні)? 2) Як ми робимо це відображення з будь-якого типу даних на унікальну мову, яка описує їх усі (оскільки ми хочемо оцінити складність проблеми та абстрагуватись із конкретного введення)? Знову дякую!
Маттео

3
@jmite Вам потрібна машина, так, але не обов'язково мова.
Рафаель

2
@Raphael багато класів складності, які зазвичай визначаються з точки зору часу роботи машин, можна охарактеризувати з точки зору описової складності.
Сашо Ніколов

7

Є два основні відповіді на ваше запитання:

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

  2. Історичні причини: Однією з основних робіт у теорії обчислюваності було обговорення проблеми Енштайдунґс Гільберта (форма проблеми зупинки).

На жаль, я не знаю багато про останнє, але дозвольте розширити перший.

Складність поза мовами

Кожен клас складності обчислювальної техніки має асоційований клас функцій . Наприклад, клас P усіх задач, що вирішуються в поліноміальний час, асоціюється з FP, класом всіх функцій, які можна обчислити в поліноміальний час. FP має важливе значення , так як він використовується для визначення NP-твердість: мова є NP-важкою , якщо для кожної мови в НП є функція в FP , такі , що тоді і тільки тоді . Інший клас складності функцій, #P , пов'язаний з так званою поліноміальною ієрархією через теорему Тоди .M f M x M f M ( x ) LLMfMxMfM(x)L

Арифметична складність ланцюга (або алгебраїчна теорія складності ) має справу зі складністю обчислення різних многочленів. Тут важливі класи складності - VP і VNP, і теорія геометричної складності є важливим проектом, що намагається розділити VP і VNP (а пізніше P і NP) з використанням алгебраїчної геометрії та теорії представлення.

Ще одним важливим прикладом алгебраїчної складності є швидке множення матриць. Тут основне питання полягає в тому, наскільки швидко ми можемо помножити дві матриці ? Подібні запитання задають питання, наскільки швидко ми можемо множити цілі числа, наскільки швидко ми можемо перевірити цілі числа на первинність (це проблема рішення!) І як швидко ми можемо множити цілі числа.

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

Наближеність - це область, яка вивчає, наскільки гарне наближення ми можемо отримати для задачі оптимізації в поліноміальний час. Розглянемо для прикладу класичну проблему Set Cover: з урахуванням колекції наборів, скільки з них нам потрібно, щоб охопити весь Всесвіт? Знайти оптимальне число НП важко, але, можливо, можна обчислити наближення? Алгоритми наближення - це підрайони, що вивчають алгоритми обчислення наближень, тоді як непридатність вивчає межі алгоритмів наближення. У конкретному випадку Set Cover, у нас є алгоритм, що дає наближення (жадібний алгоритм), і це важко зробити NP.lnn


3

Давайте розглянемо це питання з погляду теорії категорій. Проблеми рішення (або мови) потім відповідатимуть об'єктам категорії, а дозволене скорочення між двома проблемами відповідатиме морфізмам (стрілкам) категорії.

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

Поняття про ізоморфні проблеми зазвичай буде грубішим, ніж поняття еквівалентних мов, тобто дві проблеми можуть бути ізоморфними, навіть якщо пов'язані з ними мови не є еквівалентними. Гірше те, що часто існують різні розумні уявлення про дозволені морфізми, які погоджуються лише щодо дозволених ізоморфізмів. Зосередження уваги на мовах дозволяє відкласти подібні проблеми, поки нам не здасться говорити про деякі різні розумні поняття скорочення (наприклад, скорочення Карпа проти зменшення Кука).


Схоже, це не відповідає на питання. Ще можна говорити про морфізми між проблемами, які використовуються в якості об'єктів відповідної категорії.
Девід Річербі

@DavidRicherby Я хотів би сказати, що прибивати відповідні морфізми є складніше, ніж прибивати відповідні об'єкти (= мови). (Тим більше, що зазвичай існує більше ніж одне відповідне поняття про морфізми.) Без морфізмів не можна говорити про ізоморфні проблеми (або алгоритми). Однак мови дають вам змогу все-таки говорити про еквівалентність проблем. Можливо, я не пояснив це належним чином, але (для мене) це вагома причина для "використання мов у теорії складності".
Томас Клімпель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.