Сошников Дмитрий Валерьевич к.ф.-м.н., доцент dmitryso@microsoft.com Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.

Презентация:



Advertisements
Похожие презентации
1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления. Будем задавать функции с помощью «лямбда-выражений», которые будем.
Advertisements

Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
1 Кубенский А.А. Функциональное программирование. Глава 3. Стили функционального программирования. Глава 3. Стили функционального программирования 3.1.
1 Кубенский А.А. Функциональное программирование. Глава 6. Введение в редукцию графов. Глава 6. Введение в редукцию графов 6.1. Представление лямбда-выражений.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Определение функций Функциональное программирование Григорьева И.В.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования.
1 Кубенский А.А. Функциональное программирование. Глава 2. Средства функционального программирования Ленивые вычисления Рассмотрим выражение, содержащее.
Решение уравнений, сводящихся к линейным.. Что называется корнем уравнения? Является ли число 2 корнем уравнения х 3 - х = 6?Что называется корнем уравнения?
1 Кубенский А.А. Функциональное программирование. Глава 7. Комбинаторная редукция. Глава 7. Комбинаторная редукция Задача: избавиться от имен переменных.
Использование математических функций Microsoft Excel Встроенные функции.
МКОУ СОШ 2 с УИОП им. Н. Д. Рязанцева г. Семилуки Применение тождественных преобразований к решению задач на вычисление значений выражения Выступление.
Нормальные формы ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекция 6 Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ,
Лекция 5 Метод максимального правдоподобия. ММП позволяет получить по крайней мере асимптотически несмещенные и эффективные оценки параметров распределения.
МЕТОДЫ ОПТИМИЗАЦИИ § 1. Основные понятия. Под оптимизацией понимают процесс выбора наилучшего варианта из всех возможных В процессе решения задачи оптимизации.
ФУНКЦИИ БОЛЕЕ ВЫСОКОГО ПОРЯДКА Функциональное программирование Григорьева И.В.
КРАТНЫЕ ИНТЕГРАЛЫ Как известно, интегрирование является процессом суммирования. Однако суммирование может производится неоднократно, что приводит нас к.
Переменная - это величина, которая имеет имя, тип и значение. Значение переменной может меняться во время выполнения программы. В компьютерах каждая переменная.
Транксрипт:

Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический институт

2 Лекция 15 Нормальный и аппликативный порядок редукции. Теорема Чёрча-Россера

©2008 Сошников Д.В. 3 Рассмотрим выражение: (λx.λy.y) ((λz.z z) (λz.z z)) (λx.λy.y) ((λz.z z) (λz.z z)) λy.y (λx.λy.y) ((λz.z z) (λz.z z)) (λx.λy.y) ((λz.z z) (λz.z z)) (λx.λy.y) ((λz.z z) (λz.z z)) … Первый порядок редукции соответствует случаю, когда аргумент функции не вычисляется до того момента, когда он действительно понадобится. Это называется вызовом по имени (или по текстовой замене), и соответствует ленивым вычислениям. Во втором случае аргумент вычисляется первым. Это – вызов по значению.

©2008 Сошников Д.В. 4 Самый левый (правый) редекс – символ λ которого находится самым левым (правым) в выражении Самый внешний редекс – не содержится внутри никакого другого редиска Самый внутренний редекс – не содержит в себе никакого другого редиска * - рефлексивно-транзитивное замыкание операции редукции

©2008 Сошников Д.В. 5 (λx.λy.y) ((λz.z z) (λz.z z)) Внутренний редекс Внешний редекс

©2008 Сошников Д.В. 6 Аппликативный порядок (АПР) – сначала преобразуется самый левый из самых внутренних редексов Соответствует энергичным вычислениям Более эффективен в машинной реализации Нормальный порядок (НПР) – сначала преобразуется самый левый из самых внешних редексов Соответствует ленивым вычислениям При реализации «в лоб» вычисляет выражения повторно

©2008 Сошников Д.В. 7 (λx.x+x)(2+3) АПР: (λx.x+x) НПР: (2+3)+(2+3) 5+(2+3) При НПР одни и те же выражения могут вычисляться повторно (эффект разделения) Для устранения этого недостатка используют различные техники: Мемоизация, вычисление с контекстом Редукция графов с циклическими ссылками

©2008 Сошников Д.В. 8 (λx.x+x)(2+3) x+x, где x=2+3 5+x, где x=

©2008 Сошников Д.В. 9 (λx.E1)E2 Вычисляем E2, подставляем результат в E1 Соответствует АПР Вызов по значению (энергичные вычисления) НПР без замены переменных для устранения конфликта имен Вызов по текстовой замене НПР с обходом конфликта имен с помощью переименования, но с повторным вычислением выражения Вызов по имени Вызов по имени + мемоизация В функциональных языках без побочных эффектов эквивалентен вызову по имени Вызов по необходимости (ленивые вычисления)

©2008 Сошников Д.В. 10 Редукция заканчивается, когда в выражении больше нет редексов Такая форма выражения называется нормальной формой Два выражения называются α-эквивалентными ( ), если они эквивалентны с точностью до α-преобразования (имен переменных) Два выражения называются α-эквивалентными ( ), если они эквивалентны с точностью до α-преобразования (имен переменных)

©2008 Сошников Д.В. 11 Если выражение E * E 1 и E * E 2, где E 1,E 2 – нормальные формы, то E 1 E 2 Ромбическое свойство (обобщение) E E1E1 E2E2 N Есть ли противоречие с «зацикливающимся» примером? Если E * E 1 и E * E 2, то N : E 1 * N и E 2 * N В этом случае редукция называется редукцией Черча-Россера ** * *

©2008 Сошников Д.В. 12 Другая формулировка: E 1 * E 2 N : E 1 * N и E 2 * N Из теоремы следует единственность нормальной формы Мораль: Если нам удается получить нормальную форму, то она не зависит от порядка редукции Однако некоторые порядки редукции не позволяют придти к нормальной форме

©2008 Сошников Д.В. 13 Если выражение E имеет нормальную форму N, то применение НПР на каждом этапе приводит к M : N M Использование ленивых вычислений гарантирует вычислимость выражений

©2008 Сошников Д.В. 14 (λx.Ex)A = EA (если x FV(E)) λx.Ex E ( x) f x = g x f = g Экстенсиональность - это выведение равенства функции из равенства значений функции на множестве всех аргументов

©2008 Сошников Д.В. 15 При β-преобразовании возникает проблема конфликта имен Замена переменных с помощью α-преобразования - неэффективна Возможные решения: Не редуцировать выражение до тех пор, пока у функции не будут известны все аргументы λx.((λy.λx.y+x)x) – не редуцируем, ждем аргумента λx.((λy.λx.y+x)x)4 (λy.λx.y+x)4 λx.4+x Избавиться от имен переменных вообще, заменив их номерами

©2008 Сошников Д.В. 16 Избежать проблемы конфликта имен можно, на каждом шаге редуцируя выражения до СЗНФ (а не до НФ) Выражение E находится в СЗНФ, если: E – константа или переменная E = λx.E E = PE 1 E 2 …E n для константной функции P арности k>n

©2008 Сошников Д.В. 17 Для структуры выражения имена переменных несущественны Можно избавиться от переменных, заменив их номером – глубиной связывания Глубина связывания – количество символов λ от начала выражения до указанной переменной Пример: λx.λy.λf.f(λx.x)(x+y) λ.λ.λ.0(λ.0)(2+1) Имена переменных после λ удаляются, подчеркнутые числа означают переменные с соответствующей глубиной связывания λx.λy.λf.f(λx.x)(x+y) 2 1