如果您有一个拓扑有序图,基于到根的最大距离的稳定排序会保留拓扑顺序吗?

Posted

技术标签:

【中文标题】如果您有一个拓扑有序图,基于到根的最大距离的稳定排序会保留拓扑顺序吗?【英文标题】:If you have a topologically ordered graph, will a stable sort based on max-distance to a root preserve the topological order? 【发布时间】:2020-09-06 17:52:25 【问题描述】:

DAG 的部分顺序应该与从任何给定根可到达的任何子图的最大距离总顺序兼容,对吧?那么稳定排序是否保留了拓扑顺序?或者,是否有一种好的算法可以在拓扑排序的同时尊重子图上的任何总顺序,该顺序是到根的最大距离的函数并且与拓扑顺序兼容?

编辑:指定考虑的距离度量是最大距离。假设根的数量很少并且存储到每个根的最大距离就可以了。

【问题讨论】:

或者你的根也是你用于拓扑排序的源节点,那么是的,它们实际上是一回事。 【参考方案1】:

具有顶点 A、B、C、D 和边 A->B->C、A->D 的树具有有效的拓扑排序 A-B-C-D 但 dist(A, D)=1 和 dist(A,C )=2。因此,任何按距离排序的排序(稳定与否)都不会保留这种排序。

具有顶点 A、B、C、D 和边 A->B A->C->D->B 的树没有环(因为图是有向的)。 dist(A, B)=1, dist(A, D)=2 但在任何拓扑排序中 D 必须出现在 B 之前。所以这个图没有拓扑排序,它通过与 A 的距离排序来保留。

【讨论】:

在第一个例子中,排序的结果仍然是拓扑排序的。这只是一个不同的拓扑顺序,这是问题所允许的(否则,唯一保留拓扑顺序的程序将是什么都不做的程序)。第二个是一个很好的例子,可以捕捉问题文本中的歧义。将编辑问题以指定最大距离,这是为无环图明确定义的。【参考方案2】:

我可以肯定地回答替代问题。

给定任意两个偏序,我们可以构造一个新的偏序,其中 <> 是通过比较第一个来定义的,然后通过第二个来打破平局。现在用新的偏序进行拓扑排序,保证保留第一个的所有关系,以及第二个与第一个兼容的所有关系。

如果两个订单兼容,它将尊重两个订单中的所有关系。

【讨论】:

以上是关于如果您有一个拓扑有序图,基于到根的最大距离的稳定排序会保留拓扑顺序吗?的主要内容,如果未能解决你的问题,请参考以下文章

并不对劲的[spoj nsubstr]substrings

有向树的叶到根的最短距离

BZOJ2152 - 聪聪可可

LCA的 Trajan 算法

BZOJ3252: 攻略

数据结构排序---直接插入排序(稳定)