我在“Hitchhiker的算法指南”中读到了这句话。但是,我无法将其可视化为LIS问题,我们所拥有的只是一系列数字。如何将其调整为图形问题?
答案 0 :(得分:5)
想象一下2D网格的问题。你在左下方的广场,你需要到达右上方。你能想象出这个计划中的非循环DAG吗?
现在想象一些广场是被禁止的。禁止使用正方形可能导致“锁定”(您可能会发现自己陷入困境),现在选择跟随哪些路径实际上非常重要。 就图形而言,您可以将禁止正方形视为删除顶点,并且您的目标是从根到达一个特定节点(接收器)。
现在让我们回到LIS。在解决LIS时,您实际需要做的是决定您选择哪些数字,哪些不是。限制是每当你选择一个号码时,你就不能选择小于的任何数字(你按顺序选择数字)。
现在我们可以混合两种东西。想象一下,你将从你的数字序列中构建一个图形:
此图表上的每个路径都是有效的增加子序列。找到LIS的问题现在是在此图上找到最长路径的问题。
答案 1 :(得分:2)
如果我们有一组数字,比如说1,5,4,8。我们可以构建如下的DAG。
因此,最长增加子序列问题变成了从S到E问题的最长路径。