НачатьНачать бесплатно

Подграфы 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()
Редактировать и запускать код