Двоичный поиск: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Строка 1: | Строка 1: | ||
{{algorithm | {{algorithm | ||
− | | name = | + | | name = Бинарный поиск |
| serial_complexity = | | serial_complexity = | ||
| pf_height = | | pf_height = | ||
Строка 7: | Строка 7: | ||
| output_data = | | output_data = | ||
}} | }} | ||
− | Основные авторы описания: | + | Основные авторы описания: [[User:AntonChupin|А. В. Чупин]]. |
== Свойства и структура алгоритма == | == Свойства и структура алгоритма == | ||
=== Общее описание алгоритма === | === Общее описание алгоритма === | ||
+ | '''Метод бинарного поиска''' используется в качестве быстрого варианта поиска в заранее отсортированном массиве. Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи. | ||
+ | |||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
+ | |||
+ | Исходные данные: одномерный массив <math>n</math> чисел, упорядоченный по возрастанию (точнее - неубыванию) или убыванию (точнее - невозрастанию), а также число <math>A</math>, которое нужно найти в этом массиве. | ||
+ | |||
+ | Вычисляемые данные: индекс элемента, равного искомому (или ответ, что такого элемента нет). | ||
+ | |||
+ | Формулы метода: элементы на каждом этапе алгоритма рассматриваются в виде непрерывного отрезка массива. В каждой из пар находится сумма составляющих её элементов. На следующем этапе на пары разбиваются уже эти суммы (и те элементы, которые не вошли в уже вычисленные суммы), и т. д. | ||
+ | |||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
+ | Вычислительное ядро последовательно-параллельного метода суммирования можно составить как из операций сравнения и получения середины отрезка, так и (рекуррентно) из набора реализаций метода бинарного поиска в массиве меньшего размера. | ||
+ | |||
=== Макроструктура алгоритма === | === Макроструктура алгоритма === | ||
=== Схема реализации последовательного алгоритма === | === Схема реализации последовательного алгоритма === | ||
Строка 20: | Строка 31: | ||
=== Ресурс параллелизма алгоритма === | === Ресурс параллелизма алгоритма === | ||
=== Входные и выходные данные алгоритма === | === Входные и выходные данные алгоритма === | ||
+ | |||
+ | Входные данные: массив <math>x</math> (элементы <math>x_i</math>). Число <math>A</math>. | ||
+ | |||
+ | Дополнительные ограничения: массив упорядочен. | ||
+ | |||
+ | Объём входных данных: <nowiki/><math>n</math>. | ||
+ | |||
+ | Выходные данные: индекс элемента <math>A</math> в массиве, если он есть. | ||
+ | |||
+ | Объём выходных данных: один скаляр. | ||
+ | |||
=== Свойства алгоритма === | === Свойства алгоритма === | ||
Строка 25: | Строка 47: | ||
=== Особенности реализации последовательного алгоритма === | === Особенности реализации последовательного алгоритма === | ||
+ | Обычно в качестве ответа выводят -1, если число не найдено. | ||
+ | |||
=== Локальность данных и вычислений === | === Локальность данных и вычислений === | ||
==== Локальность реализации алгоритма ==== | ==== Локальность реализации алгоритма ==== |
Версия 00:43, 29 июня 2016
Бинарный поиск |
Основные авторы описания: А. В. Чупин.
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Метод бинарного поиска используется в качестве быстрого варианта поиска в заранее отсортированном массиве. Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи.
1.2 Математическое описание алгоритма
Исходные данные: одномерный массив [math]n[/math] чисел, упорядоченный по возрастанию (точнее - неубыванию) или убыванию (точнее - невозрастанию), а также число [math]A[/math], которое нужно найти в этом массиве.
Вычисляемые данные: индекс элемента, равного искомому (или ответ, что такого элемента нет).
Формулы метода: элементы на каждом этапе алгоритма рассматриваются в виде непрерывного отрезка массива. В каждой из пар находится сумма составляющих её элементов. На следующем этапе на пары разбиваются уже эти суммы (и те элементы, которые не вошли в уже вычисленные суммы), и т. д.
1.3 Вычислительное ядро алгоритма
Вычислительное ядро последовательно-параллельного метода суммирования можно составить как из операций сравнения и получения середины отрезка, так и (рекуррентно) из набора реализаций метода бинарного поиска в массиве меньшего размера.
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
1.6 Последовательная сложность алгоритма
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
Входные данные: массив [math]x[/math] (элементы [math]x_i[/math]). Число [math]A[/math].
Дополнительные ограничения: массив упорядочен.
Объём входных данных: [math]n[/math].
Выходные данные: индекс элемента [math]A[/math] в массиве, если он есть.
Объём выходных данных: один скаляр.
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
Обычно в качестве ответа выводят -1, если число не найдено.