動態規劃求最優路徑

2021-08-18 20:38:14 字數 1969 閱讀 1820

dynamic.py,基於動態規劃求最優路徑

import matplotlib.pyplot as plt

import pylab as pl

import connmysql

import pandas as pd

sql2 = "select id, distance,duration from trafic"

checklist = connmysql.getdata(sql2)

ids=

for i in range(0,len(checklist)):

time_dataframe = pd.dataframe(columns=['distance','duration'], index=ids)

# print(time_dataframe)

for i in range(0,len(checklist)):

id=checklist[i][0]

time_dataframe.at[ids[i],'distance'] = float(checklist[i][1])#distance

time_dataframe.at[ids[i], 'duration'] = float(checklist[i][2] ) # distance

# id='100001-100002'

# print(time_dataframe.at[id,'distance'])

# print(time_dataframe.at['100001-100002','duration'])

# list=['100002','100003','100004','100005','100006']

#基於動態規劃求得最短路徑,計算量會比較小,速度較快

list = ['100002', '100003', '100004', '100005', '100006']

# 基於動態規劃求得最短路徑,計算量會比較小,速度較快

routelist=

route_distance=

for j in range(0,len(list)-1):

print('mm',j)

print('he1', routelist)

print('he2', route_distance)

ids =

distances, routes = {}, {}

for i in range(0, len(list)):

if len(routelist)==0:#當裡面還沒有目標在時

id = list[0] + '-'+list[i]

if list[i]!=list[0]:

else:

if list[i] not in routelist :#計算過的點不再重複計算

id = routelist[j]+ '-'+list[i]

print('he3',ids)

for k in range(0, len(ids)):

distances[ids[k]] = time_dataframe.at[ids[k], 'distance']

print('he4',distances)

route1 = sorted(distances.items(), key=lambda item: item[1]) # 將最小距離取出來

# routes[route1[0][0]] = route1[0][1] # key:100002-100006,values: 3929.0,,儲存離最後乙個點的最優路線

print('he5',route1)

a=route1[0][0].split('-')

if a[0] not in routelist:

if a[1] not in routelist:

print('he6', routelist)

print('he',routelist)

利用動態規劃的思想求最優解

源自 劍指offer 中的剪繩子問題,書中使用的是c 但是我更喜歡用python實現。這裡按照從上而下的順序計算,也就是說我們先得到f 2 f 3 再得到f 4 f 5 直到得到f n for i in range 4,length 1 max length 0 temp i 2 1 for j i...

動態規劃 最優編輯

int findmincost string a,int n,string b,int m,int c0,int c1,int c2 初始化矩陣 dp 0 0 0 for int i 1 i m 1 i for int j 1 j n 1 j for int i 1 i n 1 i return d...

動態規劃 最優編輯

題目 對於兩個字串a和b,我們需要進行插入 刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價,請設計乙個高效演算法,求出將a串變為b串所需要的最少代價。給定兩個字串a和b,及它們的長度和三種操作代價,請返回將a串變為b串所需要的最小代價。保證兩串長度均小於等於300,且三種代價...