使用 NetworkX 构建图节点占用小程序:随机生成无向图并模拟节点占用与释放
好的,下面是一个使用 NetworkX 编写的图节点占用小程序的示例代码:
import random
import time
import networkx as nx
# 创建图
G = nx.Graph()
# 随机生成无向图
def generate_graph(num_nodes):
G.clear()
edges = [(i, j) for i in range(num_nodes) for j in range(i+1, num_nodes)]
G.add_edges_from(edges)
# 将节点占用
def occupy_nodes(nodes):
for node in nodes:
G.nodes[node]['occupied'] = True
# 解除节点占用
def release_nodes(nodes):
for node in nodes:
G.nodes[node]['occupied'] = False
# 随机选择节点
def select_nodes(num_nodes):
return random.sample(range(G.number_of_nodes()), num_nodes)
# 显示图的节点状态
def display_graph():
occupied_nodes = [node for node, attr in G.nodes.data() if attr.get('occupied')]
print('Occupied Nodes:', occupied_nodes)
# 主程序
while True:
num_nodes = int(input('请输入要占用的节点数(输入0退出):'))
if num_nodes == 0:
break
# 生成图
generate_graph(10)
# 进行节点占用和解除占用
while True:
nodes = select_nodes(num_nodes) # 随机选择节点
occupy_nodes(nodes) # 占用节点
display_graph() # 显示图的节点状态
time.sleep(random.randint(1, 5)) # 随机等待几秒
release_nodes(nodes) # 解除占用
display_graph() # 显示图的节点状态
time.sleep(random.randint(1, 5)) # 随机等待几秒
在上述示例代码中,我们首先使用 generate_graph() 函数随机生成一个无向图。然后,根据用户输入的节点数,使用 occupy_nodes() 函数将随机选择的节点进行占用,并使用 release_nodes() 函数解除节点占用。在占用和解除占用的过程中,我们使用 display_graph() 函数显示图的节点状态。通过 time.sleep() 函数来模拟节点占用和解除占用之间的时间间隔。
请注意,这只是一个简单的示例,您可以根据自己的需要进行进一步的修改和扩展。
希望这个示例能帮助到您!如果您还有其他问题,请随时向我提问。
原文地址: https://www.cveoy.top/t/topic/bbEx 著作权归作者所有。请勿转载和采集!