我正在通过一本算法教科书来提高我的算法技能,但我完全坚持这个问题并且它让我烦恼。我认为底层数据结构是图表,但我甚至不知道从哪里开始解决这个问题。谁能提供一些见解?感谢
您将获得一张提供最高海拔高度的地形图 沿着任意两个邻近城市之间的直接道路,两个 城市a和b。想出一个线性时间算法,找到一个 从s到t的路线最小化最大高度。道路可以 两个方向都穿过了。
答案 0 :(得分:2)
这是一个棘手的问题。我会假设本章中有一些提示可以指导您找到解决方案。
您描述的问题是minimax路径问题或最宽路径问题的实例。 http://en.wikipedia.org/wiki/Widest_path_problem
根据维基百科,有一个线性时间算法,但它非常复杂,所以我怀疑这本书希望你能算出来。解决此问题的更简单方法是找到最小生成树。由于最小生成树的“min cut”属性,沿最小生成树连接a和b的路径将具有minimax属性,这意味着沿此路径的最大高度将是连接a到b的任何路径的最小高度
但是,没有线性时间最小生成树算法。另一方面,如果我们可以假设图是平面的 - 我们可能因为它是路线图 - 那么就可以在线性时间内找到最小生成树。所以我认为这是他们可能会追求的。包含此问题的章节是否讨论了最小生成树和/或平面图?