Расстояния между вершинами
Связность сети можно оценить, изучив количество и длину путей между вершинами. Путь — это цепочка связей между вершинами. Количество промежуточных рёбер между двумя вершинами называется геодезическим расстоянием. Вершины, непосредственно соединённые друг с другом, имеют геодезическое расстояние, равное 1. Вершины, у которых есть общий сосед, но между которыми нет прямого соединения, имеют геодезическое расстояние 2, и так далее. В ориентированных сетях направление рёбер учитывается при вычислении расстояний. Если от одной вершины нельзя добраться до другой, следуя по направлению рёбер, геодезическое расстояние между ними считается равным бесконечности. В этом упражнении вы научитесь находить наиболее длинные пути между вершинами сети и определять вершины, находящиеся в пределах \(n\) связей от заданной вершины. Для сетей передачи инфекций, таких как набор данных о кори, это позволяет оценить, насколько быстро болезнь распространяется по сети.
Это упражнение является частью курса
Анализ сетей в R
Инструкции к упражнению
- Найдите длину самого длинного пути в сети с помощью функции
farthest_vertices(). - Определите последовательность вершин этого пути с помощью
get_diameter(). Это покажет, через каких конкретных детей болезнь распространилась дальше всего по сети. - Используйте функцию
ego(), чтобы найти все вершины, достижимые из вершины 42 в пределах 2 связей, а затем — те вершины, из которых можно достичь вершины 42 в пределах двух связей. Первый аргументego()— объект графа, второй — максимальное количество связей между вершинами, третий — интересующая вас вершина, четвёртый — направление связей: исходящие из вершины или входящие в неё.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
library(igraph)
# Which two vertices are the furthest apart in the graph ?
___(g)
# Shows the path sequence between two furthest apart vertices.
___(g)
# Identify vertices that are reachable within two connections from vertex 42
___(g, ___, '42', mode = c('___'))
# Identify vertices that can reach vertex 42 within two connections
___(g, ___, '42', mode = c('___'))