Радиус и диаметр графа: как считать эксцентриситет

Радиус и диаметр графа - это две числовые характеристики, которые описывают, насколько граф «растянут»: как далеко в худшем случае отстоят друг от друга вершины и насколько компактно его можно охватить из удачно выбранного центра. Эти величины встречаются и в курсе дискретной математики, и в анализе сетей - от компьютерных топологий до социальных графов. Разберём, как они определяются через эксцентриситет, чем отличаются и как посчитать их вручную на конкретном примере.
Расстояние в графе
Всё строится на понятии расстояния. Расстояние между вершинами и - это длина кратчайшего пути между ними. В невзвешенном графе длина пути равна числу рёбер на нём, поэтому соседние вершины находятся на расстоянии , а вершина сама от себя - на расстоянии .
Расстояние симметрично для неориентированного графа: . Если из в вообще нельзя дойти (граф несвязен), то . Это важная оговорка: радиус и диаметр определены только для связного графа, иначе они обращаются в бесконечность.
Эксцентриситет вершины
Чтобы перейти к радиусу и диаметру, сначала введём характеристику отдельной вершины. Эксцентриситет вершины - это расстояние до самой далёкой от неё вершины:
Иными словами, мы стоим в вершине и смотрим, до какой вершины графа добираться дольше всего. Это число и есть эксцентриситет. Вершина с маленьким эксцентриситетом «удобно расположена» - она близка ко всем остальным; вершина с большим эксцентриситетом, наоборот, торчит на краю.
Чтобы не путаться в определениях, удобно прогнать конкретный граф и сразу увидеть все эксцентриситеты, радиус, диаметр и центр. Введите рёбра ниже - разбор будет пошаговым.
Определение радиуса и диаметра
Когда эксцентриситеты всех вершин посчитаны, радиус и диаметр получаются почти автоматически.
Радиус графа - это наименьший из эксцентриситетов:
Диаметр графа - это наибольший из эксцентриситетов, что эквивалентно максимальному расстоянию между любыми двумя вершинами:
Радиус отвечает на вопрос «как близко можно подобраться ко всем вершинам сразу из лучшей точки», а диаметр - «насколько далеки самые удалённые вершины». Диаметр всегда не меньше радиуса.
Связь радиуса и диаметра
Радиус и диаметр не независимы. Для любого связного графа выполняется двойное неравенство:
Левая часть очевидна: минимум по эксцентриситетам не превосходит максимума. Правая часть менее очевидна, но доказывается через неравенство треугольника. Возьмём центральную вершину с и любые две вершины . Тогда
Поскольку это верно для любой пары, максимум расстояний - то есть диаметр - тоже не превосходит . Эта оценка точная: например, у простой цепи (пути) диаметр ровно вдвое больше радиуса, а у полного графа радиус и диаметр совпадают и равны .
Центр и периферия графа
Эксцентриситет естественно делит вершины на два особых множества.
Центр графа - множество вершин с минимальным эксцентриситетом, то есть тех, у кого . Это «самые удобные» точки: из них до любой другой вершины не дальше радиуса. У дерева центр состоит из одной или двух вершин - это классический результат, удобный для проверки.
Периферия - вершины с максимальным эксцентриситетом, . Это самые «окраинные» вершины; концы диаметрального пути всегда лежат в периферии.
Если граф ищется как часть задачи о расположении объекта (склада, сервера, ретранслятора), то ответом обычно служит именно центр: размещение в центральной вершине минимизирует наихудшее расстояние до потребителей.
Как считать на практике
Алгоритм прямолинеен и опирается на матрицу кратчайших расстояний.
- Для каждой вершины запускаем обход в ширину (BFS) - он за один проход даёт расстояния до всех остальных вершин в невзвешенном графе.
- По строке матрицы для вершины берём максимум - это .
- Минимум по всем эксцентриситетам даёт радиус, максимум - диаметр.
- Вершины, на которых достигается минимум, образуют центр; на которых максимум - периферию.
Для взвешенного графа BFS заменяется на алгоритм Дейкстры, а для случая с произвольными весами используют алгоритм Дейкстры на взвешенном графе из каждой вершины. Если граф плотный, вместо запусков BFS иногда удобнее посчитать все попарные расстояния алгоритмом Флойда - Уоршелла за .
Сложность всей процедуры через BFS - , где - число вершин, - число рёбер. Это вполне приемлемо для учебных задач и графов средних размеров. Для очень больших сетей точное вычисление диаметра дорого, и тогда переходят к приближённым оценкам: например, делают несколько BFS из случайно выбранных вершин и берут максимум найденных расстояний как нижнюю границу диаметра.
Псевдокод вычисления
Базовый алгоритм через матрицу расстояний выглядит так:
для каждой вершины v:
dist[v] = BFS(v) # расстояния от v до всех вершин
ecc[v] = max(dist[v]) # эксцентриситет v
radius = min(ecc)
diameter = max(ecc)
center = { v : ecc[v] == radius }
periphery = { v : ecc[v] == diameter }
Здесь BFS(v) возвращает массив расстояний от ; если в нём остался (какая-то вершина недостижима), граф несвязен и метрики не определены конечным числом. Этот же каркас лежит в основе инструмента выше - он просит модель построить матрицу расстояний и вывести все промежуточные величины, чтобы решение можно было проверить руками.
Удобный приём для контроля: суммарно радиус и диаметр определяются одной матрицей расстояний. Построив её один раз, вы получаете и эксцентриситеты, и центр, и периферию - пересчитывать ничего не нужно.
Пример вручную
Возьмём граф-путь из пяти вершин . Матрица расстояний даёт эксцентриситеты: (от конца до конца четыре ребра), , а .
Тогда радиус , диаметр . Центр - единственная вершина , периферия - концы и . Заметьте, неравенство обращается здесь в равенство: .
Частые ошибки
- Считают эксцентриситет как сумму расстояний до всех вершин, а не максимум. Эксцентриситет - это именно , сумма дала бы другую характеристику (близость).
- Забывают, что для несвязного графа радиус и диаметр равны , и пытаются вернуть конечное число по одной компоненте.
- Путают радиус с «половиной диаметра». Неравенство верно, но равенство выполняется не всегда.
- В ориентированном графе берут симметрично. Для орграфа расстояние несимметрично, и эксцентриситет считают по исходящим путям.
- Включают в центр все вершины «примерно посередине». В центр входят только те, у кого эксцентриситет в точности равен радиусу.
FAQ
Может ли радиус равняться диаметру? Да. У полного графа все эксцентриситеты равны , поэтому . В общем случае равенство означает, что у графа нет «удобной» центральной вершины - все одинаково удалены от периферии.
Чем эксцентриситет отличается от степени вершины? Степень - это число рёбер, инцидентных вершине (локальная величина). Эксцентриситет - расстояние до самой далёкой вершины (глобальная). Вершина высокой степени может иметь большой эксцентриситет и наоборот.
Как радиус и диаметр меняются при добавлении ребра? Добавление ребра не может увеличить расстояния, поэтому радиус и диаметр либо уменьшаются, либо остаются прежними. Это монотонное свойство удобно использовать для проверки решений.
Коротко
Радиус и диаметр графа выражаются через эксцентриситет вершины - максимум расстояния до остальных. Радиус , диаметр , и всегда . Вершины минимального эксцентриситета образуют центр, максимального - периферию. На практике всё считается из одной матрицы кратчайших расстояний, построенной обходами в ширину из каждой вершины.
Читайте также

Эксцентриситет вершины графа: определение и расчёт
Что такое эксцентриситет вершины графа: определение через расстояние, формула, пошаговый расчёт по матрице кратчайших путей, свойства и связь с радиусом, диаметром, центром.

Алгоритм Дейкстры: как найти кратчайший путь в графе
Разбираем алгоритм Дейкстры на взвешенном графе по шагам: как он находит кратчайшие пути от стартовой вершины и почему ломается на ребрах с отрицательными весами.

Алгоритм Беллмана-Форда: пути с отрицательными весами
Разбираем алгоритм Беллмана-Форда: как искать кратчайшие пути в графе с отрицательными рёбрами, ловить отрицательные циклы и чем он отличается от Дейкстры.