我有一个任务的依赖关系图,它形成了DAG。我正在寻找一种计算最佳拓扑遍历以最小化“工作集”的算法。具体地,我将当前工作集定义为已被访问的一组节点,并且具有至少一个未传出的传出边缘。

更有用的是计算最佳拓扑遍历的算法,这最小化了工作集的固定尺寸高速缓存的缓存驱逐的数量。

是否有一种计算这种拓扑遍历的算法?我可以从拓扑排序中贪婪地贪婪,但怀疑是次优。

有帮助吗?

解决方案

决定如果使用尺寸 $ \ le k $ 的拓扑排序,则存在NP-Creating,即使在二分图中。

我们可以减少 pathwidth 计算到这个问题。让 $ g $ 是一个无向图形,我们想要计算的路径。现在创建一个定向图 $ h $ ,带有顶点 $ v'$ 对于每个顶点 $ V $ $ g $ 。对于每个边缘 $(u,v)$ $ g $ ,创建顶点 $ e_ {(u,v)} $ 和定向边缘 $(v',e _ {(u,v)}'),( U',E _ {(u,v)}')$

现在考虑 $ h $ 的拓扑排序。将相应的工作集序列定义为 $ x_1,\ ldots,x_p $ 。我们证明 $ x_1,\ ldots,x_p $ $ g $ 的路径分解。工作组仅包括 $ v'$ 类型的顶点,因为其他顶点没有传出边。根据定义的工作集满足了交叉点属性 $ i \ le j \ le k \ lightarrow x_i \ cap x_k \ subseteq x_j $ 。如果有一个边缘 $(u,v)$ $ g $ 中,则有边缘 $ h $ $ v'$ $ u '$ $ e _ {(u,v)}'$ 所以必须有一个工作set $ x_i $ $ v',u'\ in x_i $ 。因此,每个边缘是路径分解的一些袋子的子集,因此 $ x_1,\ ldots,x_p $ $ g $

还可以显示 $ g $ 对应于 $ h $ (考虑底层间隔图的消除排序)。 $ \ square $

对于积极的结果,我建议在文学中观察某些路径的类别。快速搜索我发现了指向路径和DAG宽度的概念,但似乎它们在这里不相关,因为它们是悲层的微不足道。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top