Tags: alg, combinatorics
1 一个更简单的版本?
如果不是一般的 DAG ,而是一个 arborescence ? 嗯… , 是树的个数.- 长度越长的路径显然数量要少于长度短的路径数量
- 如果只有一个约束(长度为的路径数量是), 可以贪心解决
1.1 2/6 点数的upperbound?
arborescence 情况下, 点数的上界是. (的排序与的排序应该是没什么关系的) 也许能够证明最优解中点数的上界是 ?arborescence 可以看成 intersection of two matroids 然而我们关于长度为的路径的数量的约束却并不是 matroid. ground set 是一个 arborescence 森林中的边, 如果长度为的路径数量小于等于, 选择的边集就是一个 independent set. 这种描述不能满足 exchange property. (本来还想通过说明即使只有一个路径数量约束也是 intersection of three matroids 来证明即使是 arborescence 这个问题也是 NP-Hard…不过就算成立也不能这样说明.)
1.2 也许 greedy 可行
把约束按照从大到小排序, 对于一个长度是的路径数量是条这样的约束, 构造这样一个有向树:O -> O -> ... -> O -> O
\-> O \-> O
|-> O |-> O
... ...
在对应的深度的顶点插入合适数量的儿子.
然后根据构造出的有向树中长度为更小的
的路径的数量并修改
.
换一种描述方法: 假设根的深度是 0. 用一个
pair来表示一个路径数量的约束(长度为的路径有条),
把这些 pair 按照
的降序排序. 最优解的树形图形状像上面画的一样,
深度为,
所有深度为的顶点都是同一个深度为的顶点的子节点.
深度为的节点有个,
深度为
的顶点有
个.
只有一个路径数量约束(长度为的路径数量是),
观察到对于个路径约束,
使用的点数总共是
也可以验证这样的构造恰好满足长度为的路径有条.
2 DAG
不允许重边存在. arborescence 情况下的贪心不再成立了, 比如这样的图:
有向树的情况下是 4 个点是形成不了 4 条长度为 2 的路径的.