Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
find8_1.doc
Скачиваний:
36
Добавлен:
12.03.2015
Размер:
3.46 Mб
Скачать

4.3. Порядковые статистики

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

Рассмотрим некоторый элемент исходной последовательности. Разделим исходную последовательность относительнона три части:- последовательность элементов, меньших,- последовательность элементов равныхи- последовательность элементов больших. Сравнивая число элементов последовательностиис, можно определить какая из последовательностей содержит-ый наименьший элемент. Найдя соответствующую последовательность и скорректировав значение, сведем задачу поиска-го наименьшего элемента к подобной задаче меньшей размерности. Таким образом, алгоритм делит последовательность на три части, и далее обрабатывается только одна из частей. Процесс продолжается до тех пор, пока не получится последовательность, состоящая из небольшого числа элементов, в этом случае задача решается простой сортировкой.

Как и в алгоритме быстрой сортировки возникает задача выбора элемента . С точки зрения скорости работы алгоритма лучшим выбором элемента, относительно которого идет разбиение, является медиана. Худшим выбором является минимальный или максимальный элемент последовательности. Если выбирать этот элемент случайно, при помощи равномерно распределенного датчика случайных чисел, то можно доказать [4], что среднее время решения задачи оценивается как.

Однако можно предложить процедуру выбора, разделяющего элемента, при которой время работы алгоритма в худшем случае равно [2, 4].

Без ограничения общности можно полагать, что исходная последовательность содержит не менее 50 элементов. В противном случае задача может быть решена с использованием сортировки и сложность ее решения равна . Рассмотрим алгоритм поиска-го наименьшего элемента в последовательности, которая задается рекурсивной процедурой ProcedureВыбор:

  1. Разбить исходную последовательность длинына12групп по 5 элементов в каждой, кроме последней, которая может содержать менее 5 элементов.

  2. Отсортировав элементы каждой групп, найти медиану. Обозначим через медиану-ой группы,.

  3. Рекурсивно применяя процедуру Выборк последовательности медиан, найти медиануэтой последовательности.

  4. Разбить исходную последовательность на две подпоследовательность элементов меньших,элементов равных,- элементов, больших. Обозначим черезмощность множества.

  5. Если , то выполнить процедуру Выбор, в противном случае, если, то решением задачи будет, в противном случае выполнить процедуру Выбор.

Обозначим время работы алгоритма для последовательности длины через. Нетрудно видеть, что временная сложность алгоритма для шагов 1,2,4 равна. Кроме того сложность выполнения шага 2 равна. Для того, чтобы оценить время выполнения шага 5, необходимо оценить сверху число элементов в последовательностии. Поскольку последовательность медиан состоит изэлементов, то в этой последовательности не менееэлементов больше или равны. Поскольку для каждого элемента последовательностисуществует по меньшей мере 3 элемента в группе, которые не меньше, то общее число элементов больших или равныхв исходной последовательности. Тогда13. Аналогично выводится, что. Поэтому для некоторой константыимеем:

Решая это рекуррентное соотношение, получим .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]