E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【算法导论】
算法导论
第三十(30)章多项式与快速傅里叶变换
由于在第三十一章数论算法中遇到几个关于超大数乘法的问题促使我需要学这章,具体请看第三十一章练习31.1-8,31.1-12与31.1-13.基本概念:大整数的加减乘除系数形式表示的多项式的快速乘法1.两个n次多项式a与b分别计算在2n次单位复数根下的对应多项式值。计算过程使用的是FFT。所以时间为O(nlgn)2.随后进行点值乘法,根据c(w0)=a(w0)*b(w0)在n次单位复数根下的对应的多
Flammable_ice
·
2020-08-23 08:59
《算法导论》
《
算法导论
》习题解答 Chapter 22.1-5(求平方图)
一、邻接矩阵实现思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可;伪代码:fori=1tonforj=1tonfork=1tonresult[i][j]+=matrix[i][k]*matrix[k][j];算法复杂度两个n维数组相乘,因此复杂度为O(V^3),当然可以通过Strassen算法稍加改进.扩展:这种方法的作用是比如求u到v路径长度为k的路径数目,只需要
weixin_30300225
·
2020-08-23 07:51
《
算法导论
》第四章-思考题(参考答案)
算法导论
(第三版)参考答案:思考题4.1,思考题4.2,思考题4.3,思考题4.4,思考题4.5,思考题4.6Problem4.1(Recurrenceexamples)GiveasymptoticupperandlowerboundforT
vikYao
·
2020-08-23 07:51
算法导论(第三版)
“学习笔记”之《
算法导论
》----第六部分----图算法----第二十六章----最大流
本人大四即将结束,于2018年12月18日购《
算法导论
》这本书,慢慢看,第一阶段先主要理解各个章节说的算法都是什么意思,书上的课后习题先不做,用得上什么算法我再详细学习。这是官方课后答案的链接。
Mr.Naruto
·
2020-08-23 06:22
算法导论
算法导论
:第15章 动态规划_1_2钢条切割_动态规划的两种解法
/*钢条切割:动态规划与分治的相同点:组合子问题求解原问题不同点:分治的子问题不重叠,做了重复工作,动态规划保存解到表中动态规划的特点:1最优子结构:问题的最优解由相关子问题的最优解组合而成,子问题可以独立求解动态规划的实现方式:1带备忘的自顶向下,2自底向上1带备忘的自顶向下:递归中保存子问题的解,需要子问题的解时,首先检查是否已经保存过此解,如果是直接返回保存的值2自底向上:定义子问题的规模,
天地一扁舟
·
2020-08-23 06:25
算法导论
算法导论
动态规划
钢条分割
贪心,深度优先(9)
就如《
算法导论
》里所说的:“人要活在当下”“看清楚眼前”……贪心算法正是“活在当下,看清楚眼前”的办法。
REXCPL
·
2020-08-23 06:40
C++
贪心
深度优先搜索
数模算法-图论算法
关于此类图论算法,可参考IntroductiontoAlgorithms–
算法导论
,关于图算法的第22章-第26章。
Dompink
·
2020-08-23 06:09
算法
多项式乘法 (快速傅里叶变换)
算法导论
里基本看懂了傅里叶变换的整个运行流程。后面剩下的就是如何规划设计程序,使得程序漂亮又高效,暂时没时间,先做个记录,后面慢慢实现。
8rfuz
·
2020-08-23 06:21
随记
算法导论
-单源最短路径-Dijkstra算法的实现
publicclassDijkstra{staticintM=10000;publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[][]weight1={{0,3,2000,7,M},{3,0,4,2,M},{M,4,0,5,4},{7,2,5,0,6},{M,M,4,6,0}};//有向图的矩阵表示,数值表示权重i
JKhere
·
2020-08-23 06:28
算法导论
&&
ACM
算法导论
26(最大流)
26.1流网络26.2Ford-Fulkerson方法Edmonds-Karp算法#include#includeusingnamespacestd;#definen20intf[n][n],cf[n][n],pred[n];boolvisited[n];typedefstruct{intVNum,ENum;intw[n][n];}Graph;voidcreate_graph(Graph&G){i
hz5034
·
2020-08-23 05:50
算法导论
算法导论
第三版 22.3 深度优先搜索 课后题答案全解析
22.3深度优先搜索:1.问有向图和无向图可能存在的三种颜色的点到点之间的边。这个问题比较简单,直接上传原版答案,但是要注意,有向图中存在黑色点到其他点的边,虽然黑色点是已经搜索结束的,但是这样的边始终存在。有向图:无向图:2.答案如下:注意其中数字没有重复的,无论如何time值都会+1。3.给出括号结构,题目中要求的是22-4即下图:因此括号结构应该为(((())))(()),作者认为参考答案解
谦恭
·
2020-08-23 05:39
algorithms
算法导论
22.2广度优先搜索 练习总结
22.2-1请计算出在有向图22-2(a)上运行广度优先搜索算法后的d值和π值,这里假定结点3为算法所用的源结点。ANSWER:22.2-2请计算出在图22-3所示无向图上运行广度优先搜索算法后的d值和π值。这里假定结点u为算法所用的源结点。ANSWER:22.2-3证明:使用单个位来存放每个结点的颜色即可。这个论点可以通过证明将算法第18行的伪代码删除后,BFS过程生成的结果不变来得到。ANSW
funggor
·
2020-08-23 05:47
算法导论(第3版)
算法导论
22章基本的图算法 思考题总结
22-1(以广度优先搜索来对图的边进行分类)深度优先搜索将图中的边分类为树边、后向边、前向边和横向边。广度优先搜索也可以用来进行这种分类。具体来说,广度优先搜索将从源结点可以到达的边划分为同样的4种类型。a.证明在对无向图进行的广度优先搜索中,下面的性质成立:1.不存在后向边,也不存在前向边。2.对于每条树边(u,v),我们有v.d=u.d+1。3.对于每条横向边(u,v),我么有v.d=u.d或
funggor
·
2020-08-23 05:14
算法导论(第3版)
线性规划及其解法
参考《
算法导论
》26章29章线性规划研究线性规划定义及其单纯性法(多项式时间方法)29.1标准型和松弛型研究线性规划的两种表现形式,标准型和松弛型以及其
LeetCoder
·
2020-08-23 05:44
算法
算法导论
书籍学习
第17章平摊分析17.1聚集分析这里的确定一个n个操作序列的总代价的上界T(n),也许某一步操作代价很大,但是平均代价很小的。该分析会被用在分析单源最短路径中的Dijkstra算法中,其朴素版本算法复杂度为O(v2+E),其中的E就是用聚集分析分析出来的。两个例子:第一个例子(考虑某个出栈k个元素的操作)第二个例子一个二进制加法器的操作我的直观感觉就是针对一个数据结构的操作分布在n步中,也许每一步
LeetCoder
·
2020-08-23 05:44
算法
算法导论
学习《视频》
很明显,啃
算法导论
是我必须要做的事情,参考《
算法导论
》b站
算法导论
分为两个部分,第一部分为算法分析,第二部分为算法设计。算法分析关注性能,也就是时间复杂度。
LeetCoder
·
2020-08-23 05:43
算法
算法导论
(第三版)-复习15动态规划
15动态规划1课后习题15.1-1数学归纳法证明15.1-2总长6,(i=4,p=8),(i=3,p=5)15.1-3rn=max(pi-c+rn−i),i=1..n15.1-4纪录每次切割i15.1-5顶点:0..n,边:2*(n-2+1)2课后习题15.2-1m[i,k]+m[k+1,j]+pi−1pkpj((A1A2)((A3A4)(A5A6)))…详见附件15.2-2F(A,s,i,j)i
ZoeyyeoZ
·
2020-08-23 05:00
算法
算法导论
(第三版)-复习16贪心算法
SchedulingTask[t]纪录开始时间为t的任务链表f[t]纪录t-n时间内最大value值,初始均为0fori=n-1to0do{t=Task[i].head;while(t){f[i]=max{f[i],f[t.endtime]+t.value};t=t->next;}f[i]=max{f[i],f[i+1]};}Fractionalknapsack根据性价比v/w排序证明分数背包问题
ZoeyyeoZ
·
2020-08-23 05:00
算法
算法导论
(第三版)-复习- 第六部分图论思考题 22 基本的图算法
ArticulationVertex/BridgeMatchingUSTC-算法基础课-2013-第二次习题课22基本的图算法
算法导论
22.1图的表示练习总结
算法导论
22.2广度优先搜索练习总结
算法导论
ZoeyyeoZ
·
2020-08-23 04:43
算法
图论
算法导论
(第三版)-复习- 第六部分图论 22-26[转]
22习题22.1-5有向图G(V,E)的平方图。链表表示时,对每结点u的Adj[u]中所有v加入队列,后边出队边将Adj[v]加入Adj[u]中。矩阵表示时,若w[i,j]、w[j,k]同时为1则将w[i,k]置1.习题22.1-6O(V)的时间寻找通用汇点。汇点的特征是邻接矩阵的第j列除[j,j]外所有元素为1.可将每行调整[j,j]后作为一个整数,所有整数与运算,为1的位是汇点。习题22.1-
ZoeyyeoZ
·
2020-08-23 04:43
算法
图论
桶排序的单链表实现及其变种
《
算法导论
》中桶排序问题的单链表实现《
算法导论
》CLRS第八章线性时间排序8.4桶排序桶排序的思想就是把区间[0,1)划分成n个相同大小的子区间,每一个区间称为桶(bucket)。
大白技术控
·
2020-08-23 04:01
C/C++
《
算法导论
》读书笔记之第15章 动态规划—矩阵链乘法
前言:今天接着学习动态规划算法,学习如何用动态规划来分析解决矩阵链乘问题。首先回顾一下矩阵乘法运算法,并给出C++语言实现过程。然后采用动态规划算法分析矩阵链乘问题并给出C语言实现过程。1、矩阵乘法从定义可以看出:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C。在计算机中,一个矩阵说穿了就是一个二维数组。一个m行r列的矩阵可
weixin_34220179
·
2020-08-23 03:21
Java实现
算法导论
中最大公约数欧几里得算法
最大公约数的欧几里得算法,代码如下:packagecn.ansj;publicclassGCD{publicstaticvoidmain(Stringargs[]){GCDg=newGCD();//d=gcd(a,b)=gcd(b,amodb)intigcd=g.getGcd(42823,6409);System.out.println("IteratorAlgorithmgetgcd:"+igc
fjssharpsword
·
2020-08-23 01:24
Algorithm
Java
算法导论专栏
算法导论
CLRS 17.3-5 解答
按照原有方式定义势函数,记为P,根据公式17.4sum(ci)=sum(^ci)+P(D0)-P(Di)=2n+b-P(Di)=P(D0)没有任何关系转载于:https://www.cnblogs.com/ellusak/archive/2012/07/25/2608059.html
weixin_30918633
·
2020-08-22 23:56
算法导论
:线性时间排序
线性时间排序对于比较排序来说,在排序的最终结果中,各元素的次序依赖于它们之间的比较。我们可以看到下图中的比较排序算法,在最坏情况下情况下,时间复杂度至少O(nlgn)。线性时间排序从图中我们可以较为清楚的看到各算法的时间复杂度,下面将证明对包含n个元素的输入序列来说,在最坏情况下,时间复杂度至少都是O(nlgn)。决策树比较排序可以被抽象为一颗决策树,那什么是决策树呢?比如上图所示,现在要出去相亲
Bowiee
·
2020-08-22 23:39
算法导论
第三版 17.3-6习题答案
17.3-6答案:如10.1-6方法所示:(10.1-6答案)设Ci为第i个操作的代价(假定每个操作的代价为1),每次操作的势能D(i):定义为s1栈中的元素个数*2。那么有:
VS_mans
·
2020-08-22 22:52
算法导论习题答案
算法导论
之第十七章-平摊分析
平摊代价大意是指把总执行代价平摊到操作次数,因为虽然出现某些操作是高代价的,但是其他操作为代价较低时,平摊代价就较低了。习题:答:易得:当n=2k时,平摊代价最大。O(n)=1+2+1+4+1+1+1+8…=(1+2+4+…+2k)+(2k-k-1)=3*2k-k-2;n=2k;所以O(n)/n=3;记账方式就是每次操作都给固定金额,如果金额有的多,就存起来,如果某次操作金额不够,就是用存款,只要
孤竹彧
·
2020-08-22 22:49
算法
笔记
算法导论
练习题 17.2-3
按照提示,维护一个指针一直指向最高为的1只有i=2k时,increament才会进一位,其中k>=1andk<=lgn假设进行了m次increament操作后,进行reset操作则increament需要O(m)时间,reset需要1+2+3+...+lgm=O(lgm)时间所以设ki次increament操作后,进行reset操作其中k1+k2+k3+...=n则需要O(k1)+O(lgk1)+
万万岁
·
2020-08-22 22:21
算法导论
算法导论
瞎抄一点-散列表HashTable的Recap
前言:任何一个应用都要用到至少一种数据结构比如说我们的程序用到数据库,底层多半是优化后的b-tree.我们做一个最简单的Android程序,甚至不用到数据库,比方说用到SharedPreferences,那就是xml表单。甚至我们自己发明一个表单也是可以的,只要写好对应的解析器和编码器,然后给文件取一个没被占用的后缀名即可。这样的做法用到文件系统,文件系统也有底层的数据结构,可以说VFS也可以具体
Wallace_QIAN
·
2020-08-22 21:26
算法导论
习题解-第17章摊还分析
总结记账法相当于每月领取一定的零花钱,用来支付实际费用,只要在任何时候余额不为负。那么总花费一定不超过总的零花钱。必须条件,同时也是缺点:任何时候余额不为负。势能法条件比记账法宽松。对于数据结构的每个状态,定义一个势能P(i),第i步操作的摊还代价记为A[i]=c[i]+P(i)-P(i-1),只要P(n)>=P(0),摊还代价就不会超过实际代价。即用前面积累起来的势能支付后面代价较大的操作。习题
groovy2007
·
2020-08-22 21:25
算法
《
算法导论
》笔记 第17章 17.2 记账方法
【笔记】记账方法:对不同的操作赋予不同的费用,某些操作的费用比他们的实际代价或多或少。对一个操作的收费的数量称为平摊代价。当平摊代价超过实际代价时,两者的差值被当做存款,并赋予数据结构中一些特定对象。存款可以在以后用于补偿那些平摊代价低于其实际代价的操作。总存款等于总的平摊代价和总的实际代价之差,始终是非负的。【练习】17.2-1对一个大小始终不超过k的栈上执行一系列的栈操作。在每个k操作后,复制
cyendra
·
2020-08-22 21:43
算法导论
插入排序及其JAVA实现
插入排序作为
算法导论
这门课的第一个算法,我用JAVA实现起来很难,那天为了数组下标这个事,竟然折腾了四五个小时,可想而知我的基础是多么差了。插入排序,对于少量元素的排序,它是一个有效的算法。
Oliver_LJF
·
2020-08-22 21:48
算法导论
归并排序相关知识及
算法导论
第三版2.3-7实现
2.3-7描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素。分析:首先将S进行排序,然后再通过查找算法进行查找。插入排序算法复杂度最差n^2,归并排序最差为nlgn,堆排序为最差为nlgn,快速排序最差为n^2,这里我们直接使用归并排序。所以实现归并排序是第一步。第二步为查找算法,且复杂度不低于nlgn的。首先想到每个数减去
Oliver_LJF
·
2020-08-22 21:48
算法导论
字节大佬整理面试算法真题,Github上已收获近60K+star!力压LeetCode只为面试
文档的作者最先提出「刷题要掌握模板和套路」的观点,刷题就是应对面试拿offer,再别整什么《
算法导论
》这种花里胡哨的了。
架构师联盟盟主
·
2020-08-22 20:16
Java
架构
面试
算法
数据结构
java
编程语言
面试
《
算法导论
》笔记 第17章 17.3 势能方法
【笔记】势能方法:已预付的工作表示成一种势能或势,他在需要时可以释放出来,以支付后面的操作。势函数Φ将每个数据结构Di映射为一个实数Φ(Di),即与数据结构Di相联系的势。第i个操作的平摊代价c'i=ci+Φ(D_i)-Φ(D_{i-1})n个操作总的平摊代价为∑c'i=∑ci+Φ(Dn)-Φ(D0)如果定义一个势函数使得Φ(Dn)>=Φ(D0),则总的平摊代价∑c'i就是总的实际代价∑ci的一个
cyendra
·
2020-08-22 20:05
算法导论
算法导论
第4章strassen算法JAVA实现
今天看了strassen算法,用java实现了一下。另外题目4.2-3,如何修改Strassen算法,使之适应矩阵规模n不是2的幂的情况?答:添加额外的行或列使之成为2的幂的方阵,添加的行或列均为0即可。文章中提到在分解矩阵时使用复杂度为θ(1)的下标运算,本人为了方便,是采用拷贝赋值的方式进行的矩阵分解。packageanswers.chapter04;importjava.util.Array
夏商周
·
2020-08-22 20:56
算法导论
MIT
算法导论
四 快速排序
分析快速排序快速排序是基于分治思想(Divide-and-conquer)的一种原地排序(Inplace),其效率依赖于输入数据的排序状况。快速排序中的分治法思想分解问题:原数组基于PivotX分成两部分,数组在X左侧的数据都小于X,在X右侧的数据都大于X递归的对两部分数组进行处理最关键的就是第一步:分化(Partition)的步骤,这是该算法处理问题的核心partition(A,p,q)xA[j
Alex90
·
2020-08-22 18:56
个人知识地图
2、python《廖雪峰python》二、linux:《APUE》《UNE》v1、v2《CSAPP》《linux内核设计与实现》、《鸟哥的linux私房菜》三、算法和数据结构《数据结构与算法分析》、《
算法导论
Gonewithmyself
·
2020-08-22 17:47
速成算法笔记,Github上已收获近60K+star!力压LeetCode只为面试
吃透算法套路——只为面试》GitHub连续霸榜首页数周,**star即将突破60k,**受欢迎程度可见一斑:文档的作者最先提出「刷题要掌握模板和套路」的观点,刷题就是应对面试拿offer,再别整什么《
算法导论
欧阳丰
·
2020-08-22 17:09
程序员
算法
数据结构
队列
链表
java
MIT
算法导论
一 简介
本系列文章根据MIT公开课程:
算法导论
,并结合《
算法导论
》进行整理。Analysisofalgorithm算法分析关于计算机程序在效率和资源利用方面的理论研究首先提出几个问题?有比效率更重要的吗?
Alex90
·
2020-08-22 17:52
笔试算法稳了,GitHub 50k Star《labuladong的算法小抄》
GitHubTrending首页,用了两个月Star数便破50k,受欢迎程度由此可见一斑:仓库作者labuladong最先提出「刷题要掌握模板和套路」的观点,刷题就是应对面试拿offer,再别整什么《
算法导论
Sqdmn
·
2020-08-22 16:01
程序员
算法
github
git
强化学习
java
齐姐漫画:排序算法(一)
插入排序借用《
算法导论
》里的例子,就是我们打牌的时候,每新拿一张牌都会把它按顺序插入,这,其实就是插入排序。齐姐声明:虽然我们用打牌的例子,但是可不能学胡适先生啊。对于数组来说怎么做呢?
小齐本齐
·
2020-08-22 15:17
算法-数据结构
算法
排序
算法复杂度
leetcode
“用最小堆将k个已排序链表合并为一个排序链表”(
算法导论
练习6.5-9)
问题:请给出一个时间为O(nlgk),用来将k个已排序链表合并为一个排序链表的算法。此处的n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并)编程思路:假设k个链表都是非降序排列的。(1)取k个元素建立最小堆,这k个元素分别是k个链表的第一个元素。建堆的时间复杂度O(k)。(2)堆顶元素就是k个链表中最小的那个元素,取出它。时间复杂度O(1)。(3)若堆顶元素所在链表不为空,则取下一个
zhengzhon
·
2020-08-22 15:11
一些有趣的算法
算法导论
第六章6.5优先队列课后答案。
6.5-1试说明HEAP-EXTRACT-MAX在堆A={15,13,9,5,12,8,7,4,0,6,2,1}上的操作过程。HEAP-EXTRACT-MAX(A)if(A.heap-sizeA[A.heap-size]HEAP-INCREASE-KEY(A,A.heap-size,key)//在key>A[A.heap-size]前提条件满足的情况下,增加A[A.heap-size]值到key实
Flammable_ice
·
2020-08-22 15:01
《算法导论》
初见数据结构与算法
该文章所参考的内容绝大部分来自《算法图解》,少部分来自《
算法导论
》,因此你也可以认为这是《算法图解》的读书笔记。
Thinkingear
·
2020-08-22 13:11
数据结构与算法
初学者
读书笔记
DFT和FFT详解(
算法导论
学习笔记)
代码均为做严格测试,仅供参考分治法基本原理将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题。然后再合并这些子问题的解来建立原问题的解。递归求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治法在分层递归时都有三个步骤:分解原问题为若干子问题,这些子问题是原问题规模较小的实例。解决这些子问题,递归的求解各个子问题。然而若子问题的规模足够小。则直接求解。合并这些子问题的
say_c_box
·
2020-08-22 13:32
算法
FFT
算法导论
fft
算法
分治算法
O(N lgK) 时间内合并K个有序链表
这题也是
算法导论
的作业题。这题的思路如下:1)在每一个链表中取出第一个值,然后把它们放在一个大小为K的数组里,然后把这个数组当成heap,然后把该堆建成最小堆。
风萧萧兮易
·
2020-08-22 12:29
数据结构
【UVA11997】K Smallest Sums 优先队列的多路归并问题
背景给你个有序列表(假设非降序),将其合并为一个列表(这为《
算法导论
》上堆部分一道例题)一种策略是建立一个大小为的小根堆,每个序列第一个元素入堆,标记每个元素所属队列.依次取出,取出后若对应序列还有元素
Hardict
·
2020-08-22 12:21
数据结构-优先队列
骚搞
《
算法导论
》学习分享——摊还分析
17.摊还分析在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价。这样,我们就可以说明一个操作的平均代价是很低的,即使序列中某个单一操作的代价很高。摊还分析不同于平均情况分析,它并不涉及概率,它可以保证最坏情况下每个操作的平均性能。本章介绍三种摊还分析方法:聚合分析核算法势能法首先我们先看两个小问题栈操作对传统的栈操作MULTIPOP(S,k)扩展,伪代码如下
MaoMao
·
2020-08-22 10:27
算法导论
算法
哈希表
二叉堆、堆排序、优先队列、topK问题详解及js实现
说明本文涉及的堆,下标都从0开始,本文算法部分严格按照《
算法导论
》并参照了维基百科1.满二叉树深度为k的二叉树为满二叉树的充要条件是节点数为$$2^{k}-1$$图1.12.完全二叉树满二叉树也是一种完全二叉树图
_ivenj
·
2020-08-22 10:04
算法
二叉堆
优先队列
堆排序
node.js
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他