#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu May 30 10:53:38 2019
@author: lg
"""
import pandas as pd
import numpy as np
df1=pd.DataFrame(np.array([[4,5,2]]),index=["A"],columns=['B1','B2','B3'])
df2=pd.DataFrame(np.array([[6,2,5],[5,3,4],[7,5,8]]),index=['B1','B2','B3'],columns=['C1','C2','C3'])
df3=pd.DataFrame(np.array([[4,4],[4,7],[5,2]]),index=['C1','C2','C3'],columns=['D1','D2'])
df4=pd.DataFrame(np.array([[5],[4]]),index=['D1','D2'],columns=['E'])
ll=[df3,df2,df1]
ll1=[df1,df2]
cv=[]
def pp(t,df):
mm=df.index
f=pd.Series()
g=[]
for j in mm:
m1=df.loc[j]
m2=m1+t
m3=m2.sort_values()
f[j]=m3[0]
g.append(m3.index[0])
dc=pd.DataFrame()
dc['v']=f.values
dc['n']=g
dc.index=f.index
# print(dc)
cv.append(dc)
if len(ll1)>0:
df=ll1.pop()
t=pp(dc['v'],df)
else:
return dc
t1=df4['E']
h1=pp(t1,df3)
for m in range(len(cv)):
xc=cv.pop()
x1=xc.sort_values(by='v')
print(x1['n'].values[0])
B1
C3
D2
所以最短路线为A B1 C3 D2 E,这个程序有点,问题实际上可能存在多条路线,这个程序只取一条