Файл: Рекурсивные алгоритмы.doc

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 142

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


В некоторых случаях рекурсию для задачи размера удаётся организовать только путем аддитивного уменьшения исходного размера задачи на некоторую константу . Сложность такого типа рекурсивных алгоритмов определяется рекуррентным соотношением вида



где , , , , - фиксированные константы. Например, такая ситуация возникает при решении графических задач. Для такого соотношения при , где , справедлива оценка 1



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



где , ,
- фиксированные константы. Оно определяет однозначно функцию при таким выражением 2



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

Для задачи умножения матриц использование базового алгоритма умножения -матриц с умножениями для построения рекурсивного алгоритма, сводящего умножение -матриц к умножению -матриц приводит к оценкам для сложности :



(в алгоритме Штрассена , ). В. Пан использовал алгоритм с параметрами и и получил . В настоящее время известны и более лучшие алгоритмы. Усилиями ряда математиков (Пан, Виноград, Романи, Шейхаге, Штрассен, Копперсмит) экспонента сложности матричного умножения последовательно принимала значения: , ,

, , , . Основная проблема - нахождение доказательства равенства еще не решена 1.

Рассмотрим еще один пример применения полученных результатов. Вернемся к задаче умножения чисел в двоичной записи. Зафиксируем натуральное число и рассмотрим два -битовых числа и , где

,

.

Разобьем эти числа на частей

,

.

Здесь каждое и , являются -битовыми числами, . Рассмотрим многочлены





и образуем произведение . Ясно, что выполнено , , . Поэтому, знание многочлена
позволяет вычислить произведение за число действий пропорциональное . Чтобы найти коэффициенты многочлена находим значение в точках , то есть . Разрядность чисел (соответственно ) не превышает , где - некоторая константа, зависящая oт . Ясно, что если - сложность умножения -битовых чисел, то сложность умножения -битовых чисел есть для некоторой константы .

Если - сложность умножения -битовых чисел, то справедливо соотношение ( - константа). Отсюда и согласно изложенным ранее результатам, получаем . Поскольку имеем
и, обозначая можно записать . Таким образом, доказано, для любого существует алгоритм умножения -битовых чисел, для которого сложность удовлетворяет соотношению .

Имеются и более эффективные алгоритмы умножения чисел, но они используют уже не цифровые операции 1.

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