算法思想
算法步骤
算法代码
def feiring(D, H):
N = D.shape[0]
W = 0
for i, j in zip(H, H[1:] + [H[0]]):
W += D[i, j]
print("初始H圈为:", [i + 1 for i in H], '权值和为:', W)
Y = np.zeros([N, N])
k_iter = 1
while 1:
for i in range(N - 1):
for j in range(i + 1, N):
if j == i + 1:
H1 = [H[i - 1] if i != 0 else H[-1]] + [H[i], H[j]] + [H[j + 1] if j != N - 1 else H[0]]
H2 = H1.copy()
H2[1], H2[2] = H2[2], H2[1]
Y[i, j] = (D[H1[0], H1[1]] + D[H1[1], H1[2]] + D[H1[2], H1[3]]) - (
D[H2[0], H2[1]] + D[H2[1], H2[2]] + D[H2[2], H2[3]])
elif j == i + (N - 1):
H1 = [H[-2], H[-1], H[0], H[1]]
H2 =