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
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 emG(excluindo metadados). - Se o nó
ufor igual ao nóv:- Adicione
uà listanodes_in_selfloops. - Retorne a lista
nodes_in_selfloops.
- Adicione
- Usando um loop
- 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))