Уровень алгоритма

Двоичный поиск: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
{{algorithm
{{algorithm
| name              = Бинарный поиск
| name              = Бинарный поиск
| serial_complexity =  
| serial_complexity = <math>\log_2 n</math>
| pf_height        =  
| pf_height        = ?
| pf_width          =  
| pf_width          = ?
| input_data        =  
| input_data        = упорядоченный массив длины <math>n</math>, число <math>A</math>
| output_data      =  
| output_data      = индекc элемента
}}
}}
Основные авторы описания: [[User:AntonChupin|А. В. Чупин]].
Основные авторы описания: [[User:AntonChupin|А. В. Чупин]].
Синонимы названия метода: '''двоичный поиск''', '''бинарный поиск''', '''метод деления пополам''', '''дихотомия'''.


== Свойства и структура алгоритма ==
== Свойства и структура алгоритма ==


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


=== Математическое описание алгоритма ===
=== Математическое описание алгоритма ===

Версия от 08:34, 29 июня 2016


Бинарный поиск
Последовательный алгоритм
Последовательная сложность [math]\displaystyle{ \log_2 n }[/math]
Объём входных данных упорядоченный массив длины [math]\displaystyle{ n }[/math], число [math]\displaystyle{ A }[/math]
Объём выходных данных индекc элемента
Параллельный алгоритм
Высота ярусно-параллельной формы ?
Ширина ярусно-параллельной формы ?

Основные авторы описания: А. В. Чупин.

Синонимы названия метода: двоичный поиск, бинарный поиск, метод деления пополам, дихотомия.

Свойства и структура алгоритма

Общее описание алгоритма

Метод двоичного поиска используется в качестве быстрого варианта поиска в заранее отсортированном массиве. Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи.

Математическое описание алгоритма

Исходные данные: одномерный массив [math]\displaystyle{ n }[/math] чисел, упорядоченный по возрастанию (точнее - неубыванию) или убыванию (точнее - невозрастанию), а также число [math]\displaystyle{ A }[/math], которое нужно найти в этом массиве.

Вычисляемые данные: индекс элемента, равного искомому (или ответ, что такого элемента нет).

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

Вычислительное ядро алгоритма

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

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Входные данные: массив [math]\displaystyle{ x }[/math] (элементы [math]\displaystyle{ x_i }[/math]). Число [math]\displaystyle{ A }[/math].

Дополнительные ограничения: массив упорядочен.

Объём входных данных: [math]\displaystyle{ n }[/math].

Выходные данные: индекс элемента [math]\displaystyle{ A }[/math] в массиве, если он есть.

Объём выходных данных: один скаляр.

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Обычно в качестве ответа выводят -1, если число не найдено.

Локальность данных и вычислений

Локальность реализации алгоритма

Структура обращений в память и качественная оценка локальности
Количественная оценка локальности
Анализ на основе теста Apex-Map

Возможные способы и особенности параллельной реализации алгоритма

Масштабируемость алгоритма и его реализации

Масштабируемость алгоритма

Масштабируемость реализации алгоритма

Динамические характеристики и эффективность реализации алгоритма

Выводы для классов архитектур

Существующие реализации алгоритма

Литература