Подграфы I
Иногда бывает нужно проанализировать только часть узлов сети. Для этого можно скопировать их в отдельный объект графа с помощью G.subgraph(nodes) — этот метод возвращает новый объект graph (того же типа, что и исходный граф), состоящий из переданного итерируемого набора nodes.
Библиотека matplotlib.pyplot уже импортирована для вас как plt.
Это упражнение является частью курса
Введение в анализ сетей на Python
Инструкции к упражнению
- Напишите функцию
get_nodes_and_nbrs(G, nodes_of_interest), которая извлекает из графаGподграф, состоящий из узловnodes_of_interestи их соседей.- В первом цикле
forвыполните итерацию поnodes_of_interestи добавьте текущий узелnвnodes_to_draw. - Во втором цикле
forвыполните итерацию по соседям узлаnи добавьте всех соседейnbrвnodes_to_draw.
- В первом цикле
- Используйте эту функцию, чтобы извлечь из
Tподграф, состоящий из узлов 29, 38 и 42 (они содержатся в заранее определённом спискеnodes_of_interest) и их соседей. Сохраните результат какT_draw. - Отобразите подграф
T_drawна экране.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
nodes_of_interest = [29, 38, 42]
# Define get_nodes_and_nbrs()
def get_nodes_and_nbrs(G, nodes_of_interest):
"""
Returns a subgraph of the graph `G` with only the `nodes_of_interest` and their neighbors.
"""
nodes_to_draw = []
# Iterate over the nodes of interest
for n in ____:
# Append the nodes of interest to nodes_to_draw
____
# Iterate over all the neighbors of node n
for nbr in ____:
# Append the neighbors of n to nodes_to_draw
____
return G.subgraph(nodes_to_draw)
# Extract the subgraph with the nodes of interest: T_draw
T_draw = ____
# Draw the subgraph to the screen
____
plt.show()