A*算法

//我也不知道写的对吗,先放上,之后再改
Astar(graph,start, end):
        
        closed_set = set()
        open_set = set() 
        g_func = {}
        h_func = {}
        f_func = {}
        // f = g + h
        g_func[start] = 0
        parent = {} //key 为一个节点, value为其父节点
		open_set = open_set ∪ {start} //集合并
        while open_set != 空集: //open_set不为空
            u  := min_f(open_set) //open_set中最小 f 值
            if u == end:
                return  parent
            closed_set = closed_set ∪ {u}
            
            for v in adj(u): //u的邻接点
                if v not in closed_set: #v不在closed_set里面
                    parent[v] = u
                    if v not in open_set: #v不在open_set里面
                        h_func[v] = 启发函数h(v,end) 
                        g_func[v] = 函数g(start,v) 
                        open_set = open_set ∪ {v}
                    else:
                        if  g_func[v] >  函数g(start,v):
                        	g_func[v] =  函数g(start,v)
             	
                        
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值