Если вы предполагаете, что калькуляция является хорошей моделью функциональных языков программирования, то можно подумать: λ- калькуляция имеет, казалось бы, простое понятие сложности времени: просто посчитайте количество шагов β- редукции ( λ x . M ) N → M [ N / x ] .λλβ(λx.M)N→M[N/x]
Но это хорошая мера сложности?
Чтобы ответить на этот вопрос, мы должны уточнить, что мы подразумеваем под мерой сложности в первую очередь. Один хороший ответ дает тезис Слота и Ван Эмде Боаса : любая хорошая мера сложности должна иметь полиномиальное отношение к каноническому понятию сложности времени, определенному с помощью машин Тьюринга. Другими словами, должна быть «разумная» кодировка Из терминов λ- исчисления в машины Тьюринга, например, для некоторого полинома p , это случай, когда для каждого члена M размера | М | : M сводится к значению в p ( | M |tr(.)λpM|M|Mβ- уменьшение шагов точно, когда t r ( M ) уменьшается до значения в p ( | t r ( M ) | ) шагов машины Тьюринга.p(|M|) βtr(M)p(|tr(M)|)
Долгое время было неясно, может ли это быть достигнуто в λ-исчислении. Основными проблемами являются следующие.
- Есть термины, которые производят нормальные формы (в полиномиальном количестве шагов), которые имеют экспоненциальный размер. Даже запись нормальных форм занимает экспоненциальное время.
- Выбранная стратегия сокращения играет важную роль. Например, существует семейство терминов, которое уменьшает за полиномиальное число параллельных β-шагов (в смысле оптимального λ-редукции ), но сложность которых не элементарна (то есть хуже, чем экспоненциальная).
Статья Б. Аккаттоли и У. Дала Лаго « Бета-редукция является инвариантной, действительно » проясняет проблему, показывая «разумное» кодирование, которое сохраняет класс сложности P полиномиальных функций времени, предполагая, что крайние слева-крайние сокращения вызовов по имени , Ключевым моментом является то, что экспоненциальный взрыв может произойти только по «неинтересным» причинам, которые могут быть побеждены надлежащим обменом. Другими словами, класс P один и тот же, независимо от того, определяете ли вы его, считая шаги машины Тьюринга или (крайний левый-крайний) сокращения.β
Я не уверен, что ситуация для других стратегий оценки. Я не знаю, что подобная программа была выполнена для космической сложности.