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
【算法导论】
算法导论
——24.3 Dijkstra最短路径算法java实现
介绍迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是典型的算法。Dijkstra算法是很有代表性的算法。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN,CLO
The_sam
·
2020-08-20 11:17
学习笔记
算法
算法导论
算法导论
单源最短路径 Dijkstra
intkey;VertexNode*p;pFNodepf;}Vertex,*pVertex;//图typedefstruct{intvn;int**E;pVertex*V;}Graph,*pGraph;//根据
算法导论
图
万万岁
·
2020-08-20 10:57
算法导论
算法导论
最小生成树MST-KRUSKAL
#include#include//用于边排序和结果集合typedefstruct{intu;intv;intw;}EdgeSortNode,*pEdgeSortNode;//用于不相交森林typedefstructSN{intvi;structSN*p;intrank;}SetNode,*pSetNode;//图节点typedefstruct{charname;pSetNodesnode;}Ve
万万岁
·
2020-08-20 10:56
算法导论
算法导论
第23章 最小生成树 ,Kruskal算法,和Prim算法d
最小生成树问题是给定一个连通无向图(V,E),相应边的权值,要求一个无环子集T⊆E,并且连接了所有的顶点,而且所有边权值相加最小。由于是连通的无环的,所以必然是一棵树。两种常用的方法Kruskal算法和Prim算法都采取的是贪心策略,只是贪心策略有所不同。而且这两个贪心策略都可以用一个通用的方法来描述。就是不停的找安全边加到集合T中,直到集合T成为最小生成树。寻找安全边的方法就是,从一个尊重集合T
Kawisa
·
2020-08-20 10:19
算法导论
算法导论
-第24章 Dijkstra算法
算法导论
用了很多引理,性质来证明Dijstra算法的正确性,这里不说了,也表达不明白,只说我理解的过程。有一个图G(V,E),选定一个源点s,维护一个集合Q=V-s,Q中点有一个
Kawisa
·
2020-08-20 10:18
算法导论
算法导论
| 22.3 深度优先搜索
概念“发现”:指节点第一次被访问“时间戳”:对于每个节点u,有两个时间戳u.d,u.f,分别表示发现节点u和完成对u的邻接链表扫描的时间(即节点u被涂上黑色的时候)。注意:在u.d时刻,节点u被涂上灰色;在u.f时刻,节点u被涂上黑色。那么在[u.d,u.f)这段时间内,节点u是灰色的。“真后代”:在深度优先搜索森林中,节点u的子孙称为其真后代。边的分类:树边(深度优先森林G.π中的边),后向边(
gywenjian
·
2020-08-20 10:49
算法导论
《
算法导论
》笔记 第22章 22.2 广度优先搜索
【笔记】在给定图G=(V,E)和一个特定的源顶点s的情况下,广度优先搜索棵发现从s可达的所有顶点,并计算s到这些可达顶点之间的最短边数。广度优先树,根为s,且包括所有s的可达顶点。树中从s到v的路径对应于图G中从s到v的一条最短路径,即包含最少边数的路径。对有向图无向图都适用。如果u处于从根s到顶点v的路径中,那么u称为v的祖先,v是u的后裔。分析每个顶点至多只进入队列一次,至多只从队列中出来一次
cyendra
·
2020-08-20 09:32
算法导论
《
算法导论
》笔记 第24章 24.3 Dijkstra 算法
【笔记】用二项堆实现优先队列O((V+E)lgV),所有顶点都从源点可达的话,O(ElgV)。constintmaxn=11111;constintmaxm=1111111;structEdgeNode{intto;intw;intnext;};structHeapNode{intd,u;booloperatorrhs.d;}};structDijkstra{EdgeNodeedges[maxm]
cyendra
·
2020-08-20 09:32
算法导论
算法导论
总结
1、插入排序INSERTION_SORT(A)forj=2toA.lengthkey=A[j]i=j-1whilei>0andA[i]>keyA[i+1]=A[i]i=i-1A[i+1]=key循环不变式为:for循环的每次迭代开始时,子数组A[1…j-1]由原来在A[1…j-1]中的元素组成,但以按序排列。初始化:对循环技术变量的初始赋值后、在循环头的第一次测试之前,保持循环不变式。保持:每次迭
xyx_HFUT
·
2020-08-20 09:52
算法导论
《
算法导论
》Dijkstra算法实现
参考《
算法导论
》第24章-单源最短路径的方法:1.设置数组d存储每个节点到源节点的距离,维护一个提取最小d值的优先队列Q,Q初始化时是G的所有节点的集合2.
天才XLM
·
2020-08-20 08:21
算法笔记
算法导论
第22章 深度优先遍历
深度优先遍历的作用主要是对边,点的分类,如拓扑排序,找强连通分量等应用。深度优先搜索的策略是只要有可能就尽量深入。也就是说每发现一个新的点就立马对其搜索,直到与该点所连接的所有点都被搜索完全,则返回了,返回该点的前驱。由于深度优先搜索一般都是被其他算法所用,所以它要提供有效的信息,每个点保存一个d值和f值,d值是刚发现的时间,f值为结束对该点邻接点扫描的时间。比如一个孤立点,发现时间为p,则结束时
Kawisa
·
2020-08-20 08:44
算法导论
算法导论
2学习
第一部分基础知识第1章算法在计算中的作用算法的定义:算法就是一系列的计算步骤,用来将输入数据转换成输出结果。算法可以解决哪些类型的问题?1、生物问题,如DNA基因序列的分析;2、因特网,路由数据传输路径的查找、网页搜索引擎;3、电子商务,银行卡等信息的公共密钥加密技术和数字签名技术;4、制造业和其它商业应用,资源分配与人员高度;……由于计算机的计算时间和存储空间是有限的资源,所以好的算法在保证结果
oMengHen1
·
2020-08-20 07:42
算法导论
之平摊分析(动态表)
平摊分析,amortizedanalysis,对数据结构执行的所有操作的总和时间是油由求平均而得出,用来证明一系列操作中,通过对所有操作求平均代价,即时某一操作具有较大代价,但平均代价还是小的。导论中这个和平均情况分析不同,我自己到没感觉出不同,同样是求平均。Amortized,摊销之意,就是将把总代价平均到一个周期内来承担。平摊分析有什么意义呢?主要为认识数据结构。对数据结构的一系列操作,数据结
fjssharpsword
·
2020-08-20 04:48
Algorithm
算法导论专栏
【算法-动态规划】求数组的最长上升子序列(LIS)的长度
《
算法导论
》上面对于动态规划的描述对于我来说有点晦涩难懂。于是在知乎上面看了一下关于这方面的知识,这个回答貌似还不错。什么是动态规划?动态规划的意义是什么?
QiaoDog
·
2020-08-20 04:42
数据结构和算法的学习
算法导论
22.3深度优先搜索 练习总结
22.3-1画一个3*3的网格,行和列的抬头分别标记为白色、灰色和黑色,对于每个表单元(i,j),请指出对有向图进行深度优先搜索的过程中,是否可能存在一条边,链接一个颜色为i的结点和一个颜色为j的结点。对于每种可能的边,指明该种边的类型。另外,请针对无向图的深度优先搜索再制作一张这样的网格。ANSWER:22.3-2给出深度优先搜索算法在图22-6上的运行过程。假定深度优先搜索算法的第5~7行的f
funggor
·
2020-08-20 03:01
算法导论(第3版)
算法导论
程序24--直接寻址表(Python)
当关键字的全域U比较小时,直接寻址是一种简单而有效的技术。假设某应用要用到一个动态集合,其中每个元素都是取自全域U={0,1,...,m-1}中的一个关键字,这里m不是一个很大的数。另外,假设没有两个元素具有相同的关键字。为表示动态集合,我们用一个数组,或称为直接寻址表,记为T[0...m-1]。其中的每个位置,或称为槽(slot).对应全域U中的一个关键字。槽k指向集合中的一个关键字为k的元素。
夜空霓虹
·
2020-08-20 02:06
算法导论
二维数组最大子矩阵的求和
每个元素都是整数(可能小于0),求其子矩阵元素的最大和问题分析:这个问题来自一维数列最大子序列的求和问题,因此必须对一维数列最大子序列的求和有充分的了解才有讨论基础,不了解的请参考《编程珠玑》第8章或《
算法导论
wangcfbj
·
2020-08-20 01:59
2018-02-19
算法导论
课程笔记(插入,归并,代换,递归树,分治,主方法,快排)
性能就好像是平常的货币一样,我们用它交换安全和性能。Insert—Sort(A,n)伪代码forj0andA[i]>key)doA[i+1]n)θ(j)=θ(n²)因为由上面的公式可知,其为等差数列的累加过程,是算术级数(Arithmeticseries)T(n)Mere—Sortθ(1)1.Ifn=1,done2T(n/2)2.递归排序A:[1-n/2]andA:[n/2-n]θ(n)Merge
klaaay
·
2020-08-20 00:31
算法导论
(四):快排及随机化算法
麻省理工学院公开课:
算法导论
。B站地址,网易公开课也有对应的资源。https://www.bilibili.com/video/av1149902/?
LuLuX
·
2020-08-20 00:57
社群大神语录,太让我过敏(过瘾)了!(不看后悔)
300+部武侠小说阅读史,曾粗读TAOCP,概读游戏编程精粹前7部,略读具体数学、
算法导论
,熟读UNIX3部头,精读《为啥我头秃》。熟悉Windows、Linux、FreeBSD、MacOSX系统
Creator星球
·
2020-08-19 23:27
游戏
java
编程语言
python
大数据
算法导论
:关于时间复杂T(n)的表达式处理
MIT
算法导论
提供了三种方法,不废话了,直接介绍:(公式显示不了,所有就截图了,请包涵~呵呵)1.代换法:猜测->验证例如:T(n)=4*T(n/2)+n(其中T(1)=O(1))假设是时间复杂度是n^
iteye_18480
·
2020-08-19 17:03
算法导论
第二版 习题2.1-4答案
#include#definen5voidmain(){intA[n]={0,1,1,0,1},B[n]={0,0,1,1,0};intC[n+1]={0};for(inti=0;i
1054512666
·
2020-08-19 10:13
算法导论答案
算法导论
(三):分治法、leetcode 50 70 746
麻省理工学院公开课:
算法导论
。B站地址,网易公开课也有对应的资源。https://www.bilibili.com/video/av1149902/?p=3这节课主要讲解分治法解决各种问题的思路。
LuLuX
·
2020-08-19 06:58
“学习笔记”之《
算法导论
》----第一部分----基础知识----第一章到第五章
本人大四上即将结束,于2018年12月18日购《
算法导论
》这本书,慢慢看,第一阶段先主要理解各个章节说的算法都是什么意思,书上的课后习题先不做,用得上什么算法我再详细学习。这是官方课后答案的链接。
Mr.Naruto
·
2020-08-19 03:48
算法导论
[Java聊天室服务器]实战之一 开篇介绍
比如最近在看网易公开课MIT《
算法导论
》,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序员不
jptiancai
·
2020-08-19 02:41
18.游戏服务器
算法导论
第13(十三)章红黑树
红黑树的定义:红黑树是一种较为“平衡的”二叉查找树,其每个结点上增加了一个储存颜色的位置,可以是红也可以是黑色的,并且有父亲结点。基本操作时间为O(lgn).红黑树的性质:1)每个结点或是红的,或是黑的。2)根结点是黑的。3)每个叶结点(NIL)是黑的。4)若一个结点是红的,则它的两个儿子都是黑的。5)对每个结点,从该结点到其子孙结点的所有路径上的黑色结点数目相同。黑高度:从某个结点x出发(不包括
Flammable_ice
·
2020-08-19 00:32
《算法导论》
算法导论
红黑树
p=30组内培训,讲红黑树,找出
算法导论
,啃了一个周末,其中插入结点很简单,删除结点有点复杂,但跟着
算法导论
上一步一步来没有什么问题。不想备份blog的图片,所以没有把图片上穿。可直接察看ppt。
ylqmf
·
2020-08-18 23:44
算法
algorithm
算法
测试
blog
c
算法导论
10.4-3 输出二叉树的每个结点的关键字
问题:给定一个n个结点的二叉树,写出一个O(n)时间的非递归过程,将该树的每个结点的关键字输出。可以使用一个栈作为辅助数据结构。思路:利用栈依次将各个结点压入栈中,输出其值后再弹出。代码:#include#includeusingnamespacestd;structNode{intkey;Node*left;Node*right;Node(intx):key(x),left(NULL),righ
臻舍
·
2020-08-18 23:08
算法导论
算法导论
之KMP
#include#includeusingnamespacestd;voidmakeNext(conststringpattern,int*next){intk,q;intm=pattern.length();next[0]=0;for(k=0,q=1;q0&&pattern[q]!=pattern[k])k=next[k-1];if(pattern[q]==pattern[k])k++;next
ThomasDX
·
2020-08-18 23:32
hash_map的简洁实现
数据结构和
算法导论
中介绍了大量的hash函
weixin_33794672
·
2020-08-18 22:09
算法:模式匹配之KMP算法
前言:昨天看到《
算法导论
》里的第32章:字符串匹配,说到一个关于字符串匹配的很好的算法——KMP。关于KMP的内存含意以及KMP的来源,不是本文讲述的范畴,请感兴趣的读者自行查阅相关资料。
weixin_30662109
·
2020-08-18 22:38
算法导论
的python实现之插入排序
在排序中,可能大家最先接触也最容易想到的应该是冒泡排序或者选择排序,然而在
算法导论
一书中却是从插入排序开始讨论,其实现思路类似于整理纸牌的过程。
我是一只熊猫
·
2020-08-18 22:43
算法导论python
《
算法导论
》第三版第13章 红黑树 练习&思考题 个人答案
13.1红黑树的性质13.1-1解:完全二叉搜索树:黑高为2的红黑树:黑高为3的红黑树:黑高为4的红黑树:13.1-2解:如果标红,不满足性质4,因为35是36的父结点,也是红色;如果标黑,不满足性质5,该条路径黑高超过其他路径。13.1-3解:可以验证所得到的树仍然满足5个条件,所以是红黑树。13.1-4解:(1)如果“吸收”前两个子结点都已经是黑色了,度为2;(2)如果“吸收”前两个子结点一个
张劲声
·
2020-08-18 22:00
算法
通过深度优先算法进行拓扑排序(
算法导论
)
通过深度优先算法进行拓扑排序(Java)packagegraph;//拓扑排序用深度优先算法实现importjava.io.IOException;importjava.util.Scanner;importjava.util.Stack;publicclassTopological{privateclassENode{intivex;//该边所指向的顶点的位置ENodenextEdge;//指向
shitiezhu
·
2020-08-18 22:32
算法导论
leetcode题解——53. Maximum Subarray
解法一(分治策略)思路:我首先想到的是
算法导论
分治策略一章给出的解法:假设我们要寻找数组A[left,right]中的最大子数组,分治策略要求我们把问题分解两个规模相当的子数组,也就是说要找的子数组的中心
GeneralSandman
·
2020-08-18 21:53
leetcode
算法导论
红黑树(附带黑高度)
#include#include#defineRED1#defineBLACK0typedefstructRBTreeNode{intkey;intcolor;RBTreeNode*p;RBTreeNode*left;RBTreeNode*right;}RBT,*pRBT;pRBTnil=(pRBT)malloc(sizeof(RBT));intbh=0;voidinitNil(){nil->ke
万万岁
·
2020-08-18 21:28
算法导论
《
算法导论
》红黑树详解(二):Java实现Demo
《
算法导论
》红黑树详解(一):概念《
算法导论
》红黑树详解(二):Java实现Demo使用Java简单地实现红黑树,代码如下:/***红黑树实现demo*/publicclassRedBlackTree>
轻轻的仰望
·
2020-08-18 20:16
数据结构与算法
Java
计算机经典图书样章免费下载【持续更新中……】
c0jjgz3x7i深入理解计算机系统(英文版·第2版)暂无C++程序设计语言(特别版)十周年中文纪念版http://dl.dbank.com/c0n29so6tp#Java编程思想(原书第4版)暂无
算法导论
hzbooks
·
2020-08-18 20:26
(2-4)计算机科学丛书
数据结构
语言
linux内核
项目管理
算法
软件测试
最长公共子序列 (LCS,longest common subsequence problem) 动态规划
/*函数:最长公共子序列(LCS,longestcommonsubsequenceproblem)动态规划解决该问题.算法见
算法导论
原书第三版殷建平P224一个给定的子序列就是将给定的一个或多个元素去掉之后的结果
Jason__Zhou
·
2020-08-18 19:27
算法
根据
算法导论
实现KMP算法(python 3)
在我看来阮一峰的字符串匹配的KMP算法对于入门挺好,但是对于KMP的实现很不友好,被绕进去了很多次.始终觉得里面的方法更加简洁一点,虽然需要自己花点时间演算一下才能理解.#计算next数组defcompute_prefix(p):m=len(p)res=[-1for_inrange(m)]#置-1作为没有找到匹配前缀的标志res[0]=-1k=-1forqinrange(1,m):whilek>-
chrispink_yang
·
2020-08-18 19:14
python学习笔记
《
算法导论
》红黑树详解(一):概念
学习红黑树或者二叉查找树,推荐大家看《
算法导论
》。
轻轻的仰望
·
2020-08-18 19:09
数据结构与算法
红黑树
算法
动态规划与贪婪算法学习笔记
已
算法导论
图示为例两条生产线上,产品经过各个装配工作位直到加工完成所耗费的时间都标记出来了,同一生产线的装配工作位转移不花费时间。试图求出最快流程。动态规划是利用最优子结构自底向上求解。
weixin_30725315
·
2020-08-18 17:13
算法导论
思考题 15-8(基于接缝裁剪的图像压缩)
#include#include#include#defineM8#defineN10intA[M][N]={{1,2,3,4,5,6,7,8,9,10},{2,3,4,5,6,7,8,9,10,11},{8,4,6,2,7,2,7,8,12,15},{10,23,5,7,9,10,13,9,18,20},{4,8,1,9,23,6,8,11,17,30},{9,5,1,7,5,7,5,19,6,
万万岁
·
2020-08-18 15:01
算法导论
算法导论
学习笔记1
关于算法?算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。(能将算法写成程序,并让计算机准确无误地执行)。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。?算法决定互联网(互联网上的内容和数据是很容易被别人爬取复制的,从互联网上复制窃取现成的内容是比较容易的,但是一些内核性的东西(比如算法)是别人无法
cuibi3329
·
2020-08-18 11:36
算法导论
学习笔记2
使用穷丼两两组合的方法转化问题分而治之的思路伪代码算法分析《
算法导论
》第42页矩阵乘法的Strassen算法?普通矩阵乘法算法复杂度为n立方级别?
cuibi3329
·
2020-08-18 11:36
算法导论
(Problems 6-2) d-ary heap(多叉树实现堆)
#include#include#include#include#include#include#include#include#includeusingnamespacestd;typedefstruct{intd_dimential;inta_size;inth_size;int*arr;}heap;voidTune(heap&h,intstart){inti=start;intindex=i
AndrewThompson
·
2020-08-18 10:04
算法导论(算法实现与习题解答)
算法导论
第22章 22.2-8
如果仅仅是题目当中要求的求解树的直径,一次BFS就行了#include#includeusingnamespacestd;intN;//邻接表存储树,N为树的节点数,将树仍然存储为无向图//假设树的根节点的序号为0typedefstructTnode{intindex;structTnode*next;}Tnode;intmain(){scanf("%d",&N);inti,j;bool*visi
AndrewThompson
·
2020-08-18 10:03
算法导论(算法实现与习题解答)
算法导论
— 思考题15-3 双调欧几里得旅行商问题
(双调欧几里得旅行商问题)在欧几里得旅行商问题中,给定平面上nnn个点作为输入,希望求出连接所有nnn个点的最短巡游路线。下图(a)给出了一个7点问题的解。此问题是NP难问题,因此大家相信它并不存在多项式时间的求解算法(参见第34章)。J.L.Bentley建议将问题简化,限制巡游路线必须为双调巡游(bitonictours),即从最左边的点开始,严格向右前进,直至最右边的点,然后调头严格向左前进
yangtzhou
·
2020-08-18 10:07
算法导论
【算法学习】双调欧几里得旅行商问题(动态规划)
《
算法导论
(第二版)》思考题15-1和北京大学OJ2677都出现了这个题目。旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程。
江南烟雨
·
2020-08-18 10:48
数据结构与算法
算法导论
(第9章-中位数和顺序统计学)最大值和最小值
n个数中同时找出最大值跟最小值:例子:n=75123648方法一:独立地找出最大值和最小值,各用n-1次比较,共有2n-2次比较。方法二:成对地处理元素,先将一对输入元素相互比较,然后把较小者与当前最小值比较,把较大者与当前最大值比较,因此每两个元素需要比较3次。(n为奇数时,将最大值和最小值都设为第一个元素的值,然后成对地处理余下的元素,总共做了3*[n/2]次比较,[]为下界。n为偶数时,就对
o-pqy-o
·
2020-08-18 09:33
算法导论
上一页
15
16
17
18
19
20
21
22
下一页
按字母分类:
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
其他