博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据笔记-外存算法
阅读量:7125 次
发布时间:2019-06-28

本文共 1564 字,大约阅读时间需要 5 分钟。

4.1外存存储结构与外存算法

分层存储:

做法:

可扩展性问题:若程序分散地访问磁盘上的数据,即使是好的操作系统也无法利用数据块存取优势

基本界限:

队列和堆栈:

4.2外存算法示例:外存排序算法

算法的分析1:(多路归并)

M/B路

以块为单位进行调度

1.首先从磁盘里把磁盘块放进内存,在内存中进行排序,每次放M/B块,一共放N/B块。做完后,外存中已经是在大小为M/B的区域里、分别排好序的数据。再分别取M/B-1个这些区域的第一个元素,放入内存中。

2.在内存中,将M/B-1块用于磁盘块的归并,剩余的一块用作缓存

do{

  step1.[取出]M/B-1块中最小的数据,放于缓存中

  step2.(用于缓存的磁盘块未满,step1)||(缓存满后,写出到外存,清空缓存)||(前M/B-1个磁盘块中的数据被取完,加载相应区域的下一个磁盘块)

}while(将所有的磁盘块中的数据都进行了排序)

疑问:如果step1中,排序磁盘块的次数大于M/B-1,那么归并排序时应该怎么做?

(演示的例子里,在内存中排序磁盘块的次数=M/B-1=3)

 

循环停止条件:(k-1代表第k轮)

算法分析2:(快排)

根号(M/B)路

 

M=8,N=24,B=2

(8,16是选择的分点,buffer磁盘块的大小为B,buffer满了以后,将里面的数据写到外存)

此时,写出到外存的三个区域的元素还没进行排序,但是大小已经可以放进内存,接下来将数据放进内存进行排序。若大小仍不能放进内存,则继续上述做法,直到数据块的大小可以放进内存。

复杂度分析:

划分停止条件:

计算分割元素:

存在的问题:

解决方法:

改进的算法的步骤:

从而得到每一路归并的元素上限。

 

算法复杂性分析:

其中,步骤二经过根号(M/B)次抽取分割元素,在4N/根号(M/B)的数据(第一次的抽样的结果)内抽取

总结:

它们都是最优的。

 

4.3外存数据结构示例:外存查找树

内存查找树:

外存查找树:

外部搜索树:

存在的问题:使用红黑树维护BFS块

5.1B树

B树上的查询:

为符合需求,B树应该满足的性质:

(a,b)树:

“所有的叶子在同一层并且包括a到b个元素”:叶子节点的磁盘块的数量为[a,b]

对(a,b)树进行分析:

(a,b)树中的操作:

  插入:

  

 

  删除:

注:若最后合并影响了根节点,使根节点的儿子小于a,此时根节点是不变的(参考上文对根节点数量的定义)。然而,若根节点只有一个儿子,则把根节点给删了

B树的结论:

5.2KD树

 

查询:

kdB-树

kdB-树的构建:

改进:

复杂度:

动态地改进:

  插入:

  

  删除:

  

kdB-树总结:

6.1 表排序及其应用

表排序(List Ranking)

表排序的困难之处:

一种高效的表排序算法:

分析:

目标:对给定的树T,以表L表示,进而让对T的每一种计算可用对L的一种rank来完成

 欧拉回路技术:

 

 应用场景:

1.父子关系判定

2.计算前序计数

3.计算子树大小

 

6.2时间前向处理方法

将图问题表示为有向无环图的估值问题

 

 

处理过程:

 

......

测试:

求最大独立集MIS(贪心法,不一定求得最优解):

(1的入度为0,在I中,选取后面的节点时,若其父亲节点在I中,则该节点不能加入I中):

 

6.3缩图法

即把大的图缩到内存中

求连通性->半外存算法:结点在内存中,边在外存中

算法分析:

M(memory)

若|V|>M:  

  

  

 

  

  算法复杂度分析:

  

应用:最小生成树

时间复杂度分析:

 

 另一种图算法技术:

 

转载于:https://www.cnblogs.com/cellphone7/p/10099737.html

你可能感兴趣的文章
Spring中管理Bean依赖注入之后和Bean销毁之前的行为
查看>>
vmware 虚拟机网络
查看>>
JAVA基本程序设计结构
查看>>
UNIX 高手的 10 个习惯
查看>>
Basics of Memory Addresses in C
查看>>
加密解密
查看>>
AIX 卷组管理
查看>>
vsftpd基于本地用户和mysql认证配置
查看>>
动态代理简单测试
查看>>
Linux下切分Tomcat的catalina.out日志文件
查看>>
XSS***的介绍及防御
查看>>
《冈仁波齐》让我看到的不止是信仰,还有不忘初心
查看>>
Apache配置域名301跳转
查看>>
谈谈源码中的SparseArray
查看>>
12.24作业
查看>>
压力测试
查看>>
java异步发送邮件
查看>>
详细介绍java中的数据结构
查看>>
我的友情链接
查看>>
awk详解
查看>>