Tags: alg, combinatorics
1 一个更简单的版本?
如果不是一般的 DAG ,而是一个 arborescence ? 嗯… , 是树的个数.- 长度越长的路径显然数量要少于长度短的路径数量
- 如果只有一个约束(长度为的路径数量是), 可以贪心解决
1.1 2/6 点数的upperbound?
arborescence 情况下, 点数的上界是. (的排序与的排序应该是没什么关系的) 也许能够证明最优解中点数的上界是 ?1.2 也许 greedy 可行
把约束按照从大到小排序, 对于一个长度是的路径数量是条这样的约束, 构造这样一个有向树:O -> O -> ... -> O -> O
\-> O \-> O
|-> O |-> O
... ...
在对应的深度的顶点插入合适数量的儿子.
然后根据构造出的有向树中长度为更小的
的路径的数量并修改
.
换一种描述方法: 假设根的深度是 0. 用一个
pair来表示一个路径数量的约束(长度为的路径有条),
把这些 pair 按照
的降序排序. 最优解的树形图形状像上面画的一样,
深度为,
所有深度为的顶点都是同一个深度为的顶点的子节点.
深度为的节点有个,
深度为
的顶点有
个.
只有一个路径数量约束(长度为的路径数量是),
观察到对于个路径约束,
使用的点数总共是
也可以验证这样的构造恰好满足长度为的路径有条.
2 DAG
不允许重边存在. arborescence 情况下的贪心不再成立了, 比如这样的图:
有向树的情况下是 4 个点是形成不了 4 条长度为 2 的路径的.
2026-09-23 chatgpt 6 pro 证明了这问题 strongly NP-hard https://chatgpt.com/share/6ab39688-b594-83ea-97fb-feb6a4eda32f