算法
文章平均质量分 89
__SAD_DOG__
这个作者很懒,什么都没留下…
展开
-
《算法导论》第六章 -- 堆,堆排序(含习题)
堆 堆,一般是指二叉堆,是指如下的数据结构 将一个数组上的元素从头到尾按照从左向右、从上向下的方式填到一颗二叉树上,就是一个堆。一个最大/小堆表示满足父节点总是大于/小于子节点的堆。堆用于排序的思想 因为堆上的很多操作只需要lgnlgnlgn的时间(包括从一个最大/小堆上取出最大/小值),所以堆可以用于在O(nlgn)O(nlgn)O(nlgn)时间内进行排序。 但是我认为堆最大的用处不在于排序, 而是在于堆维护自己的堆性质的操作基本上只需要lgnlgnlgn的执行时间,当需要对某个数据原创 2021-03-08 23:45:21 · 1084 阅读 · 0 评论 -
《算法导论》习题 6.1
《算法导论》习题 6.16.1-1题目 在高度为h的堆中, 元素个数最多和最少分别为多少解 最少:2h2^{h}2h, 最多2h+1−12^{h+1} - 12h+1−16.1-2题目 证明:n个元素的堆的高度为⌊lgn⌋\lfloor lgn \rfloor⌊lgn⌋解 因为n∈[2⌊lgn⌋,2⌊lgn+1⌋−1]n \in [2^{\lfloor lgn \rfloor}, 2^{\lfloor lgn + 1 \rfloor} - 1]n∈[2⌊lgn⌋,2⌊lgn+1⌋原创 2021-03-07 12:20:27 · 293 阅读 · 0 评论 -
《算法导论》5.4节习题 (有几题做不出来,大佬来帮忙康康)
《算法导论》习题 5.4-1 ~ 5.4-7 5.4 节本身就带星号,这节的题目基本上是概率论的题, 题目都比较简短,我尽量抄一下。有两个算期望的题目我确信自己写出了正确的概率P,但是计算期望的时候级数求和算不出来,后面再看吧,5.4-7和书上特征序列一节相关,这节难度相当大,我暂时完成不了。5.4-1题目 一个屋子里至少有多少人才会使某人和你生日相同的概率至少是 1/2 ?必须要有多少人才能让至少两个人生日为10月1日的概率大于1/2?解 第一小问, 将向屋子里加人其看作概率为 p=1/原创 2021-03-07 01:18:40 · 461 阅读 · 0 评论 -
《算法导论》习题5.3-1 ~ 5.3-7
《算法导论》习题 5.3.1 - 5.3.7 5.3-5 带星号我抄了一下题目, 5.3-6 比较有意思我抄了一下题目, 其他的题可以自己对照书(原书第三版).5.3-1 直接考虑第2次循环前, 第1次循环后第1个位置的元素是原集合1 ~ n中任意一个元素的概率总是 1/n1/n1/n, 所以可以以此为循环不变式的起点而不必使用空集合和0排列。5.3-2 容易证明该算法一定不会产生恒等排列, 因为第一次循环后第一个元素一定是原排列中2 ~ n中的某个元素。现在证明Kelp教授没有实现均匀随机排原创 2021-03-06 12:32:07 · 463 阅读 · 0 评论 -
随机算法思想, 使用循环不变式证明一个O(n)时间的随机排列算法
1. 随机算法1.1 WHY 一个非常显而易见的是事实是: 算法的运行时间常常和输入相关。一个最简单的例子是排序算法, 如果我的输入是已经排好序的算法,那么我就可以不用再排序了。(原始版本的快速排序算法可能不这么认为)。 虽然当我们进行算法分析的时候,常常使用下界来进行分析, 但是有时候知道平均(期望)运行时间是很有必要的。但是当提到期望的时候, 我们不得不对数据的分布做出假设,才有机会分析他的平均情况。但是我们无法知道数据的分布, 或者无法判断我们的输入到底是不是我们猜测的分布。所以,对于不确.原创 2021-03-04 00:47:11 · 232 阅读 · 3 评论 -
算法(二)分治策略,递归分析和主方法
递归与分治策略 递归与分治策略是算法中一类常见的策略或者说思想,很多问题都可以通过递归或者分治的策略进行处理。递归 很难说递归算法起源于哪里(因为就计算机科学来说,使用循环是更为自然的算法),我相信递归思想的出现早于计算机出现很多年,其基本思路是确定一种算法,该算法对于 少数特定规模的输入即递归基, 仅进行常数时间的运算,在其他的输入规模下,该算法可以调用一个输入规模更小的自己,重复该过程直到调用递归基。递归与递推公式 我已不了解数列是否还是高中数学的重点内容(也许它跑到初中去了呢),但是我原创 2020-11-28 22:49:22 · 388 阅读 · 0 评论 -
算法(一):算法以及算法研究
什么是算法 算法很难有一个明确的定义,《算法导论》中第一章描述到:算法是任何良定义的计算过程。这个定义其实相当感性,但也可以理解关于算法定义的模糊性,因为算法本身就是难以定义的。 值得一提的是图灵对算法做出了一个相当严格,但是却同时也模糊的定义,图灵将算法定义为:一切可以使用完备图灵机执行的计算过程,乍一看这是个相当严谨的定义,但是问题是,完备图灵机同样难以定义,但是从可计算理论的角度来讲,图灵对于算法的定义仍然是最严谨的定义之一。 因为图灵还说过,给一个人一张纸一支笔,和一个明确的计算规则,.原创 2020-11-27 22:59:23 · 3271 阅读 · 0 评论