Веду на сто
Конспект

Информационные модели: графы, таблицы, базы данных

Представления графов, оптимальные пути, подсчет путей в DAG и связи таблиц.

На экзамене

В нумерации проекта КИМ 2027 это задания 1, 3 и 23: сопоставление моделей, связанные таблицы и анализ графа с поиском оптимального пути или количества путей.

Формулы и факты

ПонятиеКороткое правило
ПутьСоседние вершины соединены ребром нужного направления
Длина путиСумма весов пройденных ребер
Степень вершиныЧисло примыкающих ребер; для орграфа входящие и исходящие дуги считают отдельно
Матрица смежностиЯчейка показывает наличие или вес ребра
DAGОриентированный ациклический граф: направленных циклов нет
Первичный ключОднозначно определяет запись таблицы
Внешний ключСсылается на первичный ключ другой таблицы
  • Матрица смежности неориентированного графа симметрична относительно главной диагонали.
  • В ориентированном графе переход разрешен только по направлению дуги.
  • Условие "A и B": верны обе части. Условие "A или B": верна хотя бы одна часть.
  • Количество: считай отобранные строки. Сумма: складывай нужное поле отобранных строк.

Алгоритм

Граф и таблица

  1. Определи, есть ли направления и веса.
  2. Сравни степени вершин или числа входящих и исходящих дуг.
  3. Начни с уникальных признаков: тупик, максимальная степень, редкий набор соседей.
  4. Зафиксируй соответствие и проверь всех соседей.
  5. Для пути проверь каждое направление и сложи веса.

Граф из файла

  1. Проверь формат строк, направления, веса, старт и финиш.
  2. Для числа путей в DAG найди топологический порядок: номера вершин его не заменяют.
  3. Поставь старту 1, остальным 0; передавай количество путей по исходящим дугам.
  4. Для оптимального пути в DAG используй минимум или максимум суммы результата предшественника и веса дуги.
  5. Алгоритм Дейкстры применим для кратчайшего пути с неотрицательными весами.
C(s)=1,\qquad C(v)=\sum_{u \to v} C(u)

Связанные таблицы

  1. Определи смысл строки каждой таблицы.
  2. Найди первичный и внешний ключи.
  3. Соедини строки по равным значениям ключей.
  4. Примени условия отбора по отдельности.
  5. Посчитай именно то, что требуется: строки, разные объекты или сумму поля.

Ловушки

  • Путают: число ребер и сумму весов. Сверь: выпиши веса маршрута отдельно.
  • Путают: пустую ячейку и ребро веса 0. Сверь: прочитай обозначения таблицы.
  • Путают: номер строки и ключ записи. Сверь: соединяй только указанные поля.
  • Путают: строки и уникальные значения. Сверь: проверь, нужно ли убирать повторы.
  • Путают: номера вершин и порядок расчета. Сверь: в DAG сначала обработай всех предшественников. Недостижимость не обозначай обычным нулевым расстоянием.