Комбинаторные алгоритмы для программистов

          

Рассматриваемые здесь задачи можно отнести


Рассматриваемые здесь задачи можно отнести к наиболее часто встречающимся классам комбинаторных задач. Почти во всех машинных приложениях множество объектов должно быть переразмещено в соответствии с некоторым заранее определенным порядком. Например, при обработке коммерческих данных часто бывает необходимо расположить их по алфавиту или по возрастанию номеров. В числовых расчетах иногда требуется знать наибольший корень многочлена, и т.д.
Будем считать заданной таблицу с
Рассматриваемые здесь задачи можно отнести
именами, обозначаемыми
Рассматриваемые здесь задачи можно отнести
,
Рассматриваемые здесь задачи можно отнести
. Каждое имя
Рассматриваемые здесь задачи можно отнести
принимает значение из пространства имен, на котором определен линейный порядок. Будем считать, что никакие два имени не имеют одинаковых значений; то есть любые
Рассматриваемые здесь задачи можно отнести
обладают тем свойством, что если
Рассматриваемые здесь задачи можно отнести
, то либо
Рассматриваемые здесь задачи можно отнести
, либо
Рассматриваемые здесь задачи можно отнести
. Ограничение
Рассматриваемые здесь задачи можно отнести
при
Рассматриваемые здесь задачи можно отнести
упрощает анализ без потери общности, ибо и при наличии равных имен корректность идей и алгоритмов не нарушается. Наша цель состоит в том, чтобы выяснить что- нибудь относительно перестановки
Рассматриваемые здесь задачи можно отнести

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

Содержание раздела