【问题标题】:What's the best way to compare the efficiency of splay trees?比较伸展树效率的最佳方法是什么?
【发布时间】:2013-10-19 15:35:11
【问题描述】:

我已经实现了几个splay tree 算法。

比较它们的最佳方法是什么?

添加随机节点时比较执行时间是一个好的开始吗?

我还实现了一个二叉搜索树,它可以跟踪每个节点的访问量。我写了一个 optimize() 方法来创建一个最优二叉搜索树。
如果我们不打算修改搜索树,并且我们确切地知道每个项目将被访问的频率,我们可以构建一个最优二叉搜索树,这是一个搜索树,其中查找一个项目的平均成本(预期搜索成本)最小化。
如何在展开树的比较中加入这一点?

【问题讨论】:

    标签: algorithm binary-search-tree splay-tree


    【解决方案1】:

    我喜欢经验主义的方法。

    在这种方法中:

    1. 创建一堆不同长度的随机典型数据集。
    2. 运行每个实现并找出每个实现的执行时间。
    3. 使用Hypothesis testing 方法来确定一种实现是否比另一种更好。在这里,null hypothesis (H0) 是“平均而言,这两个实现应该花费相同的时间来执行。
    4. 从第 3 步得出结论,一种实现比另一种更好,概率为1-p(其中p 是您的p_value)。

    PS Wilcoxon test 被认为是一个很好的算法,并且在文献和研究中被大量用于比较两种算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多