我正在关注Udacity的在线入门算法课程。
在最终评估中,有一个问题如下:
在安德鲁·戈德伯格的采访中描述的最短路径神谕中, 每个节点都有一个标签,该标签是其中一些其他节点的列表 网络及其与这些节点的距离。这些清单有 属性:
(1)对于网络中的任何一对节点(x,y),它们的列表都有 至少有一个共同的节点z
(2)从x到y的最短路径将经过z。给出图G 这是一个平衡的二叉树,预处理图形来创建这样的 每个节点的标签。请注意每个标签中列表的大小 对于大小为n的图表,不应大于log n。
The full question can be found here.
考虑到平衡二叉树的约束以及大小不应大于log n的提示,直观地看起来特定节点的标签将由其所有父节点组成(并且可选地自身,如果它不是&# 39; ta leaf)。
然而,问题中的一些额外讲师补充说:
编写解决方案以处理加权图。注意测试 给定,所有边缘的重量均为1 - 这并非特别重要 有趣。
所以我的问题是:
如何通过路径是否有权重来影响二叉树中两个节点之间的最短路径?
当然在二叉树中,两个节点之间的最短路径是唯一的简单路径,并且不受任何加权的影响? (除非权重可以是负数,路径不必简单,在这种情况下没有最短路径?)
我的基本解决方案适用于问题中提供的简单测试,但无法通过自动评分器而没有提供反馈。
我显然误解了什么,但是......
答案 0 :(得分:0)
好的,所以我认为我最初的反应和明显的答案是正确的:
正权重不能影响二叉树中两个节点之间的最短路径。
另一方面,与简单地计算节点之间的“距离”相比,权重明显做会影响二叉树中两个节点之间的最短'距离'。跳数。
这是udacity指令的结果。 似乎这个使用加权二叉树的指令只是为了能够对代码进行正确的自动分级,依赖于使用标签来计算确切的最短“距离”(受重量影响)与最短的路径(节点列表)相对,而不是。
一旦我修改了我的算法以考虑到这一点并输出正确的距离,它就会通过评分者。