
- •Структуры и алгоритмы обработки данных
- •230100.62 – Информатика и вычислительная техника
- •Стандартная постановка задачи
- •Пример постановки задачи
- •Пример постановки задачи в стандартной форме
- •Алгоритмы и их сложность
- •Основы анализа программ
- •Пример анализа алгоритмов
- •Выполнение операторов программы
- •Основы доказательства корректности
- •Динамическое программирование
- •Перемножение нескольких матриц
- •Когда применимо динамическое программирование
- •Наибольшая общая подпоследовательность
- •Жадные алгоритмы
- •Задача о выборе заявок
- •Абстрактные типы данных
- •Атд «Список»
- •Атд «Стек»
- •Атд «Очередь»
- •Множества
- •Хеширование
- •Словари, основанные на хеш-таблицах
- •Поиск слова в тексте
- •Сортировка
- •Сортировка вставками
- •Корневая сортировка
- •Пирамидальная сортировка
- •Переформирование пирамиды
- •Построение пирамиды
- •Сортировка слиянием
- •Управление с помощью таблиц
- •Способы представления графа
- •Матрица смежности
- •Матрица инцидентности
- •Список рёбер
- •Алгоритмы обхода графа
- •Поиск в ширину
- •Задача о кратчайшем пути
- •Алгоритм Дейкстры
- •Алгоритм Беллмана-Форда
- •Задача перекресток
- •Максимальный поток
- •Метод Форда-Фалкерсона
- •Минимальные покрывающие деревья
- •Алгоритм Крускала
- •Алгоритм Прима
- •Минимальные покрывающие деревья
- •Поиск в глубину
- •Топологическая сортировка
- •Деревья
Управление с помощью таблиц
Программа «лексический анализатор»
Операция читать_лит – читает очередную литеру анализируемого текста и выдает код, класс литеры.
В начале каждого выполнения переменная след_литера имеет своим значением первую литеру, не принадлежащую уже поанализированному элементу: тот же смысл переменная след_литера должна сохранять и после каждого выполнения программы.
имя := ””
состояние := 1
след_состояние := переход[состояние, класс(след_литера)]
повторять
нц
имя:=имя след_литера;
состояние := след_состояние
след_состояние := переход[состояние, класс(след_литера)]
кц
до след_состояние = 0
Выделяемые лексемы задаются таблицей перехода, которая заполняется исходя из диаграммы перехода
состояние |
Класс следующей литеры |
||||
Цифра |
Точка |
Знак операции |
Буква |
пробел |
|
1- исходное |
2 |
4 |
6 |
7 |
5 |
2-целое |
2 |
3 |
0 |
0 |
0 |
3- вещественное |
3 |
0 |
0 |
0 |
0 |
4- ошибка |
3 |
0 |
0 |
0 |
0 |
5 -разделитель |
0 |
0 |
0 |
0 |
5 |
6- оператор |
0 |
0 |
0 |
0 |
0 |
7-идентификатор |
7 |
0 |
0 |
7 |
0 |
Графы
В математической теории графов и информатике граф — это совокупность непустого множества вершин и множества пар вершин (связей между вершинами).
Объекты представляются как вершины, или узлы графа, а связи — как дуги, или рёбра. Для разных областей применения виды графов могут различаться направленностью, ограничениями на количество связей и дополнительными данными о вершинах или рёбрах.
Неориентированный граф G= (V, E) состоит из конечного множества вершин V и множества ребер E.
Ориентированный граф G= (V, E) состоит из конечного множества вершин V и множества дуг E.
Дуга – ориентированное ребро, представитма в виде упорядоченной пары вершин ( v, w ), где вершина v называется началом, а вершина w - концом дуги.
Способы представления графа
Матрица смежности
Матрица смежности графа G с конечным числом вершин n (пронумерованных числами от 1 до n) — это квадратная матрица A размера n, в которой значение элемента aij равно числу рёбер из i-й вершины графа в j-ю вершину.
Иногда, особенно в случае неориентированного графа, петля (ребро из i-й вершины в саму себя) считается за два ребра, то есть значение диагонального элемента aii в этом случае равно удвоенному числу петель вокруг i-й вершины.
Матрица смежности простого графа (не содержащего петель и кратных ребер) является бинарной матрицей и содержит нули на главной диагонали.
Матрица инцидентности
Матрица инцидентности — одна из форм представления графа, в которой указываются связи между инцидентными элементами графа (ребро(дуга) и вершина). Столбцы матрицы соответствуют ребрам, строки — вершинам. Ненулевое значение в ячейке матрицы указывает связь между вершиной и ребром (их инцидентность).
В случае ориентированного графа каждому ребру <x,y> ставится в соответствие "-1" на позиции (x,y) и "1" на позиции (y,x); если связи между вершинами нет, то ставится в соответствие "0".