示例如下:
import pandas as pd
import numpy as np
data = [(0, 1, 12, np.inf, np.inf, np.inf),
(np.inf, 0, 9, 3, np.inf, np.inf),
(np.inf, np.inf, 0, np.inf, 5, np.inf),
(np.inf, np.inf, 4, 0, 13, 15),
(np.inf, np.inf, np.inf, np.inf, 0, 4),
(np.inf, np.inf, np.inf, np.inf, np.inf, 0)]
disance = pd.DataFrame(data, index=[i for i in range(1, len(data) + 1)], columns=[i for i in range(1, len(data) + 1)])
print("邻接矩阵为:")
print(disance)
biao = [(0, " ", 1),
(np.inf, None, 0),
(np.inf, None, 0),
(np.inf, None, 0),
(np.inf, None, 0),
(np.inf, None, 0)]
biao = pd.DataFrame(biao, index=[i for i in range(1, len(data) + 1)], columns=['dis', 'behind', 'signal'])
a = np.inf
better = [1]
long = [0, np.inf, np.inf, np.inf, np.inf, np.inf]
for j in better:
start = disance.iloc[j - 1, :]
for i in range(1, len(data) + 1):
if (start[i] != np.inf) and (start[i] != 0):
if long[j - 1] + disance.iloc[j - 1, i - 1] < biao.iloc[i - 1, 0]:
biao.iloc[i - 1, 0] = long[j - 1] + disance.iloc[j - 1, i - 1]
biao.iloc[i - 1, 1] = j
for z in range(1, len(long) + 1):
long[z - 1] = biao.iloc[z - 1, 0]
m = 1
for k in range(1, len(biao) + 1):
if (biao.iloc[k - 1, 0] < a) and (biao.iloc[k - 1, 2] != 1):
a, m = biao.iloc[k - 1, 0], k
biao.iloc[m - 1, 2] = 1
if m != 1:
better.append(m)
a = np.inf
print("-" * 20)
print(biao)