Graph der Collatz-Sequenzen
Networkx macht es wirklich einfach ein Netzwerk mit den Collatz-Sequenzen zu erstellen:
import networkx as nx from networkx.drawing.nx_agraph import write_dot # Create the graph G = nx.DiGraph() for n in range(2,27): while n != 1: nxt = 3 * n + 1 if n % 2 == 1 else n // 2 G.add_edge( n, nxt ) n = nxt write_dot( G, "nx.dot" )
Dass nur die Sequenzen bis 26 aufgezeichnet werden hat einen einfachen Grund: die Sequenz von 27 ist so lang dass das Diagramm unansehnlich wird.
Wer genau hinschaut findet auch heraus dass der Zyklus 1 - 4 - 2 - 1 fehlt. Den habe ich ebenfalls bewusst weggelassen.
Ein schönes Diagramm von diesem Netzwerk zeichnen kann Networkx aber nicht. Deshalb wird das Netz in ein DOT-File geschrieben.
Das DOT-File wird mit dem Layout-Tool dot aus dem Graphwiz-Paket in ein SVG umgewandelt:
dot -Tsvg < nx.dot > nx.svg
Das Resultat sieht so aus: