【问题标题】:Worst Case Binary Search?最坏情况二分查找?
【发布时间】:2014-03-16 20:00:35
【问题描述】:

问题是:

为了区分普通邮件和垃圾邮件, 设计了一种具有多种特征的算法。每个功能都提供 有关消息的信息,例如可疑单词的数量, 消息的长度、与垃圾邮件模板的匹配程度等。每个特征都是具有两个值的离散变量,例如,低/高、短/长和相似/不相似。已使用具有 255 个节点的树来决定是否拒绝电子邮件。多少操作/步骤/时间单位 最多需要处理每封电子邮件吗?

我在想这将是一棵完美的二叉树,所以 2^n - 1 = 255,因此 n = 8。但是,我开始考虑以下“最坏情况”的情况:

...O
../\
.O..O
..../\
...O..O
and so forth.

这是否会使用二分搜索递归关系。 T(n)=T(n/2)+1?

【问题讨论】:

    标签: algorithm tree binary-search-tree


    【解决方案1】:

    我认为你有正确的答案杰。根据问题,我会将树画成如下所示:

    >                     o
    >                    /\
    > feature 1:        o  o
    >                  /\  /\
    > feature 2:      o  o o o
    > 
                       ...
    

    所以你从一个根值开始。然后您询问电子邮件是否成功满足该功能,因此它分为 2 个节点,Y 或 N。对于 Y(左子树),您询问电子邮件是否满足第二个功能,Y 或 N 和这会分解成另外 2 个节点,并且在 N 侧(右子树)上重复相同的操作。重复所有功能。

    我们知道完美二叉树的大欧米茄(最坏情况)是 log(n) [base 2]。所以 log(255) [base 2] 大约是 8,这必须是所需的最大步数。

    【讨论】:

      【解决方案2】:

      如果你的树是平衡二叉树,那么答案是 8。

      不过,问题的措辞似乎并没有说明这一点。话虽如此,我们可以制作一棵链式树(只有正确的孩子),这会使 255 变得更糟。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 2015-02-06
        • 1970-01-01
        • 2012-05-21
        • 2021-03-17
        相关资源
        最近更新 更多