Научная статья на тему 'Методика сравнительного анализа алгоритмов на примере алгоритмов последовательного поиска'

Методика сравнительного анализа алгоритмов на примере алгоритмов последовательного поиска Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1157
152
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОСЛЕДОВАТЕЛЬНЫЙ ПОИСК / САМООРГАНИЗУЮЩИЕСЯ ТАБЛИЦЫ / СРАВНЕНИЕ И АНАЛИЗ АЛГОРИТМОВ / COMPARISON AND THE ANALYSIS OF ALGORITHMS / SELF-ORGANIZING TABLES / THE CONSECUTIVE SEARCH

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Самуйлов Сергей Владимирович

Статья посвящена актуальным вопросам обучения студентов методам сравнения, анализа и выбора алгоритма для решения поставленной задачи на примере сравнительного анализа алгоритмов последовательного поиска.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Самуйлов Сергей Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Technique of the comparative analysis of algorithms on the example of algorithms of consecutive search

The article is devoted to topical issues of training students to methods of comparison, analysis and algorithm choice for the solution of an objective on the example of the comparative analysis of algorithms of consecutive search.

Текст научной работы на тему «Методика сравнительного анализа алгоритмов на примере алгоритмов последовательного поиска»

ART 14236

научно-методический электронный журнал

УДК 378.147:004.9

Самуйлов С. В. Методика сравнительного анализа алгоритмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь).-ART 14236. - 0,3 п. л. - URL: http://e-koncept. ru/2014/14236.htm. - Гос. per. Эл № ФС 77-49965. -ISSN 2304-120Х.

Самуйлов Сергей Владимирович,

кандидат технических наук, заведующий кафедрой «Информатика, математика и общегуманитарные науки» ФГОБУ ВПО «(Финансовый университет при Правительстве Российской Федерации» (Пензенский филиал), г. Пенза sws p@mail.ru

Методика сравнительного анализа алгоритмов на примере алгоритмов

последовательного поиска

Аннотация. Статья посвящена актуальным вопросам обучения студентов методам сравнения, анализа и выбора алгоритма для решения поставленной задачи на примере сравнительного анализа алгоритмов последовательного поиска. Ключевые слова: сравнение и анализ алгоритмов, последовательный поиск, самоорганизующиеся таблицы.

Раздел: (01) педагогика; история педагогики и образования; теория и методика обучения и воспитания (по предметным областям).

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

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

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

Однако такой подход к оценке эффективности алгоритмов имеет ряд недостатков. Одним из основных недостатков О-функций является их чрезмерная грубость. Если алгоритм А выполняет некоторую задачу за 0,001 xN секунд, в то время как для ее же решения с помощью алгоритма В требуется 1000xN секунд, то алгоритм А в миллион раз быстрее, чем алгоритм В. Тем не менее А и В имеют одну и ту же временную сложность О^).

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

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

f\j ■Л f\j

КОНЦЕПТ

Самуйлов С. В. Методика сравнительного анализа ал горитмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь). _ _ ART 14236. - 0,3 п. л. - URL: http://e-koncept.

научно-методический электронный журнал ^зм^ох^"1' ~ Г°С' ^ ЭЛ №°С 77~49965'

ART 14236 УДК 378.147:004.9

тите только одно сравнение, в худшем случае - N сравнений, где N - количество

книг в шкафу. Среднее число сравнений, т. е. если поиск книг будет повторяться

многократно, равен N/2. Таким образом, если мы ничего не знаем об организации

исходных данных (например, исходные данные могут быть упорядочены), то, скорее

всего, без использования последовательного поиска не обойтись.

Сформулируем алгоритм более точно. Пусть имеется массив записей с ключами Ki, K2, ..., Kn. Необходимо найти запись с заданным ключом K. Тогда традиционный алгоритм последовательного поиска будет включать следующие шаги (алгоритм А) [1].

1. i = 1.

2. Если K = Ki, алгоритм заканчивается удачно.

3. Иначе i = i + 1.

4. Если i <= N, то вернуться к шагу 2.

5. Иначе алгоритм заканчивается неудачно.

Сложность алгоритма неоптимального последовательного поиска (алгоритма А) определяется как О(п).

Условия окончания поиска следующие.

1. Элемент найден, т. е. обнаружен ключ Ki = K.

2. Все записи просмотрены, и совпадение не обнаружено (i > N).

Приведенный выше алгоритм при всей своей очевидности не является, однако,

оптимальным. В алгоритме А имеются две проверки: на совпадение ключей и на выход значения индекса за пределы массива.

Если гарантировать, что ключ всегда будет найден, то без второго условия (выход индекса за границу массива) можно обойтись. Для этого достаточно в конце массива - (N+^-й элемент - поместить дополнительный элемент, присвоив ему значение искомого ключа K. Назовем такой вспомогательный элемент «барьером», так как он предотвращает выход за пределы массива.

Таким образом, ключ всегда будет найден в записи с индексом i. При i = N+1 (индекс достиг конца массива) ключ не найден (т. е. найден только в барьере), поиск неудачен. В противном случае - поиск удачен.

Алгоритм, реализующий описанный выше метод поиска, можно назвать алгоритмом оптимального последовательного поиска (алгоритм В). Рассмотрим его более подробно.

1. Kn+i = K.

2. i = 1.

3. Если K = Ki, на шаг 5.

4. Иначе i = i + 1. На шаг 3.

5. Если i = N+1, то поиск неудачен (ключ найден в барьере), иначе - поиск удачен (ключ найден в i-м элементе массива).

Сложность алгоритма оптимального последовательного поиска (алгоритма В) также определяется как О(п), однако рассмотренный выше алгоритм В позволяет исключить в среднем (N + 1 )/2 сравнений. Для сравнения описанных выше алгоритмов была написана программа, замеряющая время поиска m ключей в неупорядоченном массиве из m записей с помощью как алгоритма А, так и алгоритма В. Переменная m меняется от 5000 до 100000 с шагом 5000. Результаты работы программы приведены на рис. 1.

Как показывает график, алгоритм оптимального последовательного поиска (алгоритм В) примерно в два раза быстрее алгоритма неоптимального последовательного поиска (алгоритм А).

КОНЦЕПТ

научно-методический электронный журнал

ART 14236

УДК 378.147:004.9

Самуйлов С. В. Методика сравнительного анализа ал горитмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь). ART 14236. - 0,3 п. л. - URL: http://e-koncept. ru/2014/14236.htm. - Гос. per. Эл № ФС 77-49965. ISSN 2304-120X.

Рис. 1. Сравнение алгоритма А и алгоритма В

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

Самый широко применяемый способ организации исходных данных - это их упорядочение. Очень часто исходные данные изначально упорядочены, и в этом случае для поиска эффективней применять более быстрые алгоритмы поиска, например бинарный поиск (сложность О(1од2(п)).

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

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

Пусть имеется множество записей с ключами К1, К2, ..., Кп, причем К1 < К2 < ... < Кп. Необходимо найти запись с заданным ключом К.

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

В отличие от поиска в неупорядоченном массиве просмотр элементов упорядоченного массива заканчивается в тот момент, когда первый раз выполнится условие К < Кк Очевидно, что все элементы Ю+1, ..., Кп будут больше К.

Если К = К - поиск удачен. В противном случае искомого элемента нет в массиве. Тогда алгоритм поиска в упорядоченном массиве будет включать следующие шаги (алгоритм С).

1. Кп + 1 = К + 1.

2. I = 1.

3. Если К <= К, на шаг 5.

4. Иначе i = i + 1, на шаг 3.

5. Если К = К, то поиск удачен, иначе - поиск неудачен.

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

~ з ~

КОНЦЕПТ

Самуйлов С. В. Методика сравнительного анализа ал горитмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь). ART 14236. - 0,3 п. л. - URL: http://e-koncept. ru/2014/14236.htm. - Гос. per. Эл № ФС 77-49965. ISSN 2304-120X.

научно-методический электронный журнал ART 14236 УДК 378.147:004.9

Для сравнения времени работы алгоритма В и алгоритма С в описанной выше программе вместо неупорядоченного массива использовался упорядоченный. Результаты работы программы приведены на рис. 2.

Рис. 2. Сравнение алгоритма В и алгоритма С

Очевидно, что алгоритм С будет тем более эффективнее алгоритма В, чем чаще поиск оказывается неудачным. На рис. 2 приведен пример, отражающий время поиска для случая, когда примерно каждый второй поиск неудачен.

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

Ниже как альтернатива общеизвестным алгоритмам последовательного поиска рассматривается один из малоисследованных и редко применяемых методов организации и поиска данных - самоорганизующиеся таблицы [2].

Пусть вероятность поиска ключа К равна р^ где

p1 + p2 + . . . + pn = 1.

Очевидно, что число сравнений при поиске будет минимально, если

р1 > р2 > . . . > рп,

т. е. когда наиболее часто используемые записи находятся в начале таблицы.

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

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

Такая схема позволяет довольно хорошо упорядочить записи без использования вспомогательных полей для счетчика. В результате часто используемые элементы будут располагаться довольно близко к началу.

Метод перемещения в начало наиболее легко реализовать, когда данные представлены в виде связанного линейного списка.

Метод транспозиции. В данном методе извлеченная запись меняется местами с записью, которая ей предшествует.

ГУ r\J

КОНЦЕПТ

Самуйлов С. В. Методика сравнительного анализа ал горитмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь). _ _ ART 14236. - 0,3 п. л. - URL: http://e-koncept.

научно-методический электронный журнал ^зм^ох^"1' ~ Г°С' ^ Эл№ФС 77"49965' ART 14236 УДК 378.147:004.9

Два описанных выше метода достаточно просты и в понимании, и в реализации. Однако следующие вопросы необходимо все-таки исследовать.

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

2. Какой из двух рассмотренных выше методов более эффективен?

Итак, у нас есть исходный массив М, в котором ключи располагаются произвольно относительно вероятности их поиска. Введем понятие «идеальный массив» D, т. е. массив, упорядоченный по убыванию вероятности поиска.

Для каждого i-го элемента массива М можно вычислить Ai - расстояние между его положением в массивах М и D. Тогда величина

I=1

и будет определять степень «организованности» массива М. Очевидно, что RD = 0.

Понятно, что с каждым новым поиском массив М будет все больше «организовываться», а значение R стремиться к нулю. Однако, как будет показано ниже, идеального состояния массив М так и не достигает.

Поэтому для ответа на первый поставленный вопрос необходимо экспериментально подсчитать для массива М из п элементов то количество поисков, которого достаточно для максимальной организации исходного массива М.

На рис. 3 приведен график зависимости величины RM от количества произведенных в массиве поисков для метода транспозиции при п = 100.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 3. Метод транспозиции

Тот же самый процесс для метода перемещения в начало приведен на рис. 4.

Из рис. 3 видно, что примерно после 19 000 сравнений массив из 100 элементов приходим к максимальной организации, т. е. дальнейшая самоорганизация массива не приводит к улучшениям.

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

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

PU г М

КОНЦЕПТ

Самуйлов С. В. Методика сравнительного анализа ал горитмов на примере алгоритмов последовательного поиска // Концепт. - 2014. - №09 (сентябрь). ART 14236. - 0,3 п. л. - URL: http://e-koncept. ru/2014/14236.htm. - Гос. per. Эл № ФС 77-49965. ISSN 2304-120X.

научно-методический электронный журнал ART 14236 УДК 378.147:004.9

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

Завершая рассмотрение алгоритмов последовательного поиска, можно сделать вывод, что, несмотря на кажущуюся простоту базового алгоритма последовательного поиска (алгоритма А), его незначительные улучшения приводят к существенному повышению эффективности последовательного поиска.

Рис. 4. Метод перемещения в начало

Ссылки на источники

1. Структуры и алгоритмы компьютерной обработки данных: учеб. пособие / А. Б. Баканов, В. В. Дрождин, С. В. Самуйлов; Пензенский гос. пед. ун-т им. В. Г. Белинского. - Пенза, 2007.

2. Структуры данных: учеб. пособие / И. А. Казакова, С. В. Самуйлов; М-во образования и науки РФ, Гос. образовательное учреждение высш. проф. образования «Пензенский гос. ун-т» (ПГУ). - Пенза, 2011.

Sergey Samuylov, ISSN 2304 120Х

Candidate of Engineering Sciences, head of the chair of computer sciences, mathematics and the humanities, Financial University under the Government of the Russian Federation, Penza branch, Penza sws p@mail.ru

Technique of the comparative analysis of algorithms on the example of algorithms of consecutive search

Abstract. The article is devoted to topical issues of training students to methods of comparison, analysis and algorithm choice for the solution of an objective on the example of the comparative analysis of algorithms of consecutive search.

Key words: comparison and analysis of algorithms, consecutive search, self-organizing tables. References

1. Bakanov, A. B., Drozhdin, V. V. & Samujlov, S. V. (2007) Struktury i algoritmy kompjuternoj obrabotki dannyh: ucheb. Posobie, Penzenskij gos. ped. un-t im. V. G. Belinskogo, Penza (in Russian).

2. Kazakova, I. A. & Samujlov, S. V. (2011) Struktury dannyh: ucheb. posobie, M-vo obrazovanija i nauki RF, Gos. obrazovatel'noe uchrezhdenie vyssh. prof. obrazovanija "Penzenskij gos. un-t" (PGU), Penza, (in Russian).

Рекомендовано к публикации:

Горевым П. М., кандидатом педагогических наук, главным редактором журнала «Концепт»

977230412014209

i Надоели баннеры? Вы всегда можете отключить рекламу.