Є два основні відповіді на ваше запитання:
Існує більше теорія складності, ніж мови, наприклад, класи функцій, арифметична складність та підрайон алгоритмів наближення та непереборності.
Історичні причини: Однією з основних робіт у теорії обчислюваності було обговорення проблеми Енштайдунґс Гільберта (форма проблеми зупинки).
На жаль, я не знаю багато про останнє, але дозвольте розширити перший.
Складність поза мовами
Кожен клас складності обчислювальної техніки має асоційований клас функцій . Наприклад, клас P усіх задач, що вирішуються в поліноміальний час, асоціюється з FP, класом всіх функцій, які можна обчислити в поліноміальний час. FP має важливе значення , так як він використовується для визначення NP-твердість: мова є NP-важкою , якщо для кожної мови в НП є функція в FP , такі , що тоді і тільки тоді . Інший клас складності функцій, #P , пов'язаний з так званою поліноміальною ієрархією через теорему Тоди .M f M x ∈ M f M ( x ) ∈ LLMfMx∈MfM(x)∈L
Арифметична складність ланцюга (або алгебраїчна теорія складності ) має справу зі складністю обчислення різних многочленів. Тут важливі класи складності - VP і VNP, і теорія геометричної складності є важливим проектом, що намагається розділити VP і VNP (а пізніше P і NP) з використанням алгебраїчної геометрії та теорії представлення.
Ще одним важливим прикладом алгебраїчної складності є швидке множення матриць. Тут основне питання полягає в тому, наскільки швидко ми можемо помножити дві матриці ? Подібні запитання задають питання, наскільки швидко ми можемо множити цілі числа, наскільки швидко ми можемо перевірити цілі числа на первинність (це проблема рішення!) І як швидко ми можемо множити цілі числа.
Опукла оптимізація стосується проблем оптимізації, які можна ефективно (або майже вирішити). Прикладами є лінійне програмування та напіввизначене програмування, обидва з яких мають ефективні алгоритми. Тут нас цікавлять і оптимальне, і саме оптимальне рішення. Оскільки часто існує більше одного оптимального рішення, обчислення оптимального рішення недостатньо представлене як проблема вирішення.
Наближеність - це область, яка вивчає, наскільки гарне наближення ми можемо отримати для задачі оптимізації в поліноміальний час. Розглянемо для прикладу класичну проблему Set Cover: з урахуванням колекції наборів, скільки з них нам потрібно, щоб охопити весь Всесвіт? Знайти оптимальне число НП важко, але, можливо, можна обчислити наближення? Алгоритми наближення - це підрайони, що вивчають алгоритми обчислення наближень, тоді як непридатність вивчає межі алгоритмів наближення. У конкретному випадку Set Cover, у нас є алгоритм, що дає наближення (жадібний алгоритм), і це важко зробити NP.lnn