![]() |
1
1
这里有一个非常快速的算法来解决这个问题。图中最长的递增子序列是图中路径的子序列,每条路径必须纯粹属于单个连接组件。因此,如果我们可以在连接组件上解决这个问题,我们可以通过在所有连接组件上找到最佳解决方案来解决整个图的问题。
总的来说,运行时是O(m+n+&Sort(n)),这比我以前的方法要好,应该更容易编写代码。
假设从图G中选择一条简单的路径,并查看该路径的最长递增子序列。虽然路径遍历整个图,并且可能有许多中间节点,但该路径的最长递增子序列实际上只关心
我们可以将此过程建模为在DAG中查找最长路径。DAG中的每个节点表示原始图G中的一个节点,如果存在,则存在从节点u到节点v的边
这是一个DAG,因为第二个条件,即使原始图形不是DAG。 所以我们可以用两个步骤来解决这个整体问题。首先,构建上述DAG。为此:
总运行时间:Θ(n 2. |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |