Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры данных ответы на экз.docx
Скачиваний:
0
Добавлен:
13.12.2025
Размер:
45.55 Кб
Скачать
  1. Графы. Способы задания графов. Матрица инцидентности. Матрица смежности.

Граф — это совокупность вершин (узлов) и рёбер (связей между ними). Бывает:

  • Неориентированный — рёбра без направления.

  • Ориентированный (орграф) — рёбра имеют направление (дуги).

🔸 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).

  1. Графы. Обходы графов. Поиск в ширину и глубину.

Обход графа — это процесс систематического посещения всех его вершин и рёбер. Основные стратегии обхода: поиск в ширину (BFS) и поиск в глубину (DFS).

Обход бинарного дерева — это процесс посещения всех его узлов по одному разу в определённом порядке.

Один из главных подходов — это обход в глубину (Depth-First Search, DFS). При таком обходе мы сначала идём как можно глубже по одной ветке, доходим до листа, а потом возвращаемся назад, чтобы исследовать другие ветки.

В бинарных деревьях обход в глубину делится на три основных стратегии, в зависимости от того, в какой момент мы обрабатываем (например, выводим) значение текущего узла:

1. Прямой обход (Pre-order)

Порядок: корень → левое поддерево → правое поддерево. Сначала обрабатываем сам узел, затем рекурсивно обходим левого ребёнка, потом — правого.

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

2. Центральный (симметричный) обход (In-order)

Порядок: левое поддерево → корень → правое поддерево. Сначала идём влево, потом обрабатываем узел, потом — вправо.

В бинарном дереве поиска такой обход выводит все элементы в порядке возрастания — это его главное преимущество

3. Обратный обход (Post-order)

Порядок: левое поддерево → правое поддерево → корень. Сначала полностью обходим левое поддерево, потом правое, и только в самом конце обрабатываем текущий узел.

Такой обход используется, например, при удалении дерева — сначала удаляем детей, потом родителя, чтобы не потерять ссылки.

  1. Кратчайшие пути на графах. Алгоритм дейстры

Он работает так:

  1. Начинаем с исходной вершины (расстояние до неё — 0, до всех остальных — бесконечность).

  2. На каждом шаге выбираем ещё необработанную вершину с наименьшим известным расстоянием.

  3. Для всех её соседей проверяем: не короче ли путь до них через текущую вершину — если да, обновляем расстояние и запоминаем, откуда пришли.

  4. Вершину помечаем как обработанную — её кратчайший путь теперь точно найден.

  5. Повторяем, пока не обработаем все вершины или не найдём путь до нужной.

В конце можно восстановить сам путь, пройдя назад по «откуда пришли» и развернув последовательность.

  1. Кратчайшие пути на графах. Алгоритм флойда.

  1. Кратчайшие пути на графах. Волновой алгоритм.

  1. Задача коммивояжера.

  1. Форматы данных 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 — форматы для структурированных документов (учебники, техническая документация).