LoslegenKostenlos loslegen

Prüfen, ob es Selbstschleifen im Graphen gibt

Wie Eric erklärt hat, erlaubt NetworkX auch Kanten, die am selben Knoten beginnen und enden; das wäre für einen sozialen Netzwerkgraphen nicht intuitiv, ist aber nützlich, um Daten wie Reise- oder Wege-Netzwerke zu modellieren, bei denen Personen an einem Ort starten und an einem anderen enden.

Es ist sinnvoll, vor weiteren Analysen darauf zu prüfen, und NetworkX stellt dafür eine Methode bereit: nx.number_of_selfloops(G).

In dieser und späteren Übungen ist der assert-Befehl hilfreich. Ein assert prüft, ob der nachfolgende Ausdruck True ergibt; andernfalls wird ein AssertionError ausgelöst.

Rufe zunächst die Funktion nx.number_of_selfloops() mit T in der IPython-Shell auf, um die Anzahl der Kanten zu erhalten, die am selben Knoten beginnen und enden. Dem Graphen wurden synthetisch mehrere Selbstschleifen hinzugefügt. Deine Aufgabe in dieser Übung ist es, eine Funktion zu schreiben, die diese Kanten zurückgibt.

Diese Übung ist Teil des Kurses

Einstieg in die Netzwerkanalyse mit Python

Kurs anzeigen

Anleitung zur Übung

  • Definiere eine Funktion namens find_selfloop_nodes(), die ein Argument entgegennimmt: G.
    • Iteriere mit einer for-Schleife über alle Kanten in G (ohne Metadaten).
    • Wenn Knoten u gleich Knoten v ist:
      • Hänge u an die Liste nodes_in_selfloops an.
      • Gib die Liste nodes_in_selfloops zurück.
  • Prüfe, dass die Anzahl der Selbstschleifen im Graphen der Anzahl der Knoten in Selbstschleifen entspricht. Das wurde für dich vorbereitet – klicke auf "Antwort senden", um das Ergebnis zu sehen!

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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))
Code bearbeiten und ausführen