ComeçarComece de graça

Verificando se há autoalças no grafo

Como Eric comentou, o NetworkX também permite arestas que começam e terminam no mesmo nó; embora isso não seja intuitivo em um grafo de rede social, é útil para modelar dados como redes de viagens, em que as pessoas começam em um local e terminam em outro.

É útil verificar isso antes de seguir com análises adicionais, e o NetworkX fornece um método para esse propósito: nx.number_of_selfloops(G).

Neste exercício e também nos próximos, você achará a instrução assert útil. Uma asserção verifica se a expressão colocada após ela é avaliada como True; caso contrário, ela lançará um AssertionError.

Para começar, chame a função nx.number_of_selfloops() passando T, no IPython Shell, para obter o número de arestas que começam e terminam no mesmo nó. Várias autoalças foram adicionadas sinteticamente ao grafo. Sua tarefa neste exercício é escrever uma função que retorne essas arestas.

Este exercício faz parte do curso

Introdução à Análise de Redes em Python

Ver curso

Instruções do exercício

  • Defina uma função chamada find_selfloop_nodes() que recebe um argumento: G.
    • Usando um loop for, itere por todas as arestas em G (excluindo metadados).
    • Se o nó u for igual ao nó v:
      • Adicione u à lista nodes_in_selfloops.
      • Retorne a lista nodes_in_selfloops.
  • Verifique se o número de autoalças no grafo é igual ao número de nós em autoalças. Isso já foi feito para você, então clique em 'Enviar Resposta' para ver o resultado!

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Define find_selfloop_nodes()
def ____:
    """
    Finds all nodes that have self-loops in the graph G.
    """
    nodes_in_selfloops = []

    # Iterate over all the edges of G
    for u, v in ____:

    # Check if node u and node v are the same
        if ____:

            # Append node u to nodes_in_selfloops
            ____

    return nodes_in_selfloops

# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))
Editar e executar o código