Začněte nyníZačněte zdarma

Kontrola smyček na stejném uzlu (self-loops) v grafu

Jak Eric zmínil, NetworkX umožňuje také hrany, které začínají i končí na stejném uzlu. Pro graf sociální sítě by to bylo neintuitivní, ale hodí se například pro modelování sítí cest, kde osoba začíná i končí na stejném místě.

Před další analýzou je užitečné tuto vlastnost ověřit. NetworkX za tím účelem nabízí metodu nx.number_of_selfloops(G).

V tomto cvičení i v dalších ti přijde vhod příkaz assert. Výraz assert zkontroluje, zda je podmínka za ním vyhodnocena jako True — pokud ne, vyvolá AssertionError.

Nejdřív zavolej funkci nx.number_of_selfloops() s argumentem T v IPython Shellu, abys zjistil/a počet hran, které začínají i končí na stejném uzlu. Do grafu bylo uměle přidáno několik takových smyček. Tvým úkolem je napsat funkci, která tyto hrany vrátí.

Toto cvičení je součástí kurzu

Úvod do analýzy sítí v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Definuj funkci find_selfloop_nodes(), která přijímá jeden argument: G.
    • Pomocí smyčky for iteruj přes všechny hrany v G (bez metadat).
    • Pokud se uzel u rovná uzlu v:
      • Přidej u do seznamu nodes_in_selfloops.
      • Vrať seznam nodes_in_selfloops.
  • Ověř, že počet smyček v grafu odpovídá počtu uzlů v těchto smyčkách. Tato část je už hotová — stačí kliknout na Submit Answer a podívat se na výsledek!

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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))
Upravit a spustit kód