Перейти к основному содержимому
Informatik.uz
Глава 2. Структуры данных

Деревья и графы

Дерево и граф — структуры, описывающие связи между объектами. Рассматриваем их основные понятия, хранение в Python и практическое применение.

Тема 7 из 11Чтение: 2 минОбновлено: 27 октября 2026 г.
Список тем (7 из 11)

Граф — структура из вершин (узлов) и соединяющих их рёбер. Города и дороги между ними, друзья в социальной сети, страницы интернета и ссылки между ними описываются графом. Рёбра могут быть направленными (односторонняя дорога) или ненаправленными; к ребру можно привязать число — расстояние или стоимость. Степень вершины — число рёбер, которые к ней подходят; в любом ненаправленном графе сумма всех степеней равна удвоенному числу рёбер.

Дерево — связный граф без циклов (замкнутых путей). В нём есть одна особая вершина — корень; у каждой остальной вершины есть один «родитель», а вершины без потомков называются листьями. Примеры деревьев: структура папок на компьютере, родословная, схема логического выбора. В дереве из n вершин всегда ровно n − 1 ребро.

В Python удобно хранить граф списками соседних вершин: каждой вершине соответствует список её соседей. Например, создаём словарь g = dict(), затем g["A"] = ["B", "C"], g["B"] = ["A", "D"], g["C"] = ["A"], g["D"] = ["B"]. При такой записи соседи вершины A лежат в g["A"], их легко найти, а памяти тратится немного.

Самая частая задача на графе — обход вершин. Поиск в ширину начинает с исходной вершины, сначала просматривает всех её соседей, затем соседей соседей (с помощью очереди); он находит путь с наименьшим числом рёбер. Поиск в глубину идёт по одному пути как можно дальше, а потом возвращается (с помощью стека или рекурсии). Навигаторы, рекомендательные системы и сетевая маршрутизация основаны на алгоритмах на графах.

Главное

  • Граф состоит из вершин и рёбер; рёбра могут быть направленными или ненаправленными.
  • Дерево — связный граф без циклов; в дереве из n вершин n − 1 ребро.
  • В дереве есть корень, отношение родитель — потомок и листья.
  • В Python граф удобно хранить в словаре со списками соседних вершин.
  • Поиск в ширину находит кратчайший (по числу рёбер) путь.

Практические задания

  1. Даны две группы дружбы: A–B, A–C, B–C, D–E. Нарисуйте этот граф, найдите степень каждой вершины и проверьте, что сумма степеней равна удвоенному числу рёбер.
  2. Изобразите в виде дерева структуру вашей школы «директор — заместители — классные руководители»: укажите корень, листья и найдите число рёбер по числу вершин.
  3. Запишите граф с вершинами A, B, C, D из текста на Python в виде словаря и составьте короткую программу, выводящую соседей вершины A. Затем вручную найдите путь из A в D с наименьшим числом рёбер.

Вопросы для закрепления

Проверьте себя: сначала подумайте, потом откройте ответ.

  1. 1Каким частным случаем графа является дерево?
    Связный граф без циклов; в нём для n вершин ровно n − 1 ребро.
  2. 2Какой обход графа находит путь с наименьшим числом рёбер?
    Поиск в ширину: он просматривает вершины в порядке удалённости от исходной.
  3. 3Сколько рёбер в дереве с 6 вершинами?
    5, так как рёбер на одно меньше, чем вершин.

Пройдено тем: 0 из 11

Войти и отметить
Informatika 11-sinf darsligi muqovasi
В учебникеИнформатика — 11 класс