3.4.5 迭代加深的深度优先搜索(iterative-deepening search) --- 实现代码附详细注释

使用迭代加深搜索解决城市路径规划问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用链式前向星或者邻接表存图会更加方便的 懒得改了就这样吧 注释之后有时间补上
因为dfs是相同代价搜索 所以路径代价没有用处

import pandas as pd
import sys
from pandas import Series, DataFrame
 
# 城市信息:city1 city2 path_cost
_city_info = None
 
# 按照路径消耗进行排序的FIFO,低路径消耗在前面
# 优先队列
_frontier_priority = []
 

# 节点数据结构
class Node:
    def __init__(self, state, parent, action, path_cost):
        self.state = state
        self.parent = parent
        self.action = action
        self.path_cost = path_cost
 
def main():
    global _city_info
    import_city_info()
 
    while True:
        src_city = input('输入初始城市\n')
        dst_city = input('输入目的城市\n')
        # result = breadth_first_search(src_city, dst_city)
        result = iterative_deepening_search(src_city, dst_city) # 搜索路径
        # print(result.state)
        if not result:
            print('从城市: %s 到城市 %s 查找失败' % (src_city, dst_city))
        else:
            print('从城市: %s 到城市 %s 查找成功' % (src_city, dst_city))
            path = [] # 记录路径
            while True: # 回溯 输出路径
                path.append(result.state)
                if result.parent is None:
                    break
                result = result.parent
            size = len(path)
            for i in range(size):
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值