Jump to content

Список различий

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

Реализация с использованием функций

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

Список различий f с одним аргументом, — это функция добавление L если задан связанный список X в качестве аргумента , возвращает связанный список, содержащий L, добавленный к X. , которая , Объединение списков различий реализовано в виде композиции функций . Содержимое можно получить с помощью f [] . [1]

Эта реализация обычно используется в функциональных языках программирования, таких как Haskell , хотя ее можно использовать и в императивных языках.

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

Примеры использования приведены в типе ShowS в Prelude Haskell и в библиотеке списков различий Дональда Брюса Стюарта для Haskell . [2]

Реализация с использованием унификации

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

Другая реализация логического программирования языка Пролог использует переменные объединения. [3] Список различий — это пара OpenList-Hole , где первый элемент OpenList — это список, содержащий несвязанную переменную объединения (дыру), а второй элемент Hole — ссылку на дыру.


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