dijkstra算法产生的路径树怎么处理

silenci 2016-05-15 11:54:28
dijkstra算法结束后,所有的点都包括在了一个集合里,最短路径的权值也找到了,但是要输出这条路径经过的节点的话,需要处理一下生成的路径树(处理有分支的地方),怎么处理啊,有点蒙
还有就是生成路径树的实现方法是什么,我只知道算法会产生一颗树,但是好像不是一颗二叉树吧(好像是多叉树的样子),怎么生成这棵树我也不会
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dustpg 2016-05-15
  • 打赏
  • 举报
回复
原来还有专业术语,我自己称为更新。 可以利用std::push_heap, std::pop_heap进行更新操作。 更新的时候,只需要找到位置(可以遍历,O(n)操作, 可以记录,比较复杂),然后直接std::push_heap就行了
silenci 2016-05-15
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
展开某节点时,记录该节点信息做为父节点。生成路径的时候从目标节点顺着 父节点就能回到起点,这条线就是路径线
大神,我还有个问题 dijkstra算法中对节点进行松弛操作的时候 需要改变优先队列中元素的值 但是C++ STL的优先队列不支持改变元素的值 怎么处理这个问题呢 我是使用邻接表的存储形式的
dustpg 2016-05-15
  • 打赏
  • 举报
回复
展开某节点时,记录该节点信息做为父节点。生成路径的时候从目标节点顺着 父节点就能回到起点,这条线就是路径线

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧