- •Структуры данных. Классификация
- •Алгоритмы. Определение. Как алгоритмы соотносятся со структурами данных.
- •Оценка сложности алгоритма. Способы. Меры оценки сложности.
- •Оценка сложности алгоритма. Худший, лучший случай и в среднем.
- •Массивы и сортировка массивов. Сортировка Шелла.Алг. Сложность
- •Массивы и сортировка массивов. Быстрая сортировка. Алг. Сложность
- •Списки. Виды списков. Организация списков при помощи массивов.
- •Стек. Организация стека при помощи массива, динамической структуры.
- •Очередь. Организация очереди при помощи массива. Динамической структуры.Двух стеков.
- •Деревья. Определения. Высота, степень дерева, степень узла. Бинарные деревья.
- •Бинарные деревья. Организация бинарных деревьев при помощи массива.
- •Бинарные деревья поиска. Организация деревьев при помощи динамических структур.
- •Бинарные деревья поиска. Операции. Удаление элементов из дерева. Случай 1. Узел — лист (нет потомков)
- •🔹 Случай 2. У узла один потомок (только левое или только правое поддерево)
- •🔹 Случай 3. У узла два потомка
- •Бинарные деревья. Стратегии обхода деревьев. В ширину.
- •Бинарные деревья. Стратегии обхода деревьев. В глубину.
- •Графы. Способы задания графов. Матрица инцидентности. Матрица смежности.
- •🔸 1. Матрица смежности
- •🔸 2. Матрица инцидентности
- •Графы. Обходы графов. Поиск в ширину и глубину.
- •Кратчайшие пути на графах. Алгоритм дейстры
- •Хранение данных в формате json
Графы. Способы задания графов. Матрица инцидентности. Матрица смежности.
Граф — это совокупность вершин (узлов) и рёбер (связей между ними). Бывает:
Неориентированный — рёбра без направления.
Ориентированный (орграф) — рёбра имеют направление (дуги).
🔸 1. Матрица смежности
Квадратная матрица n × n (n — число вершин).
A[i][j] = 1, если есть ребро из i в j; иначе 0.
В взвешенном графе вместо 1 ставится вес ребра (любое число).
Для неориентированного графа — матрица симметрична.
✅ Плюсы: быстрая проверка наличия ребра — O(1). ❌ Минус: память O(n²) — плохо при разреженных графах.
🔸 2. Матрица инцидентности
Матрица n × m (n — вершины, m — рёбра).
Показывает, инцидентна ли вершина ребру.
Значения:
Неориентированный граф:
1 — вершина принадлежит ребру,
0 — не принадлежит.
Ориентированный граф:
–1 — вершина — начало дуги,
+1 — конец дуги,
0 — не связана.
✅ Используется в теории потоков, цепей. ❌ Не подходит для хранения весов, память O(n·m).
Графы. Обходы графов. Поиск в ширину и глубину.
Обход графа — это процесс систематического посещения всех его вершин и рёбер. Основные стратегии обхода: поиск в ширину (BFS) и поиск в глубину (DFS).
Обход бинарного дерева — это процесс посещения всех его узлов по одному разу в определённом порядке.
Один из главных подходов — это обход в глубину (Depth-First Search, DFS). При таком обходе мы сначала идём как можно глубже по одной ветке, доходим до листа, а потом возвращаемся назад, чтобы исследовать другие ветки.
В бинарных деревьях обход в глубину делится на три основных стратегии, в зависимости от того, в какой момент мы обрабатываем (например, выводим) значение текущего узла:
1. Прямой обход (Pre-order)
Порядок: корень → левое поддерево → правое поддерево. Сначала обрабатываем сам узел, затем рекурсивно обходим левого ребёнка, потом — правого.
Пример: такой обход часто используется для создания копии дерева или вывода структуры (например, в виде префиксной записи выражения).
2. Центральный (симметричный) обход (In-order)
Порядок: левое поддерево → корень → правое поддерево. Сначала идём влево, потом обрабатываем узел, потом — вправо.
В бинарном дереве поиска такой обход выводит все элементы в порядке возрастания — это его главное преимущество
3. Обратный обход (Post-order)
Порядок: левое поддерево → правое поддерево → корень. Сначала полностью обходим левое поддерево, потом правое, и только в самом конце обрабатываем текущий узел.
Такой обход используется, например, при удалении дерева — сначала удаляем детей, потом родителя, чтобы не потерять ссылки.
Кратчайшие пути на графах. Алгоритм дейстры
Он работает так:
Начинаем с исходной вершины (расстояние до неё — 0, до всех остальных — бесконечность).
На каждом шаге выбираем ещё необработанную вершину с наименьшим известным расстоянием.
Для всех её соседей проверяем: не короче ли путь до них через текущую вершину — если да, обновляем расстояние и запоминаем, откуда пришли.
Вершину помечаем как обработанную — её кратчайший путь теперь точно найден.
Повторяем, пока не обработаем все вершины или не найдём путь до нужной.
В конце можно восстановить сам путь, пройдя назад по «откуда пришли» и развернув последовательность.
Кратчайшие пути на графах. Алгоритм флойда.
Кратчайшие пути на графах. Волновой алгоритм.
Задача коммивояжера.
Форматы данных XML
Вот несколько известных XML-форматов:
HTML (в ранних версиях) — хотя сейчас HTML5 уже не строго XML, но XHTML — это валидный XML-формат для веб-страниц.
RSS / Atom — форматы для лент новостей и блогов. Например, RSS-лента содержит заголовки, описания и ссылки на статьи — всё в XML-тегах.
SOAP — протокол обмена сообщениями в веб-сервисах, где тело запроса и ответа передаётся в XML.
SVG (Scalable Vector Graphics) — формат векторной графики, записанный в XML. Например, круг или прямоугольник описываются тегами вроде <circle cx="50" cy="50" r="40"/>.
MathML — формат для записи математических формул в XML.
KML (Keyhole Markup Language) — используется в Google Earth для описания географических данных: точек, маршрутов, слоёв.
Office Open XML (например, .docx, .xlsx) — современные документы Microsoft Office на самом деле представляют собой архивы с XML-файлами внутри.
XHTML, DocBook, TEI — форматы для структурированных документов (учебники, техническая документация).
