算法导论-sch4 Randomized Algorithms

合集下载

算法导论复习资料

算法导论复习资料

算法导论复习资料一、选择题:第一章的概念、术语。

二、考点分析:1、复杂度的渐进表示,复杂度分析。

2、正确性证明。

考点:1)正确性分析(冒泡,归并,选择);2)复杂度分析(渐进表示O,Q,©,替换法证明,先猜想,然后给出递归方程)。

循环不变性的三个性质:1)初始化:它在循环的第一轮迭代开始之前,应该是正确的;2)保持:如果在循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持正确;3)当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。

插入排序算法:INSERTION-SORT(A)1 for j ←2 to length[A]2 do key ←A[j]3 ▹Insert A[j] into the sorted sequence A[1,j - 1].4 i ←j - 15 while i > 0 and A[i] > key6 do A[i + 1] ←A[i]7 i ←i - 18 A[i + 1] ←key插入排序的正确性证明:课本11页。

归并排序算法:课本17页及19页。

归并排序的正确性分析:课本20页。

3、分治法(基本步骤,复杂度分析)。

——许多问题都可以递归求解考点:快速排序,归并排序,渐进排序,例如:12球里面有一个坏球,怎样用最少的次数找出来。

(解:共有24种状态,至少称重3次可以找出不同的球)不是考点:线性时间选择,最接近点对,斯特拉算法求解。

解:基本步骤:一、分解:将原问题分解成一系列的子问题;二、解决:递归地解各子问题。

若子问题足够小,则直接求解;三、合并:将子问题的结果合并成原问题的解。

复杂度分析:分分治算法中的递归式是基于基本模式中的三个步骤的,T(n)为一个规模为n的运行时间,得到递归式T(n)=Q(1) n<=cT(n)=aT(n/b)+D(n)+C(n) n>c附加习题:请给出一个运行时间为Q(nlgn)的算法,使之能在给定的一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。

算法导论4-4

算法导论4-4

算法导论4-4读书笔记本章主要讲解了使⽤递归树⽅法求解递归式;在递归树中,每个节点表⽰⼀个单⼀⼦问题的代价,⼦问题对应某次递归函数调⽤。

我们将树中每层中的代价求和,得到每层代价,然后将所有曾的代价求和,得到所有层次的递归调⽤的总代价。

递归树适合⽤来⽣成好的猜测,然后可⽤代⼊法来验证猜测是否正确,但是在某种程度上,递归树法可能不够精确;课后练习由于本次课后练习的题⽬相似性较⾼,所以这⾥只做两题,第⼀和最后⼀道题4.4-1对递归式T(n)=3T(\lfloor n/2 \rfloor) + n,利⽤递归树确定⼀个好的渐近上界,⽤代⼊法进⾏验证。

上⾯是递归树,其中第i层有3^i个节点,每个节点的代价是(\frac{1}{2})^in,所以叶⼦节点的代价为3^{\log_2^n},即n^{\log_2^3};所以总代价为:\begin{aligned} T(n)&=c\sum_{i=0}^{\log_2^n-1}(\frac{3}{2})^in + \theta(n^{\log_2^3}) \\[2ex] &=cn \ast \frac{(\frac{3}{2})^{\log_2^n}-1}{\frac{3} {2}-1} + \theta(n^{\log_2^3}) \\[2ex] &=2cn\ast {(\frac{3}{2})^{\log_2^n}} - 2cn + \theta(n^{\log_2^3})\\[2ex] &=2cn^{\log_2^3} - 2cn +\theta(n^{\log_2^3})\\[2ex] &=\theta(n^{\log_2^3}) \end{aligned}证明略4.4-9对递归式T(n)=T(\alpha n)+T((1-\alpha)n)+cn,利⽤递归树给出⼀个渐近紧确解,其中0<\alpha<1和c>0是常数。

算法导论 第五章 概率分析和随机算法

算法导论 第五章 概率分析和随机算法
Proof We start by considering the particular permutation in which each element A[i] receives the ith smallest priority. We shall show that this permutation occurs with probability exactly 1/n!. For i = 1, 2, ..., n, let Xi be the event that element A[i] receives the ith smallest priority. Then we wish to compute the probability that for all i, event Xi occurs, which is Pr {X1 ∩ X2 ∩ X3 ∩ ··· ∩ Xn-1 ∩ Xn}. Using Exercise C.2-6, this probability is equal to Pr {X1} · Pr{X2 | X1} · Pr{X3 | X2 ∩ X1} · Pr{X4 | X3 ∩ X2 ∩ X1} Pr{Xi | Xi-1 ∩ Xi-2 ∩ ··· ∩ X1} Pr{Xn | Xn-1 ∩ ··· ∩ X1}. We have that Pr {X1} = 1/n because it is the probability that one priority chosen randomly out of a set of n is the smallest. Next, we observe that Pr {X2 | X1} = 1/(n - 1) because given that element A[1] has the smallest priority, each of the remaining n - 1 elements has an equal chance of having the second smallest priority. In general, for i = 2, 3, ..., n, we have that Pr {Xi | Xi-1 ∩ Xi-2 ∩ ··· ∩ X1} = 1/(n - i + 1), since, given that elements A[1] through A[i - 1] have the i - 1 smallest priorities (in order), each of the remaining n - (i - 1) elements has an equal chance of having the ith smallest priority. Thus, we have

算法导论第四版

算法导论第四版

算法导论第四版引言算法是计算机科学中的重要概念,它是解决问题的步骤和方法的描述。

《算法导论第四版》是一本经典的算法教材,深入浅出地介绍了各种常见的算法和数据结构。

本文将对这本书进行全面、详细和深入地探讨,帮助读者更好地理解和应用算法导论。

为什么学习算法导论1.提升编程技能:算法是编程的基础,学习算法可以提升编程的技能和水平。

2.解决实际问题:算法解决了许多实际问题,学习算法可以帮助我们更好地解决实际问题。

3.备战面试:许多技术面试都会考察算法和数据结构的知识,学习算法导论可以更好地应对面试。

基础知识算法分析1.时间复杂度:衡量算法的执行时间随输入规模增长的速度。

2.空间复杂度:衡量算法执行过程中所需的额外空间随输入规模增长的速度。

排序算法1.冒泡排序:反复交换相邻的元素,将最大的元素逐渐“冒泡”到最后。

2.插入排序:通过构建有序序列,依次将未排序的元素插入到已排序的序列中。

3.快速排序:选择一个基准元素,按照它的值将数组分成两部分,递归地对两部分进行排序。

4.归并排序:将数组分成两部分,分别对两部分进行排序,然后将两个有序的子数组合并成一个有序的数组。

数据结构数组和链表1.数组:连续的内存空间,支持随机访问,但插入和删除的时间复杂度较高。

2.链表:不连续的内存空间,只支持顺序访问,但插入和删除的时间复杂度较低。

栈和队列1.栈:后进先出的数据结构,主要有进栈和出栈两个操作。

2.队列:先进先出的数据结构,主要有入队和出队两个操作。

哈希表1.哈希函数:将关键字映射到哈希表中的位置。

2.哈希冲突:不同的关键字映射到了同一个位置,解决冲突的方法有开放寻址法和链地址法。

3.哈希表的应用:常用于高效地插入、删除和查找操作。

树和二叉树1.树:由节点和边组成的一种数据结构,常见的树包括二叉树、平衡二叉树和B树等。

2.二叉树:每个节点最多有两个孩子节点的树。

堆和优先队列1.堆:完全二叉树,堆可以分为最大堆和最小堆。

算法导论第4版英文版

算法导论第4版英文版

算法导论第4版英文版Algorithm Introduction, Fourth Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein is undoubtedly one of the most influential books in the field of computer science. With its comprehensive coverage of various algorithms and their analysis, this book has become a beloved resource for students, researchers, and professionals alike.The fourth edition of Algorithm Introduction builds upon the success of its predecessors, offering updated content and new insights into the world of algorithms. It starts with an introduction to algorithm analysis, providing readers with a solid foundation to understand the efficiency and effectiveness of different algorithms. The authors skillfully explain the techniques used in algorithm design and analysis, such as divide-and-conquer, dynamic programming, and greedy algorithms.One of the standout features of this book is its detailed and comprehensive treatment of various data structures. From arrays and linked lists to trees and graphs, the authors explore the intricacies of each data structure, discussing their properties, operations, and analysis. This thorough examination ensures that readers gain a deep understanding of the strengths and weaknesses of different data structures, enabling them to make informed decisions when choosing the appropriate structure for their algorithms.The book also covers a wide range of fundamental algorithms, including sorting, searching, and graph algorithms. The authors presentthese algorithms in a clear and concise manner, using pseudocode and diagrams to facilitate understanding. Additionally, they providedetailed analysis of these algorithms, discussing their time and space complexity, as well as their theoretical limits.Furthermore, Algorithm Introduction delves into advanced topics, such as computational geometry, network flow, and NP-completeness. These topics offer readers a glimpse into the cutting-edge research and real-world applications of algorithms. The authors' expertise in these areas shines through, making the book a valuable resource for those interested in pushing the boundaries of algorithmic research.In addition to its comprehensive content, Algorithm Introduction also stands out for its pedagogical approach. The authors include numerous exercises and problems throughout the book, encouraging readers to apply the concepts they have learned. These exercises not only serve as a means of reinforcing understanding but also provide an opportunity for readers to sharpen their problem-solving skills.The fourth edition of Algorithm Introduction is undoubtedly a must-have for anyone interested in algorithms and their applications. Its clear and concise explanations, comprehensive coverage of topics, and practical exercises make it an invaluable resource for students, researchers, and professionals alike. Whether you are a beginner looking to grasp the basics or an experienced practitioner seeking to expand your knowledge, this book will undoubtedly enhance your understanding of algorithms and their role in computer science.。

ACM算法书籍推荐

ACM算法书籍推荐

acm算法书籍收藏推荐我常感叹到,学计算机的人是幸福的,因为在这个领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。

学力学就没有这样的好事了(抱怨一下),除了论文就是论文,满篇公式,晦涩坚深,真不是给人看的(虽然我也没看过几篇)。

在这里列出一些我看过或者准备看的算法书籍,以供参考。

1. CLRS 算法导论算法百科全书,只做了前面十几章的习题,便感觉受益无穷。

2. Algorithms 算法概论短小精悍,别据一格,准经典之作。

一个坏消息: 同算法导论,该书没有习题答案。

好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。

不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发布。

另有中文版名《算法概论》,我没看过,不知道翻译得怎么样。

如果有心的话,还是尽量看原版吧,其实看原版与看中文版花费时间不会相差很大,因为大部分时间其实都花费在做习题上了。

3. Algorithm Design 算法设计很经典的一本书,很久之前看的,遗憾的是现在除了就记得它很经典之外其它都忘光了。

4. SICP 计算机程序的构造和解释六星之书无需多言,虽然这不是一本讲算法的书,但看完此书有助于你更深入的理解什么是递归。

我一直很强调习题,看完此书后你至少应该做完前四章的太部分习题。

否则那是你的遗憾,也是作者的遗憾。

5. Concrete Mathematics 具体数学有人说看TAOCP之前应该先弄清楚这本书的内容,要真是如此的话那我恐怕是看不到TAOCP了。

零零碎碎的看了一大半,很多东西都没有时间来好好消化。

如果你是刚进大学不久的本科生,有着大把的可自由支配时间,那你幸运又幸福了,花上几个月时间好好的读一下此书吧,收获绝对大于你的期望值。

新市场营销法则助推企业成长电子商务营销食品餐饮营销建筑房产营销消费品营销6. Introduction to The Design and Analysis of Algorithms 算法设计与分析基础很有趣的一本算法书,有许多在别的书上找不到的趣题,看完此书绝对能让你大开眼界,实在是一本居家旅行,面试装逼的必备佳作。

[1]算法导论


实例:求最大公约数
算法1.1 Euclid(m,n)
输入:非负整数 m, n,其中m与n不全为0 输出:m 与 n 的最大公约数 1. while m>0 do 2. r n mod m 3. n m 4. m r 5. return n
实例:改进的顺序检索
算法1.2 Search(L,x)
课程主要内容
近似 算法
随机 算法
处理难解问 题的策略
问题处理策略 计算复杂性理论 算法分析方法 算法设计技术 基础知识
NP 完全理论 算法分析与问题的计算复杂性 分治 动态 贪心 回溯与 策略 规划 算法 分支限界 数学基础、数据结构
算法的基本概念
1. 2. 3. 4. 5. 为什么要研究算法? 什么是算法? 算法化求解问题的过程 重要的问题类型 算法设计策略
Decrease and conquer Transform and conquer
20
Backtracking and Branch and bound Space and time tradeoffs
求:总等待时间最少的调度方案,即求S的排列i1, i2, …, in使得
min{k 1 ( n k 1)t ik }
n
求解方法 • 贪心策略:加工时间短的先做 • 如何描述这个方法?这个方法是否对所有的实例都能得到 最优解?如何证明?这个方法的效率如何?
例2 排序算法的评价 已有的排序算法:考察元素比较次数
2-1. 计算判别式d 2-2. 根据d的值进行不同处理 2-2-1:if d>0 x1=… x2=… 2-2-2:if d=0 x1=x2=… 2-2-3:if d<0 ….
4 算法的伪码描述

算法导论-sch4 Randomized Algorithms

2012/10/31
5 3 1 2 1,
算法设计与分析
4, 5 3 1 2 1,
4, 5
1 2, 1, 2 3
13
Min Cut(3)

出错概率
2 n ( n 1) 1 e 重复k次出错概率为 n(n 1)
k
2k

本算法是一个Monte Carlo型算法
2012/10/31 算法设计与分析 16
运行时间的期望和方差
第4章(补充) 随机算法
4.1 概述 4.2 时间复杂性度量 4.3 一般设计风范 4.4 4 4 随机取样 4.5 串匹配算法 4.6 格点逼近问题
4.3 一般设计风范(1)
1.挫败对手(Foiling the Adversary) 将不同的算法组成算法群, 根据输入实例的不同随机地或 有选择地选取不同的算法, 以使性能达到最佳. 2.随机采样(Random Sampling) 用“小”样本群的信息, 指导整体的求解. 3.随机搜索(Random Search) 是一种简单易行的方法, 可以从统计角度分析算法的平均 性能, 如果将搜索限制在有解或有较多解的区域, 可以大 大提到搜索的成功概率. 4.指纹技术(Fingerprinting) 利用指纹信息可以大大减少对象识别的工作量 利用指纹信息可以大大减少对象识别的 作量. 通过随机 映射的取指方法, Karp和Rabin得到了一个快速的串匹配 随机算法.
确定的 算法 非确定的
2012/10/31
算法设计与分析
7
研究意义(3)
有效的随机算法:

素性测试问题: 提出的第一个多项式时间的算 法是随机算法; 法是随机算法 匹配问题: 存在NC类的随机并行算法,而没有 NC类的确定并行算法; 无向图可达问题 题: 存在logspace g p 的随机算法, 算 而没有logspace的确定算法,

算法导论第四版

算法导论第四版算法导论第四版是由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein联合编写的一本科学经典著作。

自从第一版于1990年出版以来,80多个国家的高校和研究机构已经采用了它作为教材。

一、内容简介本书内容主要包括算法基础、排序和顺序统计、数据结构、高级数据结构、动态规划和贪心、图算法、字符串匹配、计算几何、各种算法设计思想的综合应用、NP完全性及其证明和近似算法等模块,是一本涵盖算法计算全领域最全且最深入的图书之一。

二、特点分析1.系统性强算法导论第四版是一本系统性很强的大部头编著。

全书分为37个章节,前36章依次介绍具体的数据结构和算法各类,在最后一章提供了NP完全性和近似算法的知识概要,将前面内容的知识点串联起来。

2.实用性极高Cormen教授的目标是确保学生深刻理解原则,给算法设计师提供一些有用的思维工具。

与其他算法教程不同,本书的设计非常重视实用性。

决策树、对该问题的缩放等概念都被设计成了算法复杂度分析的基础构件。

3.全面性本书作为关于算法和数据结构领域最为全面深入的著作,受到广泛的赞誉并发挥了重要作用。

它从多个角度讲授学生算法和数据结构的基础知识。

三、缺点评析1.门槛高算法导论的难度较高,尤其是对于没有编程经验的人来说,可能需要花费更多的时间来理解。

此外,本书阅读时需要能运用汇编语言、转换进制等基本知识。

2.实例不足本书将理论知识与实际应用结合得很好,但在实际例子上可能有些缺乏。

由于该书是一本科学教材,而且想讲述全部的算法与数据结构是不可能的,所以理论介绍占据了大部分篇幅,并没有详细介绍很多并非重点的算法细节。

结论:随着科技的进步和应用领域的拓展,数据结构和算法这门学科愈发显得重要,它对于软件产品的实际开发以及科学技术的推进具有非常重要的意义。

算法导论第四版作为算法和数据结构领域深入挖掘的著作,不可小视。

麻省理工学院-算法导论

麻省理工学院-算法导论关于课本的介绍如下:本书自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册。

本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。

各章内容自成体系,可作为独立单元学习。

所有算法都用英文和伪码描述,使具备初步编程经验的人也可读懂。

全书讲解通俗易懂,且不失深度和数学上的严谨性。

第二版增加了新的章节,如算法作用、概率分析与随机算法、线性编程等,几乎对第一版的各个部分都作了大量修订。

学过计算机的都知道,这本书是全世界最权威的算法课程的大学课本了,基本上全世界的名牌大学用的教材都是它。

这本书一共四位作者,Thomas H. Cormen,Charles E. Leiserson和Ronald L. Rivest是来自MIT的教授,Clifford Stein是MIT出来的博士,现在哥伦比亚大学做教授,四人姓氏的首字母联在一起即是此书的英文简称(CLRS 2e),其中的第三作者Ronald L. Rivest是RSA算法的老大(算法名字里面的R即是指他),四个超级大牛出的一本书,此书不看人生不能算完整。

再介绍一下课堂录像里面授课的两位MIT的老师,第一位,外表“绝顶聪明”的,是本书的第二作者Charles E. Leiserson,以逻辑严密,风趣幽默享誉MIT。

第二位,留着金黄色的络腮胡子和马尾发的酷哥是Erik Demaine,21岁即取得MIT教授资格的天才,1981出生,今年才25岁,业余爱好是俄罗斯方块、演戏、琉璃、折纸、杂耍、魔术和结绳游戏。

另外,附上该书的中文电子版,pdg转pdf格式,中文版翻译自该书的第一版,中文书名没有使用《算法导论》,而使用的是《现代计算机常用数据结构和算法》,1994年出版时没有得到国外的授权,属于“私自翻译出版”,译者是南京大学计算机系的潘金贵。

课程重点算法导论是麻省理工学院电机工程与计算机科学系“理论计算机科学”集中选修课程的先导科目。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析Design and Analysis of Algorithms主讲人徐云Fall 2012, USTC第4章(补充)随机算法4.1 概述4.2 时间复杂性度量4.3 一般设计风范4.4 随机取样444.5 串匹配算法4.6 格点逼近问题4.1 方法概述●随机算法的定义●背景和历史究意●研究意义●随机算法的分类●重复性定律●示例:Quick Sort,Min Cut随机算法的定义●定义:是一个概率图灵机. 也就是在算法中引入随机因素入随机因素,即通过随机数选择算法的下一步操作。

三要素输入实例随机源和停止准则●三要素:输入实例、随机源和停止准则。

●特点:简单、快速和易于并行化。

●一种平衡:随机算法可以理解为在时间、空间和随机三大计算资源中的平衡(Lu C.J. PhD Thesis 1999)●重要文献:Motwani R. and Raghavan P., 重要文g ,Randomized Algorithms. Cambridge University Press, New York, 1995背景和历史●著名的例子-Monte Carlo求定积分法-随机k-选择算法k-随机快排序-素性判定的随机算法-二阶段随机路由算法●重要人物和工作d L等概率机-de Leeuw等人提出了概率图灵机(1955)-John Gill的随机算法复杂性理论(1977)-Rabin的数论和计算几何领域的工作(1976)b(16) -Karp的算法概率分析方法(1985)-Shor的素因子分解量子算法(1994)求解问题的一种重要让步策略●●有效的随机算法●实际可行的随机算法●可转化为确定算法●易于并行化●促进智能计算的发展一种重要让步策略:传统算法: 以100%成功概率求解确定的问题的最优解近似算法: 一种对解质量的让步算法随机算法: 一种对求解成功概率和非确定的解质量的让步智能算法: 遗传算法、模拟退火法、拟人拟物算法等有效的随机算法:●素性测试问题: 提出的第一个多项式时间的算法是随机算法法是随机算法;●匹配问题: 存在NC 类的随机并行算法,而没有NC 类的确定并行算法;●无向图可达问题: logspace 的随机算法,题存在g p 算而没有logspace 的确定算法,随机算法的分类常见的两类随机算法:常见的两类随机算法●Las Vegas算法运行结束时总能给出正确的解,但其运行时间每次有所不同。

Monte Carlo算法可能得到不正确的结果但这●算法可能得到不正确的结果,但这种概率是小的且有界的。

重复性定律设是次随机试验的成概率则●ε是一次随机试验的成功概率,则N次独立随机试验的成功概率为P = 1-(1-ε)N ≈Nε●例如:ε=0.05, N=20, P ≈1Quick Sort●传统的快排序算法总是取第个元素作为划分元-总是取第一个元素作为划分元;-算法的最坏运行时间是O(n 2),平均时间是(l O(n log n );-因此存在一些输入实例,使得算法达到最坏运行时间,如:降序的序列;●随机快排序算法随机快排序算-随机选择一个元素作为划分元;任何个输入的期望时间是-任何一个输入的期望时间是O(n log n );-是一个Las Vegas 算法;●最小截问题定义:给定一个无向图G(V,E),找一个截(V1,V2)使得V1和V间的连边数最小。

2●注:max-flow min-cut 该问题可以用确定性算法(max flow min cut algorithm)在O(n2)时间内完成。

●随机算法随机选条边将两顶点合并除去顶点上的环随机选一条边,将两顶点合一并除去顶点上的环;直到图中只剩下两个顶点;返回剩下两顶点间的连边数;●重复版本重复执行算法k 次,取返回连边数最小数作为解。

例●示例:#cut=21554, 54, 543412312312321, 21, 21, 2, 3●出错概率2⎛k k 重复k 次出错概率为)1()1(21--≤⎪⎪⎭⎫ ⎝--n n e n n ●本算法是一个Monte Carlo型算法第4章(补充)随机算法4.1 概述4.2 时间复杂性度量4.3 一般设计风范4.4 随机取样444.5 串匹配算法4.6 格点逼近问题4.2时间复杂性度量●运行时间的期望和方差(1)实例的运行时间期望()对固定实例x, 设随机算法A 的运行时间是一个[0,+∞)上的随机变量, 定义随机算法A 在实例x 上的运行时 A x ξ间期望为, 也称为随机算法A 在实例x 上的执行时间.(2)算法的运行时间期望][A x E ξ如果对一个规模为n 问题的所有实例是均匀选取的, 则定义各个实例上的平均执行时间为随机算法在该问题上的运行时间期望, 记为T(n)注: 类似地可以定义方差.●随机复杂度类(参见Motwani R. and Raghavan P., Randomized Algorithms .)RP (Randomized Polynomial time), ZPP , PP , BPP etc.第4章(补充)随机算法4.1 概述4.2 时间复杂性度量4.3 一般设计风范4.4 随机取样444.5 串匹配算法4.6 格点逼近问题1.挫败对手(Foiling the Adversary)将不同的算法组成算法群, 根据输入实例的不同随机地或有选择地选取不同的算法, 以使性能达到最佳.2.随机采样(Random Sampling)用“小”样本群的信息, 指导整体的求解.3.随机搜索(Random Search)是一种简单易行的方法, 可以从统计角度分析算法的平均性能, 如果将搜索限制在有解或有较多解的区域, 可以大大提到搜索的成功概率.4.指纹技术(Fingerprinting)利用指纹信息可以大大减少对象识别的作量. 通过随机利用指纹信息可以大大减少对象识别的工作量映射的取指方法, Karp和Rabin得到了一个快速的串匹配随机算法.5.输入随机重组(Input Randomization)对输入实例进行随机重组之后, 可以改进算法的平均性能.6.负载平衡(Load Balancing)在并行与分布计算、网络通讯等问题中, 使用随机选择技在并行与分布计算网络通讯等问题中术可以达到任务的负载平衡和网络通讯的平衡.p y g7.快速混合Markov链(Rapidly Mixing Markov Chain)使用该方法可以解决大空间中的均匀抽样问题.8.孤立和破对称技术(Isolation and Symmetry Breaking)使用该技术可以解决处理的并行性, 避免分布式系统的死锁等问题. 如:图着色算法, 部分独立集问题9.概率存在性证明(Probabilistic Methods and Existence Proofs)如果随机选取的物体具有某种特性的概率大于0, 则具有该特性的物体一定存在.10.消除随机性(Derandomization)许多优秀的确定性算法是由随机算法转换而来的.第4章(补充)随机算法4.1 概述4.2 时间复杂性度量4.3 一般设计风范4.4 随机取样444.5 串匹配算法4.6 格点逼近问题4.4 随机取样●问题定义●随机取样算法●期望运行时间分析问题定义和随机取样算法●问题定义从n个元素的集合中随机选取m个元素的样本,m<n ●随机取样算法p g(,)RandomSampling(n,m){ //从集合{1,2,…,n}中随机选择m个不同的正整数组成的数组A[1..m] for i=1 to n do s[i]=false; //s表示一个整数是否被选择k=0;k0;while k<m do{ r=random(1,n);if not s[r] then{ k++; A[k]=r; s[r]=true; }}}注:般我们可以假设m≤n/2。

注:一般我们可以假设●预备知识:几何分布设是一枚硬币,出现正面的概率是q=1-p c 是枚硬币,出现正面的概率是p ,令q 1p 。

令X 是一个表示直到正面第一次出现时总的抛掷次数的随机变量,则x 满足分布和期望分别为:⎧∑∞=--==⎩⎨=≥==0111)(001]Pr[k k k p kpq X E k k pq k X ,若若●期望运行时间分析设p k 为生成第k 个样本整数的成功概率,k=1~m 。

显然有(k 1)/p k =(n-k+1)/n 用随机变量X k 表示为了选定第k 个整数而生成的整数的个数随机变量数,随机变量Y 表示从n 个整数中选出m 个样本整数而生成的总的整数个数,则E(Y)=E(X )+ E(X )+…+ E(X)12m期望运行时间分析(续)n n n mm k n n k n n k n X E Y E m n n m k k k k k 1111111)()(1111+--+-=+-==∑∑∑∑-+====kn k n n m n k k 1111--=∑∑-==n m n n n m n n n Y E m n kn k k k l (l 2///))2/ln(1(ln ))1ln(1(ln )()1ln(1ln 11≤-+≤+--+≤⇒+≥+≤∑∑== 和所以,T(n)=θ(n)n e n n 69.12ln )12(ln ≈=+=第4章(补充)随机算法4.1 概述4.2 时间复杂性度量4.3 一般设计风范4.4 随机取样444.5 串匹配算法4.6 格点逼近问题4.5 串匹配算法●问题定义●测试串的相等性串算●串匹配算法问题定义●问题:给定两个字符串X=x⋯Y=y⋯X x1,,x n,Y y1,,y m,判断Y是否为X的子串?(即Y是否为X中的一段)O( (n-m+1)m)●蛮力算法:O( (n m1)m)记X(j)=x j x j+1⋯x j+m-1(从X的第j位开始、长度与Y一样的子串),算法从起始位置j=1开始到j=n m+1,对串X(j)算法从起始位置j=n-m+1对串和串Y进行相等性比较。

●确定型算法:●长串的“指纹”测试问题给定两个长字符串的“指纹”x和y,由x和y的指纹判断x和y 是否相等?注:“指纹”是一种特征信息,比原对象容量小得多。

“”串“”一般地,“指纹”不同则两个串一定不同,“指纹”相同时会出现误判。

种“指纹”技术O(l)●一种指纹技术:长度为n的串可以压缩为O(log 2n)令I(x)为x的编码,n是I(x)的二进制表示的长度,则有I(x)<2nI(x)<2。

取I p(x)=(I(x) mod p)作为x的指纹,这里p是一个小于M 的素数,M可根据具体需要进行调整,一般取M=2n2∵0≤I p(x)<p ∴I p(x)的二进制长度不超过log2p由于p<M=2n2,故有log2p≤⎣log2(2n2)⎦+1=O(log2n)。

相关文档
最新文档