【问题标题】:"Best-Effort" Topological Sort“尽力而为”拓扑排序
【发布时间】:2020-04-06 23:47:55
【问题描述】:

我希望根据继承来组织一些项目,目的是确定哪些项目是连接最紧密的父项,并且还只是查看形成的连接。

通常这将通过拓扑排序来完成,但我的图表有循环。有没有类似“尽力而为”的拓扑排序,它可以尝试根据连接数或类似的东西来确定“最重要的”父母?

例如,鉴于下图,我希望 1 和 2 成为顶级父级。 1 没有父母;当 2 处于循环中时,它的父代比它继承的子代多。

【问题讨论】:

  • 你可以试试 HITS 算法。

标签: algorithm graph topological-sort


【解决方案1】:

实现类似目标的一种方法是为每个节点计算可以从中访问多少其他节点,然后根据该数字对节点进行排序。

或者,您可以颠倒该逻辑。对于每个节点,计算有多少节点可以访问它,然后按升序对节点进行排序。

【讨论】:

    【解决方案2】:

    Google 的 pagerank-Algorithm 评估网站,其超链接表示为有向边。具有许多重要传入链接的网站获得了很高的评价。
    在你的情况下,它似乎是相反的。你想要很少/没有传入边缘。
    因此,您可以尝试使用 pagerank-algorithm,但以这样的方式反转其结果,即具有最高 page-rank 的节点获得最低的继承评级,反之亦然。

    【讨论】:

    • PageRank 会将循环中的所有节点识别为比节点 1 更重要,因为随机游走不太可能将您带到节点 1,即使您反转边缘。我认为 OP 正在寻找不同的东西。
    • 我的意思是你反向解释算法的结果。因此,在他的情况下,pagerank 最不可能到达的节点将排名最高。
    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多