【问题标题】:How many Minimum Height Trees (MHTs) can a graph have at most?一个图最多可以有多少个最小高度树(MHT)?
【发布时间】:2020-08-04 07:14:12
【问题描述】:

对于具有树特征的无向图,我们可以选择任意节点作为根。结果图是一个有根树。在所有可能的有根树中,具有最小高度的树称为最小高度树(MHT)。一个图最多可以有多少个 MHT?

【问题讨论】:

    标签: algorithm data-structures graph


    【解决方案1】:

    我相信答案是 1 或 2。所以最多有 2 个不同的 MHT。这个问题等同于首先找到给定图形的直径。树的直径是两个树节点之间路径的最大长度。

    有一个非常优雅的两遍算法可以找到一棵树的直径。

    1. 选择任意节点 A 并从 A 中找到最远的节点 B。(使用深度优先搜索或呼吸优先搜索)。
    2. 从节点 B 开始,执行第二次 DFS 或 BFS 以找到距离 B 最远的节点 C。B 和 C 之间的距离就是这棵树的直径。

    有了直径信息,我们实际上可以得到这些 MHT 的根节点。如果直径是偶数,那么只有 1 个 MHT,它的根是路径 B 到 C 的中间节点;如果直径是奇数,则有2个MHT,根是路径B到C的中间2个节点。这2个根节点保证彼此相邻。

    以下链接显示了关于树中心数量的证明。这个问题的关键是我们希望使用树的中心作为根,因为这提供了到所有其他节点的整体最小路径长度。您可以通过矛盾来证明这一点,使用任何其他节点都会产生更长的树高。

    https://en.wikipedia.org/wiki/Centered_tree#:~:text=A%20graph%20can%20have%20an,two%20centers%20(bicentered%20trees).

    【讨论】:

    • 你的意思是说如果直径是奇数只有1 mht,当它是偶数时有2?
    • 我认为这取决于我们是在计算边还是节点。在我的原始答案中,我计算边数,所以当直径(边数)为偶数时,节点数为奇数,反之亦然。
    猜你喜欢
    • 2021-04-12
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多