python-3.x - 如何在 5 个元组中的元组列表中随机将变量质量更改为正负 delta
问题描述
我需要构建最小权重的生成树并在其中随机选择 5 条边并更改它们的权重。问题的第二部分看起来像是由元组组成的列表中的随机变化,在每个元组中,有必要将变量权重更改为正负 3
这是我的代码:
import sys
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = []
def add_edge(self, u, v, w):
self.graph.append([u,v,w])
def find(self, parent, i):
if parent[i] == i:
return i
return self.find(parent, parent[i])
def apply_union(self, parent, rank, x, y):
xroot = self.find(parent, x)
yroot = self.find(parent, y)
if rank[xroot] < rank[yroot]:
parent[xroot] = yroot
elif rank[xroot] > rank[yroot]:
parent[yroot] = xroot
else:
parent[yroot] = xroot
rank[xroot] +=1
def kruskal(self):
result = []
i, e = 0, 0
self.graph = sorted(self.graph, key=lambda item: item[2])
parent = []
rank = []
for node in range(self.V):
parent.append(node)
rank.append(0)
while e < self.V - 1:
u, v, w = self.graph[i]
i = i+1
x = self.find(parent, u)
y = self.find(parent, v)
if x != y:
e = e + 1
result.append([u, v, w])
self.apply_union(parent, rank, x, y)
for u, v , weight in result:
print("%d - %d: %d" % (u, v, weight))
if __name__=='__main__':
g = Graph(6)
for x,y,w in [(0,1,4),(0,2,4),(1,2,2),(1,0,4),(2,0,4),(2,1,2),(2,3,3),(2,5,2),(2,4,4),(3,2,3),(3,4,3),(4,2,4),(4,3,3),(5,2,2),(5,4,3)]:
g.add_edge(x,y,w)
g.kruskal()
请帮助解决问题的第二部分
解决方案
推荐阅读
- javascript - 打开手风琴面板主体一个或多个
- mysql - 插入多行 JPA Spring Boot Mysql
- elasticsearch - 升级到 5.6 后过滤器中的 Elasticsearch query_string 失败
- javascript - web worker 每次都会重新加载导入的模块吗?
- sql - 亚马逊红移查询中“来自”附近的语法错误
- python - Pymongo:无法从 mongodb 中找到记录
- python - Python QT5 样式表不适用于 Raspbian
- javascript - D3js(v3)中路径元素的过滤数据集
- protocol-buffers - 如何降级 libprotobuf.so
- angular - 在过滤器输入中按下键后,primeng 多选选项框跳转到位置 0,0