外部排序中多路归并排序,采用败者树比胜者树更优的原因和简易证明

外部排序中多路归并排序,采用败者树较优的原因

在外部排序中,多路归并排序采用败者树的优点主要有以下原因:

多路归并排序过程

多路归并是指对\(r\)个初始归并段,做\(k\)路平衡归并
过程如下:

  • 每趟归并时,对\(k\)个已有序归并段进行归并
  • \(i\)个归并段最小值为\(X_i\),每次取\(X_j=\min\{X_1,X_2,...,X_k\}\),并添加到序列\(Q\)的尾部
  • 删去原\(X_j\)\(X_j\)更新为第\(j\)个归并段下一个最小值,以此类推直至所有归并段内的元素都被添加至\(Q\)

需求和约束

  1. 需要动态地维护\(k\)个元素的最小值\(A\)
  2. 每次删去最小值\(A\),并添加元素\(B\),保证\(B \geq A\)

最小败者树(Min Loser Tree)使用要求

  1. 每次仅支持修改最小值

胜者树与败者树比较

  • 败者树中最小值节点修改后向上更新父节点仅需访问1个节点:父节点
  • 胜者树中最小值节点修改后向上更新父节点需要访问2个节点:父节点,兄弟节点

证明比胜者树更优

设被修改节点原值为\(X\),新值为\(X'\),兄弟节点值为\(Y\),父节点值为\(F\),需要得到父节点新值\(F'\)

  • 败者树中:从最小值向上到根节点的路径上,\(F=Y\)恒成立,故每次仅需访问父节点,得到\(F'=\min(X',F)\),并更新其值
  • 胜者树中:从最小值向上到根节点的路径上,\(F=X\)恒成立,故每次需要访问兄弟节点,得到\(F'=\min(X',Y)\),并访问父节点以更新其值
posted @ 2024-03-14 13:35  Tiachi  阅读(143)  评论(0)    收藏  举报