Корекурсия

Корекурсия

Кореку́рсия — в теории категорий и информатике тип операции, дуальный к рекурсии. Обычно корекурсия используется (совместно с механизмом ленивых вычислений) для генерации бесконечных структур данных.

Содержание

Общие замечания

Правило использование корекурсии на коданных дуально правилу применения рекурсии на данных. Вместо свёртывания структуры данных исходя из начального значения аргумента, корекурсия развёртывает результат на основе начального значения аргумента. Необходимо отметить, что корекурсия создаёт потенциально бесконечные структуры данных, в то время как обычная рекурсия анализирует (разбирает) по необходимости конечные структуры данных. Обычная рекурсия неприменима к коданным, поскольку процесс анализа может никогда не остановиться. Соответственно, корекурсия не может производить данные, поскольку данные всегда конечны.

Примеры

Пример использования механизма корекурсии на языке Haskell (вычисление бесконечного списка чисел Фибоначчи):

fibs = 0 : 1 : next fibs
  where
    next (a: t@(b:_)) = (a+b) : next t

Другой пример — вычисление бесконечного списка простых чисел:

primes = trial [2..]
   where
     trial (x:xs) = x : trial (filter ((/= 0).(`rem` x)) xs)

Данная функция (неэффективно) реализует алгоритм «Перебор делителей».[1]

Приведённые примеры на языке Haskell не совсем корректны, поскольку в языке нет идиомы коданных. В указанных примерах коданные только эмулируются при помощи неограниченно-определённого («бесконечного») списка.

См. также

Примечания

  1. Melissa E., «The Genuine Sieve of Eratosthenes», Journal of Functional Programming, Published online by Cambridge University Press 9 October 2008 doi:10.1017/S0956796808007004

Литература


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Корекурсия" в других словарях:

  • Решето Эратосфена — алгоритм нахождения всех простых чисел до некоторого целого числа n, который приписывают древнегреческому математику Эратосфену Киренскому. Содержание 1 Алгоритм …   Википедия

  • Рекурсия — У этого термина существуют и другие значения, см. Рекурсия (значения). Визуальная форма рекурсии (эффект Дросте) …   Википедия

  • Итерация — Пример итерации У этого термина существуют и другие значения, см …   Википедия

  • Решето Сундарама — В математике решето Сундарама детерминированный алгоритм нахождения всех простых чисел до некоторого целого числа . Разработан индийским студентом С. П. Сундарамом в 1934 году. Содержание 1 Описание 2 Обоснование …   Википедия

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

  • Коиндукция — Коиндукция  в информатике техника для определения и доказательства свойств систем параллельно взаимодействующих объектов (обобщённо). С математической точки зрения является дуальной к индукции (структурной индукции). В качестве определения… …   Википедия

  • Рекурсивный алгоритм — Рекурсия  метод определения класса объектов или методов предварительным заданием одного или нескольких (обычно простых) его базовых случаев или методов, а затем заданием на их основе правила построения определяемого класса, ссылающегося прямо или …   Википедия

  • У попа была собака — Рекурсия  метод определения класса объектов или методов предварительным заданием одного или нескольких (обычно простых) его базовых случаев или методов, а затем заданием на их основе правила построения определяемого класса, ссылающегося прямо или …   Википедия

  • Эратосфена решето — Решето Эратосфена простой алгоритм нахождения всех простых чисел до некоторого целого числа n. Он был создан древнегреческим математиком Эратосфеном. Содержание 1 Пример для n = 20 2 См. также 3 Примеры реализации …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»