考虑如图所示的无权无向图,每一条边上的权值都代表了该链路的通信费用或时间。
x1 = ([1, 0, 0, 1], 1)
x2 = ([0, 1, 1, 0], 2)
x3 = ([0, 0, 0, 1], 2)
x4 = ([1, 0, 0, 0], 1)
x5 = ([1, 1, 1, 0], 1)
x6 = ([0, 1, 1, 1], 2)
x7 = ([1, 1, 1, 1], 1)
w1 = x1[0]
w2 = x2[0]
for x in (x3,x4,x5,x6,x7):
Cx = x[0]
p1 = (w1[0]-Cx[0])*(w1[0]-Cx[0])+(w1[1]-Cx[1])*(w1[1]-Cx[1])+(w1[2]-Cx[2])*(w1[2]-Cx[2])+(w1[3]-Cx[3])*(w1[3]-Cx[3])
p2 = (w2[0]-Cx[0])*(w2[0]-Cx[0])+(w2[1]-Cx[1])*(w2[1]-Cx[1])+(w2[2]-Cx[2])*(w2[2]-Cx[2])+(w2[3]-Cx[3])*(w2[3]-Cx[3])
if p1 <= p2:
q = 1
if(x[1] == q):
w1[0] = round(w1[0] + 0.1*(Cx[0] - w1[0]),3)
w1[1] = round(w1[1] + 0.1*(Cx[1] - w1[1]),3)
w1[2] = round(w1[2] + 0.1*(Cx[2] - w1[2]),3)
w1[3] = round(w1[3] + 0.1*(Cx[3] - w1[3]),3)
else:
w1[0] = round(w1[0] - 0.1*(Cx[0] - w1[0]),3)
w1[1] = round(w1[1] - 0.1*(Cx[1] - w1[1]),3)
w1[2] = round(w1[2] - 0.1*(Cx[2] - w1[2]),3)
w1[3] = round(w1[3] - 0.1*(Cx[3] - w1[3]),3)
else:
q = 2
if(x[1] == q):
w2[0] = round(w2[0] + 0.1*(Cx[0] - w2[0]),3)
w2[1] = round(w2[1] + 0.1*(Cx[1] - w2[1]),3)
w2[2] = round(w2[2] + 0.1*(Cx[2] - w2[2]),3)
w2[3] = round(w2[3] + 0.1*(Cx[3] - w2[3]),3)
else:
w2[0] = round(w2[0] - 0.1*(Cx[0] - w2[0]),3)
w2[1] = round(w2[1] - 0.1*(Cx[1] - w2[1]),3)
w2[2] = round(w2[2] - 0.1*(Cx[2] - w2[2]),3)
w2[3] = round(w2[3] - 0.1*(Cx[3] - w2[3]),3)
print(w1,w2)
思路已经非常清晰,这是程序段。