是否有针对这类问题的特定算法?

时间:2011-12-14 16:12:36

标签: algorithm dynamic

我遇到了几个类似的问题,其中集合中有几个项目 e i = {w i ,h i } 对于i=0..n,您必须找到最长的系列,以便 w m > w m + 1 h m >对于m的每个成功值,h m + 1 。 这听起来很熟悉吗? 任何人都可以指出一个可能处理类似问题的特定算法吗?

2 个答案:

答案 0 :(得分:2)

一种方法是构建有向无环图,其具有用于每个ei的节点和从ei到ej的边缘iff ej> ei(从你在上面的意义上说)。然后是find the longest path in this DAG

答案 1 :(得分:0)

您正在寻找增长最快的子序列,因此patience sorting可能是最佳选择。

当您实施此功能时,您需要编写自己的Comparator方法e_i < e_j当且仅当w_i < w_jh_i < h_j时。您有部分订单而不是总订单的事实不会改变算法。