搜索——最佳优先搜索

        最佳优先搜索时宽度优先搜索的扩展,基本思想是将节点表按据目标的距离进行排序,再以节点的估计距离为标准选择待扩展的节点。

        算法步骤:
         1. 用N表示已经排序的初始结点表(从小到大)
         2. 如果N为空集,则退出并给出失败信号
         3. n取为N的首结点,并在N中删除结点n,放入已访问结点列表
         4. 如果n为目标结点,则退出并给出成功信号
         5. 否则,将n的后继结点加到N中,记为N’,对N’中的结点按距目标的估计距离排序,并返回2步

          在搜索的过程中一般会用到评估函数f(n),表示从初始节点S经过n到达目的节点t的最佳路径代价f*(n)的估计:

          从S到n的最佳代价g*(n)的估计g(n),g(n) ≥ g*(n),即局部最小≥ 全局最小
          从n到t 的最佳代价h*(n)的估计h(n),若对所有结点n,都有h(n)≤h*(n),则算法A一定能找到一条到达目标结点的最佳路径,此时算法A称为算法A*。

          f(n) = g(n) + h(n)作为f*(n) = g*(n) + h*(n)的估计,估计值越小的点希望越高,应该优先扩展。

 

         图搜索过程(A算法)
         1. 建立一个只由初始结点S组成的搜索图G,open=(S); closed=() 空表
         2. If open为空表then 退出并给出失败信息
         3. n = first(open); remove(n, open); add(n, closed);
         4. If n为目标结点then 退出(成功) (可给出S到n的路径)
         5. 否则,扩展结点n,生成不是n的祖先的后继结点集M={m} 把每个m作为n的后继结点加入G
         6. If m没有在open和closed表中出现过Then add(m, open)
         7. If m在open表中有重复结点k,且g(m)<g(k)Then remove(k,open); add(m, open)
         8. If m在closed表中有重复结点k,且g(m)<g(k) then
                  ①将closed表中的结点k改为结点m(只需修改主链指针和f、g)
                  ②按后继元素,修改k在open表和closed表中的后继元素f,g的值
         9. 按f值,自小到大对open表中的结点重新排序,并返回2步

 

        例:九宫格问题

       在3×3的井子九宫格棋盘上摆有8个将牌,分别标有1-8个数码。棋盘上尚有一个空格,允许其周围的将牌向空格移动。这个通过移动将牌就可以变换将牌的布局。现给定如下两种布局,一种为初始状态,一种为目标状态,问如何移动将牌,以将初始状态变换为目标状态?

       搜索策略
       一、广度优先搜索
              取g(n)=d(n),h(n)=0;其中d(n)为结点n的深度。为了加快搜索进程,目标结点一旦生成就立即放在open表中。需要生成47个结点。


       二、A*算法
            ①取g(n)=d(n),h(n)=w(n),其中w(n)表示以目标为基准,结点n的状态中不在位将牌的个数。由于从结点n转换成目标结点至少需要w(n)步,所以对任意n,恒有

w(n) ≤h*(n)。搜索树见P.85,需生成14个结点。


           ②取g(n)=d(n),h(n)=p(n),其中p(n)表示结点n的每一将牌与其目标位置之间的距离总和。易见, w(n)≤p(n) ≤ h*(n) 。p(n)比w(n)更具启发能力,只需要生成12个结点便可以完成搜索。请自己编程实现。

          

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
人工智能在很多人看来是一个极其复杂的话题。然而, 理解人工智能如何工 作以及它打算做什么的概念相当简单。从本质上讲, 人工智能开发是关于计算机 和系统, 能够执行通常需要人类智能输入的任务。 这方面的一个例子是电子邮件, 它可以通过预测您接下来要说的内容来更快地撰写电子邮件。 人工智能只是定义了机器像人一样思考、学习和行动的能力。今天,人工智 能直接或间接地影响着我们生活的几乎每个方面。 人工智能几乎在所有方面都胜 过人类的日子已经不远了。 电商商家也意识到人工智能的重要性, 并开始整合人 工智能,以了解客户,创造更好的用户体验。在这里,我们描述了 AI 技术可以 通过接触更多客户和提高销售流程效率来对电子商务业务产生重大影响的一些 方式。 一段时间以来, 我们都熟悉 AI 或人工智能这个词。 它似乎逐渐接管了我们 的生活, 因此我们已经到了无法想象没有它的生活的地步。 但人工智能究竟是什 么?如果我们仔细看字面意思,它就像一种不是自然的,而是发明的智能。人类 是地球上最聪明的生物。因此,他们不断发展,并期待一切事物的最佳前景。其 中一种就是人工智能。 它存在于我们生活的方方面面。 人工智能最有用的用途可 以说是在商业领域。它使工作变得更容易。超级计算机、机器人、技术设备有能 力通过一点人类智能来完成任何任务。 国外某金融科技初创公司构建了一个人工智能引擎, 帮助用户改善财务健康 管理。通过支付中的人工智能系统,其能了解用户的优先事项、习惯和目标。然 后,该服务充当财务助理,帮助用户实现财务规划。电子商务零售商面临的挑战 是使搜索过程更短、更顺畅。如今,客户正在寻找最便捷的购物方式。他们不想 在尽可能短的时间内通过探索数千种产品来找出要购买的产品的麻烦。 以客户为 中心搜索历史 AI 驱动的图像搜索功能将在客户放弃之前推荐可能正是客户正 在寻找的产品。 另一种新兴的解决方案是语音搜索。 视觉和语音搜索是使用深度 神经网络构建的, 深度神经网络是机器学习的一个子集, 它使计算机能够像人类 一样对文本、 图像或视频等信息进行聚类。 许多电子商务开发公司已经开始优化 其客户的网站以进行语音和图像搜索。他们正在大力投资获得这两种搜索方法, 以使他们的网站更具响应性。 在合适的时间以最优惠的价格接触合适的客户是一种非常有效和直接的营 销活动方式。人工智能工具通过收集分析买家数据,跟踪客户的偏好,创建算法 并发送个性化消息或广告, 同时考虑他们的购买行为。 向他们发送个性化内容不 仅会增加购买的可能性,还会让他们感到受到重视,从而提高您的品牌忠诚度。 销售策划将有助于找到潜在买家或准备销售的潜在客户您的销售团队可以通过 其努力说服并将他们转化为实际买家。您可以将 AI 集成到您的 CRM 中以回 答查询、解决他们的问题,从而找到销售或转售的机会。这意味着,更少的努力 和花费,但更多的结果。 烫帽子机器人是一种非常有效的营销工具, 它确实对您公司的形象产生了影 响。 AI 驱动的聊天机器人可帮助您以最自然的方式与客户进行对话, 让客户不 会觉得他们在与机器人交谈。此外,您的 24X7 全天候客服通知聊天机器人将 使您的品牌更值得信赖。机器人有助于自动处理客户查询,包括取消、退货、运 输查询、更换问题、退款和付款问题。这些自动化机器人还可以提高转化率和收 入,因为它们可以确保客户不会无人看管。 烫顾客不断地推动零售商改变他们的定价策略。因此, 零售商有必要在价格 结构方面灵活运用,以留住客户。因此,电子商务零售商正在采用分类智能进行 预测——哪些产品要继续销售,哪些产品要添加,哪些产品要停产。 AI 可以通 过使用算法模型以准确的方式提供帮助来监控他们的竞争对手";产品,然后提 供以高精度快速调整自己的产品和定价的能力。 在电子商务领域, 人工智能在物流中得到了广泛的应用, 以寻找最有效的产 品交付路线。此外,此功能非常棒,因为在规定的时间内找到理想的路线将产品 交付给客户一直很棘手。 它最终减少了交货时间并提高了客户的满意度。 客户总 是相信与服务提供商合作, 他们可以毫不费力地按时交货。 在这种情况下, AI 可 以为您提供帮助。 搜索引擎上每分钟都在进行数以亿计的搜索, 用户希望从网络 上获得最相关和最明确的答案。SEO 中的 AI 将帮助用户到达最相关的搜索结 果。大约 40% 的电子商务流量来自自然搜索。因此,SEO 是电子商务商店成 功的关键。增强现实、人工智能和机器学习被列为其中之一。 用户体验设计师会惊讶地发现,将来网站的主页会变得不合时宜, 而没有它 的用??户界面也能正常工作。 它的位置将被更有针对性和个性化的登陆页面所取 代。例如,高级机器学习将帮助网站管理员、Web 开发人员和 UX/UI 设计师根 据他们的浏览器历史
本书系统介绍涉及并行计算的体系结构、编程范例、算法与应用和标准等。覆盖了并行计算领域的传统问题,并且尽可能地采用与底层平台无关的体系结构和针对抽象模型来设计算法。书中选择MPI(Message Passing Interface)、POSIX线程和OpenMP这三个应用最广泛的编写可移植并行程序的标准作为编程模型,并在不同例子中反映了并行计算的不断变化的应用组合。本书结构合理,可读性强,加之每章精心设计的习题集,更加适合教学。 本书论述清晰,示例生动,并附有大量习题,适合作为高等院校计算机及相关专业本科生和研究生的教材或参考书。原版自1993年出版第1版到2003年出版第2版以来,已在世界范围内被广泛地采用为高等院校本科生和研究生的教材或参考书。 第1章 并行计算介绍 1.1 推动并行化 1.1.1 计算能力因素——从晶体管到浮点运算速度 1.1.2 内存及磁盘速度的因素 1.1.3 数据通信因素 1.2 并行计算适用范围 1.2.1 在工程及设计中的应用 1.2.2 科学计算中的应用 1.2.3 商业应用 1.2.4 计算机系统中的应用 1.3 本书的组织及内容 1.4 书目评注 习题 第2章 并行编程平台 2.1 隐式并行:微处理器体系结构的发展趋势 2.1.1 流水线与超标量执行 2.1.2 超长指令字处理器 2.2 内存系统性能的局限 2.2.1 使用高速缓存改善有效内存延迟 2.2.2 内存带宽的影响 2.2.3 躲避内存延迟的其他方法 2.2.4 多线程与预取间的权衡 2.3 并行计算平台剖析 2.3.1 并行平台的控制结构 2.3.2 并行平台的通信模型 2.4 并行平台的物理组织 2.4.1 理想并行计算机的体系结构 2.4.2 并行计算机互连网络 2.4.3 网络拓扑结构 2.4.4 静态互连网络评价 2.4.5 动态互连网络评价 2.4.6 多处理器系统中的高速缓存一致性 2.5 并行计算机的通信成本 2.5.1 并行计算机的消息传递成本 2.5.2 共享地址空间计算机的通信成本 2.6 互连网络的路由选择机制 2.7 进程-处理器映射的影响和映射技术 2.7.1 图的映射技术 2.7.2 成本-性能平衡 2.8 书目评注 习题 第3章 并行算法设计原则 3.1 预备知识 3.1.1 分解、任务与依赖图 3.1.2 粒度、并发性与任务交互 3.1.3 进程和映射 3.1.4 进程与处理器 3.2 分解技术 3.2.1 递归分解 3.2.2 数据分解 3.2.3 探测性分解 3.2.4 推测性分解 3.2.5 混合分解 3.3 任务和交互的特点 3.3.1 任务特性 3.3.2 任务间交互的特征 3.4 负载平衡的映射技术 3.4.1 静态映射方案 3.4.2 动态映射方案 3.5 包含交互开销的方法 3.5.1 最大化数据本地性 3.5.2 最小化争用与热点 3.5.3 使计算与交互重叠 3.5.4 复制数据或计算 3.5.5 使用最优聚合交互操作 3.5.6 一些交互与另一些交互的重叠 3.6 并行算法模型 3.6.1 数据并行模型 3.6.2 任务图模型 3.6.3 工作池模型 3.6.4 主-从模型 3.6.5 流水线模型或生产者-消费者模型 3.6.6 混合模型 3.7 书目评注 习题 第4章 基本通信操作 4.1 一对多广播以及多对一归约 4.1.1 环或线性阵列 4.1.2 格网 4.1.3 超立方体 4.1.4 平衡二叉树 4.1.5 算法细节 4.1.6 成本分析 4.2 多对多广播和归约 4.2.1 线性阵列和环 4.2.2 格网 4.2.3 超立方体 4.2.4 成本分析 4.3 全归约与前缀和操作 4.4 散发和收集 4.5 多对多私自通信 4.5.1 环 4.5.2 格网 4.5.3 超立方体 4.6 循环移位 4.6.1 格网 4.6.2 超立方体 4.7 提高某些通信操作的速度 4.7.1 消息分裂和路由选择 4.7.2 全端口通信 4.8 小结 4.9 书目评注 习题 第5章 并行程序的解析建模 5.1 并行程序中的开销来源 5.2 并行系统的性能度量 5.2.1 执行时间 5.2.2 总并行开销 5.2.3 加速比 5.2.4 效率 5.2.5 成本 5.3 粒度对性能的影响 5.4 并行系统的可扩展性 5.4.1 并行程序的扩展特性 5.4.2 可扩展性的等效率度量 5.4.3 成本最优性和等效率函数 5.4.4 等效率函数的下界 5.4.5 并发度和等效率函数 5.5 最小执行时间和最小成本最优执行时间 5.6 并行程序渐近分析 5.7 其他可扩展性的度量 5.8 书目评注 习题 第6章 使用消息传递模式编程 6.1 消息传递编程的原理 6.2 操作构件:发送和接收操作 6.2.1 阻塞式消息传递操作 6.2.2 无阻塞式消息传递操作 6.3 MPI:消息传递接口 6.3.1 启动和终止MPI库 6.3.2 通信器 6.3.3 获取信息 6.3.4 发送和接收消息 6.3.5 实例:奇偶排序 6.4 拓扑结构与嵌入 6.4.1 创建和使用笛卡儿拓扑结构 6.4.2 实例:Cannon的矩阵与矩阵相乘 6.5 计算与通信重叠 6.6 聚合的通信和计算操作 6.6.1 障碍 6.6.2 广播 6.6.3 归约 6.6.4 前缀 6.6.5 收集 6.6.6 散发 6.6.7 多对多 6.6.8 实例:一维矩阵与向量相乘 6.6.9 实例:单源最短路径 6.6.10 实例:样本排序 6.7 进程组和通信器 6.8 书目评注 习题 第7章 共享地址空间平台的编程 7.1 线程基础 7.2 为什么要用线程 7.3 POSIX线程API 7.4 线程基础:创建和终止 7.5 Pthreads中的同步原语 7.5.1 共享变量的互斥 7.5.2 用于同步的条件变量 7.6 控制线程及同步的属性 7.6.1 线程的属性对象 7.6.2 互斥锁的属性对象 7.7 线程注销 7.8 复合同步结构 7.8.1 读-写锁 7.8.2 障碍 7.9 设计异步程序的技巧 7.10 OpenMP:基于命令的并行编程标准 7.10.1 OpenMP编程模型 7.10.2 在OpenMP中指定并发任务 7.10.3 OpenMP中的同步结构 7.10.4 OpenMP中的数据处理 7.10.5 OpenMP库函数 7.10.6 OpenMP中的环境变量 7.10.7 显式线程与基于OpenMP编程的比较 7.11 书目评注 习题 第8章 稠密矩阵算法 8.1 矩阵向量乘法 8.1.1 一维行划分 8.1.2 二维划分 8.2 矩阵与矩阵的乘法 8.2.1 简单的并行算法 8.2.2 Cannon算法 8.2.3 DNS算法 8.3 线性方程组求解 8.3.1 简单高斯消元算法 8.3.2 带部分主元选择的高斯消元算法 8.3.3 求解三角系统:回代法 8.3.4 求解线性方程组时的数值因素 8.4 书目评注 习题 第9章 排序 9.1 并行计算机中的排序问题 9.1.1 输入输出序列的存放位置 9.1.2 如何进行比较 9.2 排序网络 9.2.1 双调排序 9.2.2 将双调排序映射到超立方体和格网 9.3 冒泡排序及其变体 9.3.1 奇偶转换 9.3.2 希尔排序 9.4 快速排序 9.4.1 并行快速排序 9.4.2 用于CRCWPRAM的并行形式 9.4.3 用于实际体系结构的并行形式 9.4.4 主元选择 9.5 桶和样本排序 9.6 其他排序算法 9.6.1 枚举排序 9.6.2 基数排序 9.7 书目评注 习题 第10章 图算法 10.1 定义和表示 10.2 最小生成树:Prim算法 10.3 单源最短路径:Dijkstra算法 10.4 全部顶点对间的最短路径 10.4.1 Dijkstra算法 10.4.2 Floyd算法 10.4.3 性能比较 10.5 传递闭包 10.6 连通分量 10.7 稀疏图算法 10.7.1 查找最大独立集 10.7.2 单源最短路径 10.8 书目评注 习题 第11章 离散优化问题的搜索算法 11.1 定义与实例 11.2 顺序搜索算法 11.2.1 深度优先搜索算法 11.2.2 最佳优先搜索算法 11.3 搜索开销因子 11.4 并行深度优先搜索 11.4.1 并行DFS的重要参数 11.4.2 并行DFS分析的一般框架 11.4.3 负载平衡方案分析 11.4.4 终止检测 11.4.5 试验结果 11.4.6 深度优先分支定界搜索的并行形式 11.4.7 IDA*的并行形式 11.5 并行最佳优先搜索 11.6 并行搜索算法的加速比异常 11.7 书目评注 习题 第12章 动态规划 12.1 动态规划概述 12.2 串行一元DP形式 12.2.1 最短路径问题 12.2.2 0/1背包问题 12.3 非串行一元DP形式 12.4 串行多元DP形式 12.5 非串行多元DP形式 12.6 综述与讨论 12.7 书目评注 习题 第13章 快速傅里叶变换 13.1 串行算法 13.2 二进制交换算法 13.2.1 全带宽网络 13.2.2 有限带宽网络 13.2.3 并行快速傅里叶变换中的额外计算 13.3 转置算法 13.3.1 二维转置算法 13.3.2 转置算法的推广 13.4 书目评注 习题 附录A 函数的复杂度与阶次分析 索引

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值