使用动态规划求Y到G的最短路径解决方案

使用动态规划求Y到G的最短路径解决方案

python动态规划最短路径用class和递归

python动态规划最短路径用class和递归
上面的图是自己画的,每个点之间的费用已经写明。每天练习编程,自己给自己出题,快速解决以上从Y点到G点的最便宜路径问题。
承接国内外留学生Python Homework ,assignment,代写Python家庭作业。Python留学生教学辅导。Python留学生作业辅导。

"""
使用动态规划求Y到G的最短路径解决方案,
以下程序设计了一个Node类。它表示一个节点,每个节点有前置节点及到前置节点的权值。
即一个节点到另一个节点的费用。
"""
class Node:
    def __init__(self,name,prenodes):   # prenodes = {a:10,b:20,c:30},a,b,c也是节点
        """prenodes是它的前趋节点字典"""
        self.name = name                # 节点的名字
        self.prenodes = prenodes        
        
def f(node):
    """node:一个节点"""   
    if node.prenodes:          # 如果它有前置节点
       dist = []       
       for n in node.prenodes: # 遍历它的所有前置节点
           dist.append( f(n)+node.prenodes[n] ) #
       return min(dist)
    else:
        return 0        

y = Node('y',{})     # 第一个节点,没有前置节点
d = Node('d',{y:5})  # 这个节点有一个前置节点
e = Node('e',{y:8})
x = Node('x',{y:2})

a = Node('a',{d:9,e:3})
b = Node('a',{e:2})
c = Node('c',{x:1})

g = Node('g',{a:3,b:2,c:8})
print(f(g))

承接国内外留学生Python Homework ,assignment,代写Python家庭作业。Python留学生教学辅导。Python留学生作业辅导。

李兴球

李兴球的博客是Python创意编程原创博客