Дата добавления: 3 года назад | Просмотров: 197 | Категория: Больше про алгоритмы ч. 2
Напишите функцию Min, возвращающую значение наименьшего элемента вектора.
Дата добавления: 3 года назад | Просмотров: 229 | Категория: Больше про алгоритмы ч. 2
Настало время обратиться к механизму ускоренного поиска элемента вектора по значению, - ускоренного в сравнении с последовательным просмотром. Он известен под именами метод дихотомии или метод половинного деления. Как обычно, за скорость взимается плата: массив
Дата добавления: 3 года назад | Просмотров: 182 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 193 | Категория: Больше про алгоритмы ч. 2
Рассмотрим упражнения на ускоренный поиск элементов
Дата добавления: 3 года назад | Просмотров: 181 | Категория: Больше про алгоритмы ч. 2
Все, что нужно для этого - знать, куда должен попасть очередной элемент. Предположим, в отношении некоторого элемента мы выяснили, куда он держит путь. Остается произвести обмен между "временно прописанным" и законным хозяином ячейки. Таким образом, мы отказываемся от прежнего ограничения, и допускаем обмены между удаленными друг от друга компонентами.
Дата добавления: 3 года назад | Просмотров: 214 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 245 | Категория: Больше про алгоритмы ч. 2
Существует несколько способов выбрать такой элемент и организовать переключение между левым и правым индексами, участвующими в процедуре просмотра подмассива и организации обменов. Вот один из них:
Дата добавления: 3 года назад | Просмотров: 211 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 215 | Категория: Больше про алгоритмы ч. 2
При формулировке любой задачи необходимо определить исходные данные, которые мы будем называть параметрами задачи.
Дата добавления: 3 года назад | Просмотров: 248 | Категория: Больше про алгоритмы ч. 2
Одним из основных способов решения задач является их сведение к решению такого набора подзадач, чтобы, исходя из решений подзадач, было возможно получить решение исходной задачи. При этом для решения исходной задачи может потребоваться решение одной или нескольких подзадач.
Дата добавления: 3 года назад | Просмотров: 469 | Категория: Больше про алгоритмы ч. 2
Найденный способ сведения решения исходной задачи к решению некоторых подзадач может быть записан в виде соотношений, в которых значение функции, соответствующей исходной задаче, выражается через значения функций, соответствующих подзадачам. При этом важнейшим условием сведения является тот факт, что значения аргументов у любой из функций в правой части соотношения меньше значения аргументов функции в левой части соотношения.
Дата добавления: 3 года назад | Просмотров: 458 | Категория: Больше про алгоритмы ч. 2
Правильными рекуррентными соотношениями ( уравнениями ) будем называть такие рекуррентные соотношения, у которых количество или значения аргументов у функций в правой части соотношения меньше количества или, соответственно, значений аргументов функции в левой части соотношения. Если аргументов несколько, то достаточно уменьшения одного из аргументов.
Дата добавления: 3 года назад | Просмотров: 309 | Категория: Больше про алгоритмы ч. 2
Важнейшим моментом при решении задачи является способ сведения задачи к подзадачам. Но не менее важным вопросом является и способ построения решения исходной задачи из решений подзадач. Одним из наиболее эффективных способов построения решения исходной задачи является использование таблиц для запоминания решений подзадач. Такой метод решения задач называется методом динамического программирования.
Дата добавления: 3 года назад | Просмотров: 345 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 659 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 202 | Категория: Больше про алгоритмы ч. 2
На предыдущем уроке были рассмотрены задачи, для которых функция в рекуррентном соотношении содержала только один аргумент, а значит, для реализации было достаточно использовать одномерные массивы. Однако достаточно часто могут использоваться функции с большим числом аргументов.
Дата добавления: 3 года назад | Просмотров: 266 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 220 | Категория: Больше про алгоритмы ч. 2
Все приведенные ранее решения давали только количественную характеристику решения, т.е. значение функции. Во многих случаях требуется знание и структуры решения
Дата добавления: 3 года назад | Просмотров: 416 | Категория: Больше про алгоритмы ч. 2
Для задач предыдущих уроков были достаточно очевидны рекуррентные соотношения, причем параметрами функции были только количество исходных элементов. Однако очень часто на практике в качестве параметров выступают и другие значения, например общая сумма, максимальные значения элементов.
Дата добавления: 3 года назад | Просмотров: 1046 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 404 | Категория: Больше про алгоритмы ч. 2
Для задач предыдущих уроков были рассмотрены рекуррентные соотношения, которые сводились к поиску возможного представления числа в виде линейной комбинации из заданных чисел. Однако на практике лучшему разбиению не всегда соответствует оптимальное решение.
Дата добавления: 3 года назад | Просмотров: 679 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 438 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 437 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 516 | Категория: Больше про алгоритмы ч. 2
Дата добавления: 3 года назад | Просмотров: 395 | Категория: Больше про алгоритмы ч. 2
Иногда одного рекуррентного уравнения может быть недостаточно для сведения задачи к подзадачам. Тогда можно описать несколько функций, с помощью которых можно восстановить решение исходной задачи.
Дата добавления: 3 года назад | Просмотров: 424 | Категория: Больше про алгоритмы ч. 2
Двое играют в следующую игру: начиная с некоторой даты (день, месяц) они по очереди называют следующую, причем можно увеличивать либо номер дня, либо номер месяца (одновременное изменение номеров дня и месяца не разрешается). Проигравшим считается тот, кто называет дату 31.12. Какие даты должен выбирать первый игрок, чтобы выиграть?
Дата добавления: 3 года назад | Просмотров: 328 | Категория: Больше про алгоритмы ч. 2
Во всех предыдущих примерах только вскользь рассматривались вопросы вычисления элементов таблиц. Как правило, эти вычисления проводились слева направо и сверху вниз, т.е. начиная с маленьких индексов и кончая большими индексами. Иногда на практике вычисление элементов идет не регулярным образом.
Дата добавления: 3 года назад | Просмотров: 444 | Категория: Больше про алгоритмы ч. 2
Между двумя городами расстояние равно 50 километров, причем через каждый километр имеется остановка.
Дата добавления: 3 года назад | Просмотров: 408 | Категория: Больше про алгоритмы ч. 2
Затем необходимо создать пустую очередь, выполнив операцию init. Параметрами этой процедуры являются имя массива, моделирующего очередь, и связанные с ним указатели очереди.
Дата добавления: 3 года назад | Просмотров: 440 | Категория: Больше про алгоритмы ч. 2
Кучами будем называть такие структуры данных, которые позволяют выполнять две основные операции - "добавление элемента" и "удаление минимального элемента".
Дата добавления: 3 года назад | Просмотров: 563 | Категория: Больше про алгоритмы ч. 2
Полным бинарным деревом будем называть такое дерево, в котором каждая вершина имеет не более двух "сыновей", а заполнение вершин осуществляется в порядке от верхних уровней к низшим, причем на одном уровне заполнение вершин производится слева направо.
Дата добавления: 3 года назад | Просмотров: 575 | Категория: Больше про алгоритмы ч. 2
Основным свойством структуры данных КУЧА является условие, что элементы в ней организованы таким образом, что приоритет вершины не ниже приоритета каждого из ее "сыновей".
Дата добавления: 3 года назад | Просмотров: 354 | Категория: Больше про алгоритмы ч. 2
При выполнении операции добавления элемента со значением 17, элемент должен поместиться на свободное место, т.е. позицию с индексом Num+1. Однако эта позиция может не соответствовать правильному положению элемента в куче, так как над ним может находиться элемент, имеющий меньший приоритет.
Дата добавления: 3 года назад | Просмотров: 497 | Категория: Больше про алгоритмы ч. 2
В силу основного свойства кучи элемент с максимальным приоритетом находится в корне полного бинарного дерева, т.е. имеет индекс 1. Поэтому, после удаления первого элемента, его место займет один из его сыновей или последний элемент, кто имеет больший приоритет. Освободившееся место сына займет его сын или последний элемент, и так далее. После таких преобразований внутри кучи не должно остаться "свободных" мест.
Дата добавления: 3 года назад | Просмотров: 542 | Категория: Больше про алгоритмы ч. 2
Понятно, что такая структура очень полезна. Ее можно использовать для сортировки элементов. Для этого достаточно вначале добавить каждый из них в кучу, а затем поочередно удалить. Трудоемкость сортировки, реализованной таким образом, определяется трудоемкостью операций добавления и удаления минимального элемента.
Дата добавления: 3 года назад | Просмотров: 566 | Категория: Больше про алгоритмы ч. 2
Мы стали различать статические и динамические структуры, но основное внимание уделили первым. Сейчас мы переходим к динамическим структурам. Напомним, что основное их отличие от статических в возможности менять в ходе работы количество содержащихся в структуре элементов.