【问题标题】:What is the difference between sorting and topological-sorting?排序和拓扑排序有什么区别?
【发布时间】:2012-02-24 23:55:49
【问题描述】:

排序和拓扑排序有什么区别?

它们是相同的还是不同的?

【问题讨论】:

标签: algorithm sorting computer-science topological-sort


【解决方案1】:

在抽象层面上,它们是相互关联的:正如 Saeed 和 Stefan 所说,这是全序和部分序之间的区别。这是一个非常简洁的描述,但有时在您学习时没有帮助。

总顺序意味着,在没有重复的情况下,当您对某样东西进行排序时,您将得到一个独特的正确答案。如果按升序对 3、6、2 进行排序,最好得到一个答案:2、3、6。

部分订单稍微宽松一些。典型的例子是你穿衣服的顺序:你可以穿短裤,然后是裤子,然后是袜子,然后是鞋子。这是一个有效的命令。或者你可以做短裤、袜子、裤子、鞋子。但直觉上,你不能做短裤、裤子、鞋子、袜子。穿鞋后穿袜子是没有意义的。

为了正式化该穿衣示例,您通常会显示一个以动作(“穿上鞋子”)作为节点的依赖关系图,以及显示哪个节点必须先于其他节点的有向弧。拓扑排序是图中所有节点的排序,类似于尊重弧的排序。意思是,如果从袜子到鞋子有一条弧线,那么袜子最好在鞋子之前。

同样,在抽象层面上,它们是相互关联的。但它们绝对不是一回事。

【讨论】:

  • 如果你是布兰妮,你可以把你的字符串放在你的短片后面...(我已经出去了)
  • @Novak:非常简单易懂的例子。我想我永远不会忘记这种拓扑排序。你是大学教授吗?如果是这样,你的学生真的很幸运。
  • 你很善良,但不,我只是一个博士生。我发现我必须在自己的脑海中直接获得低层次的直觉,以帮助我记忆,有时还帮助我理解数学描述。数学是抽象的力量所在,但图片和故事是直觉所在,对我来说。
  • 那个衣服的例子是解释部分有序集合的绝妙方法:) 在尝试理解 CRDT 时,它们非常方便。
【解决方案2】:

拓扑排序通常是指找到符合某种偏序的全序,例如有向无环图中的可达关系。

【讨论】:

    【解决方案3】:

    在拓扑排序中,我们处理partially ordered set,但在正常排序中,我们处理total ordered set

    在拓扑排序中,集合的一对元素之间可能没有任何关系,就像在有向图中一样,某些节点之间没有任何关系。在正常排序中,集合的所有元素对都有关系。例如,在一组数字中,所有对之间都有关系 ,=,所以它是全序的。

    【讨论】:

      【解决方案4】:

      如果总订单可用,则可以将每个对象与每个对象进行比较。在这种情况下,您可以对 wrt 进行排序。那个命令。示例是整数 wrt。 >(或

      如果只有部分顺序可用,则不是每个对象都可以与其他对象进行比较。只有某些对象之间的关系可用。一个例子是编译单元之间的依赖关系。拓扑排序的任务是找到对象的排序,以便尊重部分顺序(例如,通过编译依赖于这些单元之后的其他单元的单元)。这里有几种可能的解决方案(即排序):如果 A 依赖于 B 并且存在其他一些单元 C,则可能的编译序列是 B,A,C 和 C,A,B(A 在 B 之前编译的每个序列)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 2013-06-18
        • 2014-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多