- •51.Программирование машины Тьюринга
- •52. Машина Поста
- •53. Понятие нормального алгоритма
- •54. Алфавит и схема алгоритма.
- •55.Понятие лямбда-исчисления.
- •56. Операции лямбда-исчисления.
- •57. Чистое лямбда-исчисление.
- •58. Проблемы алгоритмической разрешимости.
- •59. Теоретически закрытые и теоретически открытые задачи.
- •60. Классификация задач по сложности.
55.Понятие лямбда-исчисления.
Ля́мбда-исчисле́ние (λ-исчисление) — формальная система, разработанная американским математиком Алонзо Чёрчем, для формализации и анализа понятия вычислимости.
λ-исчисление может рассматриваться как семейство прототипных языков программирования. Их основная особенность состоит в том, что они являются языками высших порядков. Тем самым обеспечивается систематический подход к исследованию операторов, аргументами которых могут быть другие операторы, а значением также может быть оператор. Языки в этом семействе являются функциональными, поскольку они основаны на представлении о функции или операторе, включая функциональную аппликацию и функциональную абстракцию. λ-исчисление реализовано Джоном Маккарти в языке Лисп. Вначале реализация идеи λ-исчисления была весьма громоздкой. Но по мере развития Лисп-технологии (прошедшей этап аппаратной реализации в виде Лисп-машины) идеи получили ясную и четкую реализацию.
56. Операции лямбда-исчисления.
Аппликация и абстракция
В основу λ-исчисления положены две фундаментальные операции:
Аппликация (лат. application — прикладывание, присоединение) означает применение или вызов функции по отношению к заданному значению. Её обычно обозначают
,
где
—
функция, а
—
аргумент. Это соответствует общепринятой
в математике записи
,
которая тоже иногда используется,
однако для λ-исчисления важно то,
что
трактуется
как алгоритм,
вычисляющий результат по заданному
входному значению. В этом смысле
аппликация
к
может
рассматриваться двояко: как результат
применения
к
,
или же как процесс вычисления
.
Последняя интерпретация аппликации
связана с понятием β-редукции.Абстракция или λ-абстракция (лат. abstraction — отвлечение, отделение) в свою очередь строит функции по заданным выражениям. Именно, если
—
выражение,свободно содержащее
,
тогда запись
означает:
функция
от аргумента
,
которая имеет вид
,
обозначает функцию
.
Таким образом, с помощьюабстракции можно
конструировать новые функции. Требование,
чтобы
свободно
входило в
,
не очень существенно — достаточно
предположить, что
,
если это не так.
β-редукция
Поскольку
выражение
обозначает
функцию, ставящую в соответствие
каждому
значение
,
то для вычисления выражения
,
в
которое входят и аппликация и абстракция,
необходимо выполнить подстановку числа
3 в терм
вместо
переменной
.
В результате получается
.
Это соображение в общем виде записывается
как
и
носит название β-редукция.
Выражение вида
,
то есть применение абстракции к некому
терму, называется редексом (redex).
Несмотря на то, что β-редукция по сути
является единственной
«существенной» аксиомой λ-исчисления,
она приводит к весьма содержательной
и сложной теории. Вместе с ней λ-исчисление
обладает свойством полноты
по Тьюрингу и,
следовательно, представляет собой
простейший язык
программирования.
57. Чистое лямбда-исчисление.
Чистое λ-исчисление
Это простейший из семейства прототипных языков программирования, чистое λ-исчисление, термы которого, называемые также объектами («обами»), или λ-термами, построены исключительно из переменных применением аппликации и абстракции. Изначально наличие каких-либо констант не предполагается.
