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: