我尝试使用以下代码构建Collatz图的子图:
def makecollatz(n):
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_node(5)
for r in range (n):
for node in [x for x in G.nodes() if G.degree(x)<=1]:
# for node in [G.nodes() if G.degree(x)<=1]:
G.add_edges_from(newpair(node))
nx.draw(G, with_labels=True)
return None; # temp
def newpair (node):
nodeset=[]
for x in [node]:
nodeset.extend({
1: [[x,int((4*x-1)/3)],[x,int((16*x-1)/3)],[x,int((64*x-1)/3)]],
2: [[x,int((2*x-1)/3)],[x,int((8*x-1)/3)],[x,int((32*x-1)/3)]]
}[x % 3])
return nodeset;
makecollatz(1)
makecollatz()的参数确定进程绘制的迭代次数。它适用于n = 1但是对于较大的n,它似乎遇到问题,我需要将迭代发送到newpair函数但我发送一个整数。我不知道如何解决这个问题,所以它适用于所有人。我确定它很简单。