1、为什么要研究排序算法 -结构化数据表查找问题,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,为什么要研究排序算法-结构化数据表查找问题 (1)什么是排序问题?,排序问题,对一组对象按照某种规则进行有序排列。通常是把一组对象整理成按关键字递增(或递减)的排列,关键字是指对象的一个用于排序的特性。 例如:对一组“人” ,按“年龄”或“身高” 排序;对一组“商品”,按
2、“价格” 排序;对一组“网页”,按“重要度” 排序;对一组“词汇”,按“首字母”字典序排序。 ,为什么要研究排序算法-结构化数据表查找问题 (2)为什么要研究排序问题?,结构化数据表的查找问题,【算法A:未排序数据查找算法】 Start of algorithm Step 1. 从数据表的第1条记录开始,直到其最后一条记录为止,读取每一条记录,做Step 2。 Step 2. 对每一条记录,判断成绩是否等于给定的分数:如果是,则输出;如果不是,则不输出。 End of algorithm,查找成绩为80分的所有同学?,算法效率:读取并处理所有记录,即n条记录,数据表记录数: n,为什么要研究排
3、序算法-结构化数据表查找问题 (2)为什么要研究排序问题?,结构化数据表的查找与统计需要排序,【算法B:已排序数据查找算法】 Start of algorithm Step 1. 从数据表的第1条记录开始,直到其最后一条记录为止,读取每一条记录,做Step 2和Step 3步。 Step 2. 对每一条记录,判断成绩是否等于给定的分数:如果等于,则输出;如果不等于,则不输出。 Step 3. 判断该条记录的成绩是否小于给定的分数:如果不是,则继续;否则,退出循环,算法结束。 End of algorithm,查找成绩为80分的所有同学?,算法效率:读取并处理部分记录,即=n条记录,数据表记录数
4、: n,为什么要研究排序算法-结构化数据表查找问题 (2)为什么要研究排序问题?,结构化数据表的查找与统计需要排序,查找成绩为80分的所有同学?,数据表记录数: n,【算法C:已排序数据查找算法】 Start of algorithm Step 1. 假设数据表的最大记录数是n,待查询区间的起始记录位置Start为1,终止记录位置Finish为n; Step 2. 计算中间记录位置I=(Start+Finish)/2,读取第I条记录。 Step 3. 判断第I条记录成绩是否大于给定查找分数: (1)如果是小于,调整Finish = I-1, 如果Start Finish则结束,否则继续做Ste
5、p 2;(2)如果是大于,调整Start = I+1,如果StartFinish则结束,否则继续做Step 2;(3)如果是等于,则输出,继续读取I周围所有的成绩与给定查找条件相等的记录并输出,直到所有相等记录查询输出完毕则算法结束。 End of algorithm,算法效率:除极端情况外读取并处理=n/2条记录,为什么要研究排序算法-结构化数据表查找问题 (2)为什么要研究排序问题?,结构化数据表的查找与统计需要排序,统计各个分数段的人数 统计每个同学的平均分数 统计每门课的平均分数,?,算法效率:需要读取并处理?条记录才能完成呢?,为什么要研究排序算法-结构化数据表查找问题 (3)小结?
6、,结构化数据表的查找与统计需要排序,统计各个分数段的人数 统计每个同学的平均分数 统计每门课的平均分数,?,算法效率:需要读取并处理?条记录才能完成呢?,为什么要研究排序算法 -非结构化的数据文档查找问题,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,为什么要研究排序算法-非结构化的数据文档查找问题 (1)非结构化数据(文档)的查找问题?,怎样按照关键词找到相应
7、的文档呢?,关键词查询,包含的文档是哪一个? 有多少个?,为什么要研究排序算法-非结构化的数据文档查找问题 (2)索引与倒排索引-需要排序?,怎样按照关键词找到相应的文档呢?,对所有文档建立,关键词查询,查找文档,关键词索引表-倒排索引,为什么要研究排序算法-非结构化的数据文档查找问题 (3)关键词的提取-需要排序?,关键词索引表-倒排索引,文档,为什么要研究排序算法-非结构化的数据文档查找问题 (4)小结?,非结构化数据(文档)的查找与搜索也需要排序,怎样按照关键词找到相应的文档呢?,对所有文档建立,关键词查询,查找文档,关键词索引表-倒排索引,文档,怎样快速找到关键词呢?,哪些是关键词呢?
8、,为什么要研究排序算法-非结构化的数据文档查找问题 (4)小结?,非结构化数据(文档)的查找与搜索也需要排序,怎样按照关键词找到相应的文档呢?,对所有文档建立,关键词查询,查找文档,关键词索引表-倒排索引,文档,怎样快速找到关键词呢?,哪些是关键词呢?,基本排序算法I -内排序之插入法排序,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,基本排序算法I-内排序之插
9、入法排序 (1)插入排序的思想?,插入法排序,类似于打扑克牌时,一边抓牌,一边理牌的过程: 每抓一张牌就把它插入到适当的位置; 牌抓完了,也理完了。 -这种策略被称为插入排序,基本排序算法I-内排序之插入法排序 (2)插入排序的过程模拟?,插入法排序,i=2,i=3,i=4,i=5,1 2 3 4 5 6 7 8 9 10,A,i=5,A,A,A,A,A,i=9,i=5,A,i=5,A,插入排序:递增排序示意. 其中三角形左侧为已排好序的元素, 其右侧为未排序的元素, 实心三角形本身为待插入的元素. 图中示意了为待排序元素19腾挪空间的过程, 由箭头示意. 空心三角形表示新插入的元素,INSE
10、RTION-SORT(A) 1. for i=2 to N 2. key = Ai ; 3. j =i-1; 4. While (j0 and Ajkey) do 5. Aj+1=Aj; 6. j=j-1; 7. Aj+1=key; 8. ,基本排序算法I-内排序之插入法排序 (3)插入排序的算法表达?,插入法排序,O(N2),基本排序算法II -内排序之简单选择法排序,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教
11、授.博士生导师 教育部大学计算机课程教学指导委员会委员,简单选择法排序,首先在所有数组元素中找出最小值的元素,放在A1中; 接着在不包含A1的余下的数组元素中再找出最小值的元素,放置在A2中; 如此下去,一直到最后一个元素。 这一排序策略被称为简单选择排序。,基本排序算法II-内排序之简单选择法排序 (1)简单选择排序的思想?,简单选择法排序,i=1,i=3,i=4,1 2 3 4 5 6 7 8 9 10,A,A,A,A,i=9,i=4,A,i=4,A,(b)选择排序:递增排序示意. 其中三角形代表本轮要找的最小元素应在的位置, 方形代表本轮次至今为止所找到的最小元素所在位置, 三角形左侧为
12、已排好序的元素,三角形右侧的每一元素依次和方形位置元素比较. 实线双向箭头代表两个元素交换. 虚线双向箭头代表两个元素需要比较,基本排序算法II-内排序之简单选择法排序 (2)简单选择排序的过程模拟?,SELECTION-SORT(A) 1. for i=1 to N-1 2. k=i; 3 for j=i+1 to N 4. if Aji then 6. 7. temp =Ak; 8. Ak=Ai; 9. Ai=temp; 10. 11. ,O(N2),简单选择法排序,基本排序算法II-内排序之简单选择法排序 (3)简单选择排序的算法表达?,基本排序算法III -内排序之冒泡法排序,Rese
13、arch Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,冒泡法排序,一个轮次一个轮次的处理。 在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较,将大的放前,小的放后-递减排序(或者是将小的放前,大的放后-递增排序)。 当没有交换时,则数据已被排好序。,基本排序算法II-内排序之冒泡法排序 (1)冒泡排序的基本思想?,冒泡法排序,i=1,j=1,i=1,j=2,i=1,j=
14、3,i=1,j=9,i=9,j=1,1 2 3 4 5 6 7 8 9 10,A,A,A,A,A,i=2,j=1,A,i=8,j=1,A,(c)冒泡排序:递减排序示意,其中小圆点代表本轮本次比较的两个元素, 双向弧线箭头代表两个元素要相互交换,A,i=1,j=4,基本排序算法II-内排序之冒泡法排序 (2)冒泡排序的过程模拟?,BUBBLE-SORT(A) 1. for i=1 to N-1 2. haschange=false; 3. for j=1 to N-i 4. if AjAj+1 then 5. temp =Aj; 6. Aj=Aj+1; 7. Aj+1=temp; 8. hasc
15、hange=true; 9. 10. 11. if (haschange =false) then break; 12. ,冒泡法排序,O(N2),基本排序算法II-内排序之冒泡法排序 (3)冒泡排序的算法表达?,快速排序,从待排序列中任取一个元素 (例如取第一个) 作为中心,所有比它小的元素放在左侧,所有比它大的元素放在右侧,形成左右两个子序列; 然后再对各子序列重新选择中心元素并依此规则调整,直到每个子序列的元素只剩一个,此时便为有序序列了。,同学自己能否写出其算法-这里将用到递归(略),其他排序算法?,受限资源约束下的算法 -内排序与外排序问题,Research Center on In
16、telligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,内排序问题:待排序的数据可一次性地装入内存中,即排序者可以完整地看到和操纵所有数据,使用数组或其他数据结构便可进行统一的排序处理的排序问题;外排序问题:待排序的数据保存在磁盘上,不能一次性装入内存,即排序者不能一次完整地看到和操纵所有数据,需要将数据分批装入内存分批处理的排序问题;,问题类比:某教师要对学生按身高排序。教师只能在房间(相当于内存)中对学生进行
17、排序,假设房间仅能容纳100人,那么对于小于100人的学生排序便属于内排序问题。而对于大于100人,如1000人的学生排序,学生并不能都进入房间,而只能在操场(相当于磁盘)等候,轮流进入房间,这样的排序便属于外排序问题。,受限资源约束下的算法-内排序与外排序问题 (1)排序问题的复杂性在哪里?,受限资源约束下的算法-内排序与外排序问题 (2)外排序环境与问题示例?,内存: 2GB 待排序数据: 7GB, 10GB, 100GB?-大数据集合 这种需要使用硬盘等外部存储设备进行大数据集合排序的过程/算法称为外排序(External sorting) 。,外排序算法的环境/资源(仅介绍思想,忽略一
18、些细节), 假设: 读写磁盘块函数: ReadBlock, WriteBlock 内存大小: 共Bmemory =6块, 每块可装载Rblock =5个元素 待排序数据: Rproblem=60个元素, 共占用Bproblem=12块,问题: Bproblem块的数据怎样利用Bmemory块的内存进行排序?,受限资源约束下的算法-内排序与外排序问题 (2)外排序环境与问题示例?,基本排序策略 Bproblem块数据可划分为N个子集合, 使每个子集合的块数小于内存可用块数,即:Bproblem/N Bmemory。每个子集合都可装入内存并采用内排序算法排好序并重新写回磁盘。,问题转化为: N个已
19、排序子集合的数据怎样利用内存进行总排序?,Bmemory =6块, Rblock =5个元素 Rproblem=60个元素 Bproblem=12块,受限资源约束下的算法-内排序与外排序问题 (3)外排序的基本处理策略?,基本排序算法IV -外排序之多路归并排序,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,子集合已排好序,如何进行总排序 内存不能装下所有子集合
20、,基本排序算法IV-外排序之多路归并排序 (1)外排序的问题?,基本排序算法IV-外排序之多路归并排序 (2)内存资源的使用分配?,磁盘,内存Bmemory=6,第1块,第2块,第3块,第4块,第5块,第6块,子集合存储在磁盘上的若干块,N个子集合各自依次序读取一块装入内存,内存中的N块(对应N个子集合)各自依次序读取一个元素形成一个待比较集合,将待比较集合中的最小元素取出写入输出块中,输出块依序写回磁盘上,基本排序算法IV-外排序之多路归并排序 (3)基本归并动作?,归并排序-过程模拟(详细介绍参见另一部份:过程模拟),基本排序算法IV-外排序之多路归并排序 (4)过程模拟?,归并排序-算法
21、描述 (同学自己阅读),基本排序算法IV-外排序之多路归并排序 (4)外排序暨多路归并排序的算法?,基本排序算法IV -外排序之多路归并排序的过程模拟,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,基本排序算法IV-外排序之多路归并排序的过程模拟 (1)过程模拟-1?,内存,磁盘,写磁盘,读磁盘,归并排序-过程模拟,基本排序算法IV-外排序之多路归并排序的过程模
22、拟 (2)过程模拟小结?,基本排序算法IV-续 -外排序之多路归并排序-讨论,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,基本排序算法IV-续-外排序之多路归并排序-讨论 (1)算法的复杂性问题?,归并排序-讨论,算法的效率:读写磁盘块的次数,即I/O数= 4 Bproblem 子集合排序阶段读一遍写一遍 2 Bproblem 归并阶段读一遍写一遍 2 Bpr
23、oblem,归并排序-讨论,大数据集块数 Bmemory2如何排序呢?,算法的应用条件: 子集合数 Bmemory 子集合的块数 Bmemory 即大数据集块数Bmemory2,基本排序算法IV-续-外排序之多路归并排序-讨论 (2)算法在任何情况下都可以应用吗?,归并排序-讨论,内存大小: 共Bmemory =3块 待排序数据: 共占用Bproblem=30块 基本策略: 30块的数据集 10个子集合,每个子集合3块,排序并存储。 10个已排序子集合分成5个组:每个组2个子集合, 分别进行二路归并,则可得到5个排好序的集合; 5个集合再分成3个组:每个组2个子集,剩余一个单独1组,分别进行二
24、路归并,可得3个排好序的集合;再分组,再归并得到2个排好序的集合;再归并便可完成最终的排序。,基本排序算法IV-续-外排序之多路归并排序-讨论 (3)当更大规模的数据需要排序时怎么办?,归并排序-思考,假如内存共有8块,问其如何排序有70块的数据集呢?你是采用二路归并、三路归并、七路归并?你设计的具体算法,磁盘读写次数是多少呢?磁盘读写次数最少的应是几路归并?,基本排序算法IV-续-外排序之多路归并排序-讨论 (4)思考一下下列情况排序,应该怎么办?,PageRank网页排序算法I -网页排序问题及思想,Research Center on Intelligent Computing for
25、Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,PageRank网页排序算法I-网页排序问题及思想 (1)网页排序问题?,4,540,000条检索记录,1,210,000条检索记录,怎样把最重要的检索记录显示给用户?,问题背景-搜索引擎,文本,Our Product Information,Our Product Information,网页重要吗?-网页重要度,问题背景-网页 PageRank是计算网页重要度的一种方法,PageRank网页排序算法I
26、-网页排序问题及思想 (2)PageRank是什么? 网页又是什么?,网页重要度问题的抽象,正向链接,反向链接,一个网页的正向链接是另一个网页的反向链接,PageRank网页排序算法I-网页排序问题及思想 (3)正向链接与反向链接?,关于网页的基本观点,网页的反向链接数越多是否越重要呢? 重要度越高的反向链接是否越重要呢? 正向链接数越多,是否其对链接的网页而言, 重要度会降低呢?,PageRank网页排序算法I-网页排序问题及思想 (4)PageRank的基本思想?,网页重要度,一个网页的重要度等于其所有反向链接的加权和,即:反向链接权值zi, 网页重要度R, 则R = zi (for 所有
27、反向链接i)。 一个正向链接的权值等于网页的重要度除以其正向链接数, 即:网页重要度R, 其正向链接数m, 则其每一个正向链接的权值z = R/m。,怎样计算网页的重要度呢?,PageRank网页排序算法I-网页排序问题及思想 (4)PageRank的基本思想?,PageRank网页排序算法II -网页排序问题的表达与建模,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员
28、会委员,PageRank网页排序算法II-网页排序问题的表达与建模 (1)问题的数学建模?,数学建模-示例,数学建模-邻接矩阵,正向链接,反向链接,正向链接,反向链接,PageRank网页排序算法II-网页排序问题的表达与建模 (1)问题的数学建模?,数学建模转移概率,反向链接,转移概率矩阵,反向链接的权值,网页重要度向量,邻接矩阵,PageRank网页排序算法II-网页排序问题的表达与建模 (2)正向链接的权值矩阵-转移概率?,矩阵乘法与反向链接的加权和,转移概率矩阵M,网页i的重要度为Ri,各网页重要度的向量R,记为:R = (R1, R2 , Rn)T,矩阵乘法,第n-1次的网页重要度,
29、第n次 的网页重要度,PageRank网页排序算法II-网页排序问题的表达与建模 (3)矩阵乘法与反向链接的加权和?,Ri(n)=j (Mij * Rj(n-1),PageRank网页排序算法III -网页重要度的迭代计算方法及讨论,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,PageRank网页排序算法III-网页重要度的迭代计算方法及讨论 (1)网页重要度
30、的迭代计算方法?,转移概率矩阵M,网页i的重要度为Ri,各网页重要度的向量R,记为:R = (R1, R2 ,Rn)T,迭代计算 Ri(1)=j (Mij * Rj(0) Ri(2)=j (Mij * Rj(1) Ri(n)=j (Mij * Rj(n-1)Ri(n)=Ri(n-1) ?,R的初始值是多少呢? 从哪一个Ri开始计算呢?,矩阵乘法,第n-1次的网页重要度,第n次 的网页重要度,PageRank计算结果分析,PageRank网页排序算法III-网页重要度的迭代计算方法及讨论 (2)PageRank的计算结果分析?,1号 vs. 5号,6号 vs. 7号,2号 vs. 3号,Page
31、Rank网页排序算法IV -PageRank与数学及算法总结,Research Center on Intelligent Computing for Enterprises & Services, Harbin Institute of Technology,战德臣 哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员,PageRank网页排序算法IV-PageRank与数学及算法总结 (1)PageRank计算 vs. 数学的特征方程?,迭代计算网页重要度 R(0)=(R1(0), R2(0) ,Rn(0)T R(1) = cMR(0) R(2) = cMR(1) R
32、= R(n) = R(n-1),当R不发生变化时,即收敛时则为所求,网页重要度的迭代计算,对 N 阶方阵A(转移概率矩阵), 满足:Ax =x 的数 称为 A 的特征值,称 x 为属于 的特征向量。,通过数学学习求解方法,网页排序:网页重要度计算,网页链接:正向链接与反向链接,求解思想:求稳定性,数学的语义:特征方程,表达成数学:0,1矩阵 权值矩阵转移概率矩阵,从问题语义挖掘求解思想: 反向链接数越多越重要; 反向链接有权值; 反向链接的权值确定:网页重要度按其正向链接的个数进行分配。,网页重要度计算:PageRank,PageRank网页排序算法IV-PageRank与数学及算法总结 (2)PageRank算法总结?,