Якщо ви припускаєте, що -рахунок є хорошою моделлю функціональних мов програмування, то можна подумати: λ -калькуляція має, здавалося б, просте поняття про складність у часі: просто порахуйте кількість β -редукційних кроків ( λ x . M ) N → M [ N / x ] .λλβ( λ x . m) N→ М[ N/ х]
Але це хороший захід складності?
Щоб відповісти на це питання, ми повинні уточнити, що ми маємо на увазі в першу чергу під мірою складності. Одну хорошу відповідь дає теза Слота та Ван Емда Боаса : будь-яка міра складності повинна мати поліноміальну залежність від канонічного поняття про складність у часі, визначеного за допомогою машин Тьюрінга. Іншими словами, повинно бути "розумне" кодування Від λ -калькуляційних термінів до машин Тьюрінга, таких як для деякого полінома p , це стосується того, що для кожного терміна M розміру | М | : M зменшується до значення в p ( | M |t r ( . )λpМ| М|Мβ -редукційні кроки саме тоді, коли t r ( M ) зменшується до значення в p ( | t r ( M ) | ) кроків машини Тьюрінга.р ( | М| ) βt r ( M)p ( | t r ( M) | )
Тривалий час було незрозуміло, чи можна цього досягти при λ-обчисленні. Основні проблеми полягають у наступному.
- Існують терміни, що дають нормальні форми (у поліноміальному ступені), які мають експоненціальний розмір. Навіть записування звичайних форм займає експоненціальний час.
- Обрана стратегія скорочення відіграє важливу роль. Наприклад, існує сімейство термінів, яке зменшує на поліноміальну кількість паралельних β-ступенів (у значенні оптимального λ-скорочення ), але складність яких неелементарна (тобто гірше, ніж експоненціальна).
β
Я не впевнений, яка ситуація в інших стратегіях оцінки. Мені не відомо, що подібну програму проводили за складністю простору.