美文网首页《算法导论》笔记
15.5 最优二叉搜索树

15.5 最优二叉搜索树

作者: 冰糖雪梨葫芦甜 | 来源:发表于2018-11-10 17:26 被阅读0次

背景

假定我们正在设计一个程序,实现英语文本到中文的翻译。对英语文本中出现的每个单词,我们需要查找对应的中文。为了实现这些操作,我们可以创建一个二叉搜索树,将n个英语单词作为关键字,对应的中文作为关联数据。

定义

给定一个n个不同关键字的已排序的序列K=<k1,k2,...,kn>,我们希望用这些关键字构造一颗二叉搜索树,对于给定的搜索频率,该二叉搜索树所需的期望代价最小。称这个二叉树为最优二叉搜索树。

递归公式

e[i,j]
= q_{i-1} ,若 j = i - 1
= \min_{i\leq r\leq j}\left\{ e[i,r-1]+e[r+1,j]+w(i,j)\right\} ,若i<=j (15.14)
w[i,j]
= q_{i-1} ,若 j=i-1
= w[i,j-1]+p_{j}+q_{j} ,若 j>=i$ (15.15)

相关算法

应用动态规划的算法optimalBST

伪代码
下面的伪代码接受概率列表 p1,...,pn 和 q0,...,qn 及规模 n 作为输入,返回表 e 和 root。

optimalBST(p,q,n)
  let e[1..n+1,0..n],w[1..n+1,0..n],and root[1..n,1..n]be new tables
  for i=1 to n+1
    e[i,i-1] = q[i-1]
    w[i,i-1] = q[i-1]
  for l=1 to n
    for i=1 to n-l+1
      j = i+l-1
      e[i,j] = MAX_INT
      w[i,j] = w[i,j-1]+p[j]+q[j]
      for r=i to j
        t = e[i,r-1]+e[r+1,j]+w[i,j]
        if t<e[i,j]
          e[i,j] = t
          root[i,j] = r
return e and root

相关文章

  • 15.5 最优二叉搜索树

    背景 假定我们正在设计一个程序,实现英语文本到中文的翻译。对英语文本中出现的每个单词,我们需要查找对应的中文。为了...

  • 2019-10-22

    最优二叉树搜索算法。

  • 2019-10-22

    今天做了算法的最优二叉搜索树

  • 数据结构与算法之二叉搜索树(八)

    目录 二叉搜索树概念二叉搜索树的接口设计,包括增,删,改,查平衡二叉搜索树 一 二叉搜索树 二叉搜索树是二叉树的一...

  • 2019-10-21

    今天把0-1背包问题和最优二叉搜索树问题用Python实现了

  • Algorithm小白入门 -- 二叉搜索树

    二叉搜索树二叉搜索树 BSTBST 的基本操作计算合法的 BST 1. 二叉搜索树 BST 二叉搜索树(Binar...

  • 二叉搜索树

    二叉搜索树 图解二叉树搜索算法图解:二叉搜索树算法二叉查找树(Binary Search Tree),(又:二叉搜...

  • 23-红黑树

    1.二叉搜索树(BST)继承二叉树(BinaryTree) 2.平衡二叉搜索树(BBST)继承二叉搜索树(BST)...

  • 二叉搜索树(Binary Search Tree)

    1. 定义 二叉搜索树(BST)又叫二叉查找树,二叉排序树。二叉搜索树就是一棵二叉树,但是它又具有搜索树的特征: ...

  • 二叉树基础

    二叉树的分类 完全二叉树与满二叉树 二叉搜索树BST 平衡二叉搜索树BBST因为二叉搜索树有可能退化为链表,降低查...

网友评论

    本文标题:15.5 最优二叉搜索树

    本文链接:https://www.haomeiwen.com/subject/dkozxqtx.html