Використання лямбда-числення для отримання часової складності?


43

Чи є якісь переваги для обчислення складності в часі алгоритму з використанням лямбда-числення? Або існує інша система, призначена для цього?

Будь-які посилання будуть вдячні.

Відповіді:


22

Охад цілком правильний щодо проблем, з якими обчислюється лямбда, як основа для розмови про класи складності. Було проведено досить багато роботи щодо характеристики складності скорочуваності в обчисленні лямбда, особливо навколо роботи над маркуванням та оптимальних скорочень з докторської дисертації Леві. Взагалі кажучи, хороші моделі витрат для обчислення лямбда не повинні призначати постійну вагу всім скороченням бета-версії: інтуїтивно, заміщення великої підтерміни на багато, по-різному розміщених місць повинно коштувати дорожче, ніж укладання невеликого перенастроювання K, і якщо ви бажаєте певної суми інваріантності витрат за різних стратегій перезапису, це стає суттєвим.

Два посилання:

  1. Lawall & Mairson, 1996, Оптимальність та неефективність: що не є вартісною моделлю обчислення лямбда? (.ps.gz) - Семінарне опитування питань, що залежать від вибору вартісної моделі, і чому багато правдоподібних ідей не спрацьовують.
  2. Dal Lago & Martini, 2008, слабке обчислення лямбда як розумна машина - пропонує модель витрат для обчислення лямбда за вартістю за викликом, а також хороше обговорення літератури.

1
Цікаві посилання, я не знав про ці твори.
Іддо Цамарет

1
Нещодавно ситуація з цієї теми змінилася. Дивіться мою відповідь нижче.
Марк

23

λλ

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

Можливо, представником цього проекту є: Ян Гофман, Мартін Гофманн. Аналіз амортизованих ресурсів з поліноміальним потенціалом - статичне виведення поліноміальних зв'язків для функціональних програм. У працях 19-го Європейського симпозіуму з програмування (ESOP'10). посилання



18

Існує дуже цікавий напрямок роботи, заснований на лінійній логіці, який називається теорією імпліцитної складності, який характеризує різні класи складності шляхом накладення дисциплін різного типу на обчислення лямбда. IIRC, ця робота почалася, коли Беллантоні та Кук, і Лейван розгадав, як використовувати систему типів для прив'язки примітивної рекурсії для захоплення різних класів складності.

Загалом, привабливість до роботи з лямбда-калькуляторами полягає в тому, що іноді можна знайти більш розширені (тобто, більш математично простежувані) характеристики різних інтенсивних особливостей, які надають таким моделям, як машини Тьюрінга. Наприклад, одна відмінність між машинами Тьюрінга і чистим обчисленням лямбда полягає в тому, що оскільки Тьюрінг отримує коди програм, клієнт може вручну реалізувати тайм-аути, реалізовувати дотаулінг - і, отже, може обчислювати паралельно-або. Однак тайм-аути також можуть бути модельовані метрично, і Ескардо здогадався (я не знаю його статусу), що метричні просторові моделі обчислення лямбда є повністю абстрактними для PCF + таймаутів. Метричні простори - це дуже добре вивчені математичні об'єкти, і дуже приємно мати можливість використовувати цей теоретичний комплекс.

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


12

Наскільки я знаю, лямбда-обчислення для цієї мети погано підходить, оскільки поняття часу / простору складно сформулювати в обчисленні лямбда.

Що таке 1 одиниця часової складності? Бета-зниження? А як щодо одиниць складності простору? Довжина струни?

Обчислення лямбда більше підходить для абстрактного маніпулювання алгоритмами, оскільки воно набагато легше компонувати, ніж машини Тьюрінга.


7

Ви також можете шукати обчислення явних підстановок, які розбивають мета-рівень заміни лямбда-числення на ряд явних кроків зменшення. Це стосується моменту Чарльза, що всі заміни не слід вважати однаковими при розгляді складності часу.


7

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.