Нехай з -термінах бути визначений таким чином :λ
- ,
- ,
- .
Нехай складність -term визначається як кількість паралельних скорочень бета-версії від до нормальної форми (використовуючи оптимальну оцінку в сенсі Леві).
Я шукаю приклад двох нормальних -термінів для тієї ж функції, де більший термін має меншу складність.
...
Редагувати для наочності
оскільки здається, що не очевидно, про що я прошу, спробую навести ґрунтовний приклад. Часто існує думка, що "наївне" / "найпростіше" визначення функції повільне і не оптимальне. Кращі показники підвищують складність терміна, оскільки вам потрібні додані структури даних, формули тощо. Чудовим прикладом є те fibonacci
, що можна «наївно» визначити як:
-- The fixed fibonacci definition
fib_rec fib n =
if (is_zero x)
then 1
else fib (n - 1) + f (n - 2)
-- Using church numbers instead of the λ-combinator to get a normal form
fib n = n fib_rec 0 n
Це часто розглядають як "найпростіше" визначення фіб, і дуже повільне (експоненціальне). Якщо розширити залежності fib
( звичайні визначення для додавання церковних чисел, pred, is_zero) і нормалізувати його, ми отримаємо цей термін:
fib = (λa.(a(λbc.(c(λdef.f)(λde.d)(λde.(de))
(λde.(b(λfg.(c(λhi.(i(hf)))(λh.g)(λh.h)))
d(b(λfg.(c(λhi.(i(h(λjk.(k(jf))))))(λhi.g)
(λh.h)(λh.h)))de)))))(λbc.c)a))
Удосконалення, такі як таблиці запам'ятовування, посилили б цей термін. І все-таки існує інший термін, який набагато менший ...
fib = (λa.(a(λb.(b(λcde.(e(λfg.(cf(dfg)))c))))
(λb.(b(λcd.(cd))(λcd.d)))(λbc.b)))
і, що цікаво, також асимптотично перевершує наївного, що працює O(N)
. З усіх визначень, які мені відомі, це і найшвидший і найпростіший . Такий же ефект відбувається і з сортуванням. "Наївні" визначення, такі як сортування бульбашок та сортування вставок, часто розширюються до величезних термінів (довжина 20+ рядків), але існує невелике визначення:
-- sorts a church list (represented as the fold) of church numbers
sort = λabc.a(λdefg.f(d(λhij.j(λkl.k(λmn.mhi)l)(h(λkl.l)i))
(λhi.i(λjk.bd(jhk))(bd(h(λjk.j(λlm.m)k)c))))e)(λde.e)
(λde.d(λfg.g)e)c
Що також відбувається швидше, асимптотично, ніж будь-яке інше я знаю визначення. Це спостереження приводить мене до думки, що, на відміну від загальноприйнятої думки, найпростіший термін із найменшою складністю Колмогорова, як правило, швидше. Моє питання, в основному, чим раніше є якісь докази протилежного, хоча мені було б важко його формалізувати.