Jump to content

Сокращение графа

В информатике при сокращение графа реализует эффективную версию нестрогой оценки, стратегию оценки, которой аргументы функции не оцениваются немедленно. Эта форма нестрогой оценки также известна как ленивая оценка и используется в языках функционального программирования . Эту технику впервые разработал Крис Уодсворт в 1971 году.

Мотивация

[ редактировать ]

Ниже приведен простой пример вычисления арифметического выражения:

Вышеупомянутая последовательность сокращения использует стратегию, известную как сокращение внешнего дерева . То же выражение можно вычислить с помощью сокращения внутреннего дерева , что даст последовательность сокращения:

Обратите внимание, что порядок сокращения определяется добавлением круглых скобок. Это выражение также можно было бы просто вычислить справа налево, поскольку сложение — это ассоциативная операция.

Представленное в виде дерева выражение выше выглядит следующим образом:

Отсюда и появился термин «сокращение деревьев». Если представить его в виде дерева, мы можем представить себе, что самая внутренняя редукция работает снизу вверх, а самая внешняя — сверху вниз.

Выражение также можно представить в виде направленного ациклического графа , позволяющего совместно использовать подвыражения:

Что касается деревьев, то к графам также применима внешняя и самая внутренняя редукция. Следовательно, мы имеем сокращение графа .

Теперь оценка с внешним сокращением графа может выполняться следующим образом:

Обратите внимание, что оценка теперь требует всего четырех шагов. Сокращение внешнего графа называется ленивым вычислением , а сокращение самого внутреннего графа называется нетерпеливым вычислением .

Сокращение графа комбинатора

[ редактировать ]

Сокращение графа комбинатора - это фундаментальный метод реализации языков функционального программирования , в котором программа преобразуется в представление комбинатора , которое отображается в ориентированного графа структуру данных в памяти компьютера, а выполнение программы затем состоит из перезаписи частей этого графа («сокращение «это), чтобы двигаться к полезным результатам.

Концепция сокращения графа, позволяющая обмениваться оцененными значениями, была впервые разработана Крисом Уодсвортом в его докторской диссертации 1971 года. диссертация. [1] Эту диссертацию цитировали Питер Хендерсон и Джеймс Х. Моррис-младший в статье 1976 года «Ленивый оценщик». [2] это ввело понятие ленивых вычислений. В 1976 году Дэвид Тернер включил ленивые вычисления в SASL с помощью комбинаторов. [3] SASL — ранний язык функционального программирования, разработанный Тернером в 1972 году.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Худак, Пол (сентябрь 1989 г.). «Концепция, эволюция и применение языков функционального программирования». ACM Обзоры вычислительной техники . 21 (3): 359–411. CiteSeerX   10.1.1.83.6505 . дои : 10.1145/72551.72554 .
  2. ^ Ленивый оценщик
  3. ^ Худак, Пол; Хьюз, Джон; Пейтон Джонс, Саймон; Уодлер, Филип. «История Haskell: лень с классами» . Конференция «История языков программирования 2007» .
  • Берд, Ричард (1998). Введение в функциональное программирование с использованием Haskell . Прентис Холл. ISBN  0-13-484346-0 .

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8a0c115e273cc7e813d840d2ef183282__1717788600
URL1:https://arc.ask3.ru/arc/aa/8a/82/8a0c115e273cc7e813d840d2ef183282.html
Заголовок, (Title) документа по адресу, URL1:
Graph reduction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)