为什么a*算法采用哈密尔顿距离作为启发函数比不在位数为启发函数的性能要好?_KDD2019: 使用神经网络为A*搜索算法赋能 --以个性化路径推荐为例...

本文系 KDD2019 论文的解读:
Wang, Jingyuan, Ning Wu, Wayne Xin Zhao, Fanzhang Peng, and Xin Lin. "Empowering A* Search Algorithms with Neural Networks for Personalized Route Recommendation." InProceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp. 539-547. ACM, 2019.

作者:吴宁

研究动机

A* 算法因为它的高效和准确而被广泛应用于路径发现和图遍历等任务上。斯坦福的 Peter Hart, Nils Nilsson and Bertram Raphael(Nils Nilsson 老先生于 2019 年 4 月 23 日去世,哀悼)于 1968 年首次提出了 A* 算法。A* 算法在寻找最优路径的过程中,使用 f(n) 来评价所有候选节点的得分,每次要扩展结点的时候都会选择那个 f(n) 最小的节点:

fca8dedcd32eeed14eb883c16cb13ad6.png

g(n) 是从出发点到 n 节点的费用值,而 h(n) 是一个被估计的从 n 到终点的费用值。不同于Dijkstra算法,A* 算法需要多考虑一个启发值 h(n),通过启发值的帮助,A* 算法可以大大减小搜索空间。

e7552f5823ac3a32e10796bd71982022.png
此图引用于:https://www.redblobgames.com/pathfinding/a-star/introduction.html

上图是三种搜索算法的对比,Dijkstra 算法只使用 g(n), 虽然可以找到最优路径,但是搜索空间巨大。贪心的最佳优先(Greedy Best-First)算法只使用 h(n),虽然减小了搜索空间,但是不能保证得到最优的结果。而 A* 算法可以保证得到最优路径,并且大大减小了搜索空间。

传统的 A* 算法使用一些比较简单的指标作为 g(n) 和 h(n),比如欧氏距离,用以解决最短路径等比较简单的问题,因此对于一些复杂的非线性问题的搜索求解并不适用。

在智能交通领域,一个非常典型的例子就是个性化的路径推荐。传统的 A* 算法对于“最短路径”、“最快路径”的搜索非常有效,但是对于“最喜欢的路径”搜索就很难发挥作用。

因为用户的偏好是一个非常复杂的非线性过程,无法用简单的欧氏距离进行度量。面对这样的问题,我们提出使用深度神经网络来学习 A* 算法的 g(n) 和 h(n) 值,以此来帮助 A* 算法解决更为复杂的问题。

研究思路

我们以个性化出行路径推荐为例子介绍神经网络是怎样与 A* 算法结合的。出行路径推荐是一个和我们平时生活息息相关的问题,也一直是各大地图应用的核心算法之一。一个好的路径推荐算法,可以提升人们的出行体验,为经济社会的发展带来价值。

出行路径推荐受到了学术界和工业界的广泛关注,最初的路径规划算法讨论的是怎样在路网上找到一条最短路径。随着时代的发展,基于历史轨迹数据的个性化的路径推荐任务也开始受到研究者们的关注。

过去的路径推荐方案大多以 A* 搜索为框架不同的费用函数对应于不同的搜索任务,比如说以移动距离为费用,那么搜索的便是最短路径,以用时为费用,那么搜索的便是最快路径,以用户的偏好为费用,那么便是个性化的路径推荐。

在现有工作中,大家往往以简单的统计或者浅层的模型来作为搜索的费用函数,但是用户的喜好往往是难以被如此简单地建模的,因此,我们提出用神经网络来学习 A* 搜索算法中的费用函数,以此为基础结合 A* 搜索算法来完成个性化的路径推荐。本文 Empowering A ∗ Search Algorithms with Neural Networks for Personalize

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值