第七章 搜索结构 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.

Slides:



Advertisements
Similar presentations
渡黑水溝 郁永河. 2 戎克船:是明末清初時期往返兩岸的主要交通工具 ∗ 1. 關於台灣的開發歷史,我們到底了解多少呢?不妨試著說出 就我們所知有關台灣開發史的故事、小說、電影、音樂與大 家分享。 ∗ 2. 什麼是黑水溝?黑水溝為什麼會成為大陸移民渡海來臺時最 大的威脅? ∗ 3. 有聽過「六死三留一回頭」、「有唐山公,無唐山嬤」這兩.
Advertisements

金融一班 王亚飞 王亚飞 王浩浩 王浩浩 吴海玥 吴海玥 我 连云港 的 家 乡 连云港 连云港,位于东经118°24′~119°48′和北纬 34°~35°07′之间,古称郁洲、海州,民国时称 连云市,建国后称新海连市,别称“港城”。东 西长129公里,南北宽约132公里,水域面积 平方公里。连云港市也是我国于1984年.
配备计算机教室、多媒体教室、图书室、卫生室、 实验室、仪器室、音体美劳器材室、心理咨询室、少先 队活动室、教师集体备课室等专用教室。实验室、仪器 室全部按照省标准配备器材,演示实验开设率达 100% 。 学校现有图书 6050 册,生均 40 册。有一个 200 米环形跑 道的运动场地。 学校基本情况.
長得像的圖形 設計者:嘉義縣興中國小 侯雪卿老師 分享者:高雄市中山國小 江民瑜老師 高雄市勝利國小 許嘉凌老師.
课例评析—— 《回乡偶书》和《渔歌子》 评课人:冯琴.
就作文本身而言,题目堪称“眉目”,是作文的“眼睛”,从某种程度上说,它是作文材料和主题的浓缩或概括。
文化创新的途径.
举国上下抗击风雪灾害专刊 温暖行动 灾情告急年关近 万众一心齐抗灾 可歌可泣留千古 温暖行动遍人间 导读提示 阳关雨露出版社
2009—2010学年第一学期 小学品德与社会课程教学监控情况分析 潘诗求 2010年3月
15世纪欧洲人绘制的世界地图.
二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树 相互转换,这样就解决了树的
作文选刊 作文之窗
第 九 章 搜尋(Search) 課程名稱:資料結構 授課老師:_____________.
第7课 新航路的开辟 第7课 新航路的开辟.
快乐假期 2010年第6期 总第54期 贝尔芬 主编 暑期作文专刊 《快乐假期》杂志社 出版.
股票、债券、和保险 投资理财的话题.
主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213
主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213
老师:如何撰写教研文章? 主讲:石修银 谨以此赠与孜孜追求的老师 谨以此赠与改变人生的老师.
依“标”据“本”,命制考题 发表于《数学教学》2006年第9期 (华东师大核心“CN”刊物)
电阻 新疆兵团四师76团中学.
评价是为了促进 学生发展的评价。. 评价是为了促进 学生发展的评价。 语言有温度,字词知冷暖.
外貌和能力哪个更重要.
从此,我不在沉默寡言 那一刻 就在这一刻 世上还有爸爸好 我 长 大 了 张绅 4 文苑芬芳
从容行走,优雅为师 江苏省梁丰高级中学 任小文
第九章. 查找 (Chapter 9. Searching)
第十章 搜索 静态搜索结构 动态搜索结构 散列 可扩充散列.
觀察內容: 時間 作息 觀察內容 9:30~9:40 角落分享
第8章 查找 数据结构(C++描述).
前不久看到了这样一则报道:某个大学校园里,一个大学生出寝室要给室友留一张字条,告诉他钥匙放在哪里。可是“钥匙”两个字他不会写,就问了其他寝室的同学,问了好几个,谁也不会写,没办法,只好用“KEY”来代替了。 请大家就此事发表一下自己看法。
树(三) 2012初赛知识点梳理.
导入 21世纪教育网经纬社会思品工作室制作 我们可以通过哪些媒介(途径)获知这些消息?.
第7章 查找 丽水学院工学院.
利用共同供應契約 辦理大量訂購流程說明.
A1 “奔腾少年” 学校生活 本刊第001期 本刊共 28 版 出版人:刘雨清 2014年6月1日 星期日 五月初四 甲午年 己巳月 癸卯日.
西师大版语文五年级上册第七单元 心田上的百合花.
第九章 查找 2018/12/9.
数据结构与算法
第7章 查找 北京师范大学 教育技术学院 杨开城.
第九章 查找(Search) 9.1 基本概念 9.2 静态查找表 9.3 动态查找表 9.4 Hash表.
第七章 集合与搜索 集合及其表示 并查集 静态搜索表 二叉搜索树 AVL树.
何谓查找表 ? 查找表是由同一类型的数据元素(或记录)构成的集合。
第7章 查找 本章中介绍下列主要内容: 静态查找表及查找算法:顺序查找、折半查找 动态查找表及查找算法:二叉排序树 哈希表及查找算法.
第11讲 树和二叉树(二).
图内容回顾 图 Dijkstra算法 最短路径 Floyd算法 拓扑排序 邻接矩阵 有向图的应用 DAG图 关键路径 邻 接 表 存储结构
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
报告人:陈思同 数据结构与数据库习题课 报告人:陈思同
第三节 微生物的耗能代谢(生物固氮) 一、固氮微生物 二、固氮酶 三、影响固氮作用的主要因素.
Ch.9 查找 查找和排序是两个重要的运算 §9.1 基本概念
第九章 查找 2019/2/16.
第5到第6章的勘误表 注意:这个 c 应改为 d 1、第 92 页 倒数第 7 行:
无向树和根树.
学习中苦多?乐多? ——高二(1)班主题班会.
顺序表的删除.
浙江大学医学院公共技术平台 实验仪器预约管理系统系列培训 医学院公共技术平台 丁巧灵
顺序查找.
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
第4章 Excel电子表格制作软件 4.4 函数(一).
兒童及少年保護、 家庭暴力及性侵害事件、 高風險家庭 宣導與通報
第5节 树 前两章学习的栈和队列属于线性结构。在这种结构中,数据元素的逻辑位置之间呈线性关系,每一个数据元素通常只有一个前件(除第一个元素外)和一个后件(除最后一个元素外)。在实际生活中,可以用线性结构描述数据元素之间逻辑关系的问题是很广泛的,但也有很多问题不能依靠线性结构来解决,例如家谱、行政组织机构等都是非线性的数据结构。其中树就是一种非线性的数据结构。
第七、八次实验要求.
第13课 东汉的兴亡.
第8章 查找 预备知识 8.1 静态查找表 8.2 动态查找表 8.3 哈希表.
第9章 查找 静态查找表 二叉排序树 平衡二叉树(AVL树) 小结 B树 哈希表.
繁星推薦系統 楊曉婷 副理 教育的服務 是我們的責任.
2019年9月11日星期三 离散  数学 计算机学院 冯伟森 2019年9月11日星期三.
單元主題名: 大家都是好朋友 設計者:柯淑惠、林雨欣.
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
最小生成树 最优二叉树.
Presentation transcript:

第七章 搜索结构 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件

本章主要内容 搜索的概念 静态搜索结构 顺序搜索 有序顺序表 折半搜索 斐波那契搜索 二叉搜索树

搜索的概念 在数据集合中寻找满足某种条件的数据元素 可唯一标识一个元素的属性称为关键字(key) 衡量搜索算法时间效率的标准 搜索可能成功 也可能不成功 可唯一标识一个元素的属性称为关键字(key) 基于关键字的搜索结果是唯一的 基于其他属性的搜索结果可能不唯一 衡量搜索算法时间效率的标准 平均比较次数,或平均搜索长度(ASL)

顺序搜索 从表头(或尾)开始,依次用各对象的关键字与给定值x比较 若值相等,搜索成功,返回下标 若整个表都未找到,搜索失败 … 搜索成功的平均搜索长度: pi: 搜索第 i 个元素概率 ci: 搜索到第 i 个元素所需比较次数 pi=1/n ci=i+1 n个元素 搜索不成功的平均搜索长度 … ASLunsucc = n+1

有序顺序表 顺序搜索 从表头(或尾)开始,依次用各对象的关键字与给定值x比较 … 若值相等,搜索成功,返回下标 若x比关键字大时,搜索失败 搜索成功的平均搜索长度: n个元素,n+1个空档 搜索不成功的平均搜索长度 …

有序顺序表 折半搜索 x先和mid元素比较 搜索成功 若相等,搜索成功,返回下标 若x更小,继续在前半部分搜索 若x更大,继续在后半部分搜索 搜索40 10 20 30 40 50 60 1 2 3 4 5 折半搜索 low=0, high=n-1,mid=(low+high)/2 x先和mid元素比较 若相等,搜索成功,返回下标 若x更小,继续在前半部分搜索 high=mid-1, mid=(low+high)/2 若x更大,继续在后半部分搜索 low=mid+1, mid=(low+high)/2 low mid high 40>30 10 20 30 40 50 60 1 2 3 4 5 low mid high 40<50 10 20 30 40 50 60 1 2 3 4 5 low mid high 40=40 搜索成功

有序顺序表 折半搜索 x先和mid元素比较 low>high,搜索失败 若相等,搜索成功,返回下标 若x更小,继续在前半部分搜索 搜索25 10 20 30 40 50 60 1 2 3 4 5 折半搜索 low=0, high=n-1,mid=(low+high)/2 x先和mid元素比较 若相等,搜索成功,返回下标 若x更小,继续在前半部分搜索 high=mid-1, mid=(low+high)/2 若x更大,继续在后半部分搜索 low=mid+1, mid=(low+high)/2 low mid high 25<30 10 20 30 40 50 60 1 2 3 4 5 low mid high 25>10 10 20 30 40 50 60 1 2 3 4 5 10 20 30 40 50 60 1 2 3 4 5 mid high low low mid high 25>20 low>high,搜索失败

有序顺序表 折半搜索 折半搜索构造的判定树 设满二叉树n=2h-1 则有2h=n+1,h=log2(n+1) 平均搜索长度 50 = 30 < > 20 40 60 10 折半搜索 折半搜索构造的判定树 设满二叉树n=2h-1 则有2h=n+1,h=log2(n+1) 平均搜索长度 错位相减法

二叉搜索树 二叉搜索树的概念 或者是空树 或者具有以下性质 每个结点都有一个关键字(key) 左子树上所有结点的key小于根结点的key 左子树和右子树也是二叉搜索树

二叉搜索树 搜索x操作 从根开始搜索x 若当前结点为空,则搜索失败,否则 x小于当前结点key,在左子树搜索 53 65 87 81 94 78 09 45 23 17 搜索23

二叉搜索树 搜索x操作 从根开始搜索x 若当前结点为空,则搜索失败,否则 x小于当前结点key,在左子树搜索 53 65 87 81 94 78 09 45 23 17 搜索94

二叉搜索树 插入x操作 从根开始搜索x,若存在,放弃 否则搜索到叶子结点时 x小于叶子结点key,作为叶子结点左孩子 53 65 87 81 94 78 09 45 23 17 插入88 88

二叉搜索树 删除x操作 从根开始搜索x,若不存在,放弃;否则: x只有左子树,左孩子填补 x只有右子树,右孩子填补 x有左右子树,右子树上中序第一结点v (左走直到头)填补,用v的右孩子填补v 53 17 78 删除45 09 45 65 87 23 81 94

二叉搜索树 删除x操作 从根开始搜索x,若不存在,放弃;否则: x只有左子树,左孩子填补 x只有右子树,右孩子填补 x有左右子树,右子树上中序第一结点v (左走直到头)填补,用v的右孩子填补v 53 17 78 删除78 09 45 94 88 23

二叉搜索树 删除x操作 从根开始搜索x,若不存在,放弃;否则: x只有左子树,左孩子填补 x只有右子树,右孩子填补 x有左右子树,右子树上中序第一结点v (左走直到头)填补,用v的右孩子填补v 53 17 78 删除78 65 99 09 45 94 23 81 81 88

二叉搜索树 性能分析 满二叉树 中间结点等概率搜索, 中间结点数为n 叶子为搜索失败情况 其他为key 叶子结点等概率搜索,

二叉搜索树 性能分析 一般二叉树 随机情况下,二叉树操作代价平均为O(log2n) p(n)表示在一棵有n个结点的二叉树上 成功搜索一个关键值的平均比较次数 叶子为搜索失败情况 其他为key 根 左子树有i个结点 右子树有n-i-1个结点 随机情况下,二叉树操作代价平均为O(log2n)

二叉搜索树 性能分析 一般二叉树 pi:搜索中间结点 i 概率 叶子为搜索失败情况 hi:j深度 其他为key qj:搜索叶子结点 j 概率 hj:j的深度

二叉搜索树 最优二叉搜索树 假设有n个key,每个key搜索概率不同,除key之外的值(即搜索不成功情况)搜索概率也不同,构造平均搜索长度最小的二叉树 例如,3个key ={10,20,30},每个key搜索概率为P={0.5, 0.1, 0.05},除key之外(空隙中)的值搜索概率为Q={0.15, 0.1, 0.05, 0.05} 10 20 30 0.5 0.1 0.05 0.15

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度),则C(0,n)是最后结果 w(i,j)表示第 i+1 到 j 个key权值及第i到j个空隙权值和 w(i,j) = (qi+…+qj) + (pi+1+…+ pj) 10 20 30 p1 p2 p3 q0 q1 q2 q3 40 50 60 p4 p5 p6 q4 q5 q6 W(2,5)=(q2+q3+q4+q5) + (p3+p4+p5)

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度),则C(0,n)是最后结果 w(i,j)表示第 i+1 到 j 个key权值及第i到j个空隙权值和 w(i,j) = (qi+…+qj) + (pi+1+…+ pj) i+1, … , j以k为根的最优二叉树代价: = pk + c(i,k-1)+w(i,k-1) + c(k,j)+w(k,j) 左子树的代价 右子树的代价 根的代价 左子树加一层的代价 右子树加一层的代价

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度),则C(0,n)是最后结果 w(i,j)表示第 i+1 到 j 个key权值及第i到j个空隙权值和 w(i,j) = (qi+…+qj) + (pi+1+…+ pj) i+1, … , j以k为根的最优二叉树代价: = pk + c(i,k-1)+w(i,k-1) + c(k,j)+w(k,j) = w(i,j) + c(i,k-1) + c(k,j) 左子树的代价 树上权值和 右子树的代价

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度),则C(0,n)是最后结果 w(i,j)表示第 i+1 到 j 个key权值及第i到j个空隙权值和 w(i,j) = (qi+…+qj) + (pi+1+…+ pj) i+1, … , j以k为根的最优二叉树代价: = pk + c(i,k-1)+w(i,k-1) + c(k,j)+w(k,j) = w(i,j) + c(i,k-1) + c(k,j) i+1, … , j的最优二叉树代价: c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j 树上权值和 左右子树代价和最小值

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p1 p2 p3 p4 p5 p6 10 20 30 40 50 60 q0 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p1 10 p2 p3 p4 p5 p6 q0 20 30 40 50 60 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p2 20 p1 p3 p4 p5 p6 10 30 40 50 60 q0 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p3 30 p1 p2 p4 p5 p6 10 20 40 50 60 q0 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p4 40 p1 p2 p3 p5 p6 10 20 30 50 60 q0 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p5 50 p1 p2 p3 p4 p6 10 20 30 40 60 q0 q1 q2 q3 q4 q5 q6 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 给定n个key,第i个key对应的权值(概率)pi,空隙对应的权值qi,造平均搜索长度最小的二叉树 c(i,j)表示第 i+1 到 j 个key构造的最优二叉树的代价(平均搜索长度) c(i,j) = w(i,j) + min{ c(i,k-1) + c(k,j) }, 其中i < k ≤ j p6 60 p1 p2 p3 p4 p5 10 20 30 40 50 q6 q0 q1 q2 q3 q4 q5 c(0,6)=w(0,6)+min{c(0,k)+c(k,6)}, 0 < k ≤ 6

二叉搜索树 最优二叉搜索树 第1步:各key自成二叉树,计算平均搜索长度c,保留最小值 10 20 30 10 20 30 W=0.75 0.5 0.1 0.05 0.15 最优二叉搜索树 第1步:各key自成二叉树,计算平均搜索长度c,保留最小值 10 0.5 0.15 0.1 20 0.1 0.05 30 0.05 W=0.75 W=0.25 W=0.15 c(0,1)=0.75 c(1,2)=0.25 c(2,3)=0.15 c(0,1)=0.75 c(1,2)=0.25 w等于树上所有结点(内部和外部)的权值和, c等于w加上左右子树的代价 c(2,3)=0.15

二叉搜索树 最优二叉搜索树 第2步:相邻2个key成二叉树, 计算平均搜索长度c 保留最小值 10 20 30 20 10 c(1,2) 0.5 0.1 0.05 0.15 最优二叉搜索树 第2步:相邻2个key成二叉树, 计算平均搜索长度c 保留最小值 20 0.1 0.05 10 0.5 0.15 c(1,2) 10 0.5 0.15 0.1 20 0.05 c(0,1) 30 0.05 20 0.1 c(2,3) 20 0.1 0.05 30 c(1,2) c(0,2)=w+c(1,2) =1.15 c(0,2)=w+c(0,1) =1.65 c(1,3)=w+c(2,3) =0.5 c(1,3)=w+c(0,1) =0.6 c(0,1)=0.75 c(0,2)=1.15 c(1,2)=0.25 c(1,3)=0.5 w等于树上所有结点(内部和外部)的权值和, c等于w加上左右子树的代价 c(2,3)=0.15

二叉搜索树 最优二叉搜索树 第3步:相邻3个key成二叉树, 计算平均搜索长度c 保留最小值 10 20 30 20 10 30 20 10 0.5 0.1 0.05 0.15 最优二叉搜索树 第3步:相邻3个key成二叉树, 计算平均搜索长度c 保留最小值 20 0.1 10 0.5 0.15 30 0.05 20 0.1 0.05 10 0.5 0.15 30 30 0.05 20 0.1 10 0.5 0.15 c(0,3)=w+c(1,3) =1.5 c(0,3)=w+c(0,1)+c(2,3) =1.9 c(0,3)=w+c(0,2) =2.15 c(0,1)=0.75 c(0,2)=1.15 c(0,3)=1.5 c(1,2)=0.25 c(1,3)=0.5 w等于树上所有结点(内部和外部)的权值和, c等于w加上左右子树的代价 c(2,3)=0.15