
- •Понятие сложности алгоритма, оценки времени исполнения.
- •Общая классификация вычислительных алгоритмов.
- •Точность представления чисел.
- •Вычисление «машинного нуля».
- •Понятие стека. Операции над стеком.
- •Программная реализация стека на основе статического массива.
- •Использование стека при организации связи функций в языке Си и в ос.
- •Понятие очереди. Операции над очередями.
- •Кольцевая очередь. Деки.
- •Программная реализация очереди на основе статического массива.
- •Структура данных «список».
- •Ссылки.
- •Линейные списки – основные операции.
- •Реализ списков на основе динам стру.
- •Двусвязный список и его программная реализация.
- •Кольцевые списки.
- •Многосвязные (слоеные) списки.
- •Бинарный поиск.
- •Алгоритм прямого поиска.
- •Алгоритм Кнута-Мориса-Пратта.
- •Алгоритм Боуера-Мура.
- •Сортировки – общая классификация.
- •Сортировка с помощью включения.
- •Сортировка с помощью выделения
- •Сортировка с помощью обменов
- •Шейкерная сортировка
- •Сортировка Шелла
- •Сравнение рассмотренных сортировок
- •Пирамидальная сортировка
- •Быстрая сортировка.
- •Сортировка слиянием
- •Графы – основные понятия.
- •Формы представления графов. Матрица смежности
- •Матрица инцидентности
- •Списки смежности
- •Массив дуг
- •Достижимость и обходы графа
- •Алгоритм Дейкстры
- •[30, 1] Постоянная
- •[40, 3] Постоянная
- •Вычисление выражений по их символьному представлению.
- •Построение обратной польской записи выражения.
[30, 1] Постоянная
[40, 3] Постоянная
5 [90, 3] или [40+50, 4]=[90,4] Временная
Временная метка [100, 1], полученная узлом 2 на втором шаге, изменена на [55, 4]. Это указывает на то, что найден более короткий путь к этому узлу (проходящий через узел 4). На третьем шаге узел 5 получает две метки с одинаковым значением расстояния u5 = 90.
Шаг 4. Из узла 2 можно перейти только в узел 3, но он уже имеет постоянную метку, которую нельзя изменить. Поэтому на данном шаге получаем такой же список меток, как и на предыдущем шаге, только метка узла 2 получает статус постоянной.
Шаг 5. С временной меткой остается только узел 5, но так как из этого узла нельзя попасть ни в какой другой, ему присваивается постоянный статус и процесс вычислений заканчивается.
Кратчайший маршрут между узлом 1 и любым другим узлом определяется начиная с узла назначения путем прохождения их в обратном направлении с помощью информации, представленной в постоянных метках.
(2) -> [55, 4] -> (4) -> [40, 3] -> (3) -> [30, 1] ->(1)
Между узлами (2) и (1): [55, 4].
Вычисление выражений по их символьному представлению.
Формула – линейное скобочное выражение, в котором по правилам математики описаны действия(+-*/) над переменными, задаваемыми одной буквой латинского алфавита.
Способ преобразования исходной формулы к форме удобной для вычислений предложил Лукашевич, а сама форма наз-ся обратной польской записью.
(a+b)*(c-d)+е
Построение начинается с корня, в качестве которого выбирается операция, выполняющаяся последней; далее в левой ветви ставится в соответствии левого операнда, в правой – правый. Когда дерево построено, совершается его обход, при этом в качестве выходной строки производится запись пройденных вершин. Обход осуществляется слева направо, при чем узел вносится в запись только после прохождения всех ему подчиненных вершин.
ab+cd-*e+
Построение обратной польской записи выражения.
посимвольно просматривается исходная строка:
- если очередной символ - буква, то он переписывается в выходную строку
- если очер.символ – открывающая скобка, то он помещается в стек
- если очер.символ – закрывающая скобка, то он выталкивает из стека в выходную строку все операции до ближайшей открывающей скобки(сами скобки в выходную строку не переписываются и уничтожают друг друга)
- знак операции выталкивает из стека в выходн.строку все операции с приоритетом большим или равным приоритету этой операции, а сам заносится в стек.
Операция: ( ) + - * /
Приоритет: 0 1 2 3
Просматриваемый символ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Входная строка |
( |
a |
+ |
b |
) |
* |
( |
c |
- |
d |
) |
+ |
e |
|
Состояние стека |
( |
( |
+ ( |
+ ( |
|
* |
( * |
( * |
- ( * |
- ( * |
* |
+ |
+ |
|
Выходная строка |
|
a |
|
b |
+ |
|
|
c |
|
d |
- |
* |
e |
+ |