Ответ
Граф — это абстрактная структура данных, состоящая из:
- Вершин (узлов) — представляют сущности.
- Рёбер (связей) — представляют отношения между вершинами.
Основные типы графов:
- Неориентированный граф: ребро соединяет две вершины без направления (A–B).
- Ориентированный граф (Digraph): ребро имеет направление (A → B).
- Взвешенный граф: рёбрам присвоены числовые значения (веса).
Пример реализации на Swift:
// Простое представление графа через список смежности
struct Graph<T: Hashable> {
private var adjacencyList: [T: [T]] = [:]
mutating func addVertex(_ vertex: T) {
adjacencyList[vertex] = []
}
mutating func addEdge(from source: T, to destination: T) {
adjacencyList[source, default: []].append(destination)
// Для неориентированного графа добавить также обратную связь:
// adjacencyList[destination, default: []].append(source)
}
}
// Использование
var graph = Graph<String>()
graph.addVertex("A")
graph.addVertex("B")
graph.addEdge(from: "A", to: "B") // Создаём направленное ребро A → B
Применение: моделирование сетей (социальных, транспортных), иерархий, зависимостей, поиск кратчайшего пути (алгоритмы Дейкстры, BFS).