[PYTHON] Verknüpfte Komponenten des Diagramms

Hallo. Verkettete Komponenten des Diagramms ([verkettetes Diagramm](https://ja.wikipedia.org/wiki/concatenated graph), [elementare Satzdatenstruktur](https://ja.wikipedia.org/wiki/elementäre Satzdatenstruktur) Ich fand "Python verbundene Komponenten" (Stapelüberlauf) in der Berechnung zu finden. Ich habe die Quelle dort fast so wie sie ist ausgeführt und sie zur Überprüfung mit den Ergebnissen von networkx verglichen.

graph.jpg

$ ./connected_components.py
graph = {0: [1, 2, 3], 1: [2], 2: [], 3: [4, 6], 4: [], 5: [7], 6: [], 7: []}
[[0, 1, 2, 3, 4, 6], [5, 7]]
True (equal to one derived from networkx)

connected_components.py


#!/usr/bin/env python
from __future__ import print_function

def connected_components(graph):
    seen = set()
    def component(n):
        nodes = set([n])
        while nodes:
            n = nodes.pop()
            seen.add(n)
            nodes |= set(graph[n]) - seen
            yield n
    for n in graph:
        if n not in seen:
            yield component(n)

def print_gen(gen):
    print([list(x) for x in gen])

def check_connected(graph):
    import networkx as nx
    G = nx.Graph()
    G.add_nodes_from(graph.keys())
    for k, v in graph.items():
        for n in v:
            G.add_edge(k, n)
    check = sorted([set(x) for x in nx.connected_components(G)]) == sorted([set(x) for x in connected_components(graph)])
    print(check, "(equal to one derived from networkx)")

graph = {0: [1, 2, 3], 1: [2], 2: [], 3: [4, 6], 4: [], 5: [7], 6: [], 7: []}

print("graph =", graph)
print_gen(connected_components(graph))
check_connected(graph)

# graph:
#       0
#     / | \
#    1--2  3
#          | \
#          4  6
#    5--7

»Es tut mir leid, dass die Abteilung für Scheckurteile etwas kindisch ist.

Recommended Posts

Verknüpfte Komponenten des Diagramms
Über die Komponenten von Luigi
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Die Basis der Graphentheorie mit Matplotlib-Animation
Der Beginn von cif2cell
Die Bedeutung des Selbst
der Zen von Python
Die Geschichte von sys.path.append ()
Rache der Typen: Rache der Typen
Lassen Sie die Häkchen nach dem Dezimalpunkt in matplotlib weg
Richten Sie die Version von chromedriver_binary aus
Scraping das Ergebnis von "Schedule-Kun"
10. Zählen der Anzahl der Zeilen
Die Geschichte des Baus von Zabbix 4.4
Auf dem Weg zum Ruhestand von Python2
Vergleichen Sie die Schriftarten von Jupyter-Themen
Holen Sie sich die Anzahl der Ziffern
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Erläutern Sie den Code von Tensorflow_in_ROS
Verwenden Sie die Clustering-Ergebnisse erneut
GoPiGo3 des alten Mannes
Schneiden Sie das PyTorch-Berechnungsdiagramm aus
Berechnen Sie die Anzahl der Änderungen
Ändern Sie das Thema von Jupyter
Die Popularität von Programmiersprachen
Ändern Sie den Stil von matplotlib
Ermitteln Sie den Durchmesser des Diagramms anhand der Suche nach Breitenpriorität (Python-Speicher).
Einzeiliges Basisdiagramm von HoloViews
Filtern Sie die Ausgabe von tracemalloc
Über die Funktionen von Python
Interaktives Diagramm eines 3D-Diagramms
Simulation des Inhalts der Brieftasche
Die Kraft der Pandas: Python
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
Zeigen Sie das Bild der an den PC angeschlossenen Kamera auf der GUI an.
[TensorFlow 2] So überprüfen Sie den Inhalt von Tensor im Diagrammmodus
Zählen Sie mit NetworkX den maximal verketteten Teil eines zufälligen Diagramms
Seaborn-Grundlagen für Anfänger ① Aggregiertes Diagramm der Anzahl der Daten (Countplot)
Die Spezifikationen von Pytz haben sich geändert
Testen Sie die Version des Argparse-Moduls
Finden Sie die Definition des Wertes von errno
Der Tag des Dockerlaufs (Hinweis)
Die Geschichte von Python und die Geschichte von NaN
Erhöhen Sie die Version von pyenv selbst
Holen Sie sich die Anzahl der Ansichten von Qiita
Erster Python 3 ~ Der Beginn der Wiederholung ~
Die Geschichte der Teilnahme an AtCoder
Ändern Sie den Hintergrund von Ubuntu (GNOME)
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Verstehen Sie den Inhalt der sklearn-Pipeline
Die Welt der Bücher der Steuerungstechnik
Treten Sie ein in die Dunkelheit von msync
Nimm das Ausführungsprotokoll von Sellerie
Testen Sie die Eignung der Verteilung
Existenz aus Sicht von Python