实验三 动态规划——最短路径问题
一、实验目的:
- 掌握动态规划的基本概念
- 掌握动态规划的最优化原理
- 利用Python代码求解动态规划最短路径问题
二、实验内容和步骤:
- 数据输入:
根据图形信息,分别存储A->B、B->C 、C->D 的距离
- 编写动态规划求解函数
- 求解图中的最短路径问题
按照“A->B->C->D”的格式输出
import pandas as pd
import numpy as np
df1=pd.DataFrame(np.array([[10,20]]),index=["A"],columns=['B1','B2'])
df2=pd.DataFrame(np.array([[30,10],[5,20]]),index=["B1","B2"],columns=['C1','C2'])
df3=pd.DataFrame(np.array([[20],[10]]),index=["C1","C2"],columns=['D'])
ll=[df2,df1]
ll1=[df1]
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=df3['D']
h1=pp(t1,df2)
print('A',end='->')
for m in range(len(cv)):
xc=cv.pop()
x1=xc.sort_values(by='v')
print(x1['n'].values[0],end='->')
print('D')