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
【算法导论】
算法导论
中的最小生成树(一)
写在前面借着对生成树技术的好奇,不知是多少次再次翻开
算法导论
这本书,探寻下最小生成树理论和生成树技术之间的蛛丝马迹,可惜的是没有什么联系。
方法的角落
·
2020-09-12 07:25
算法
Poj1469_匈牙利算法_最大二分匹配
之前在
算法导论
中学习网络流,明白了网络流中的残留网络,增光路和割,但是去模拟书上的伪代码感觉很是费力。就打算从最基本的匈牙利算法做起。
mengxiaozuo
·
2020-09-12 07:54
图论算法
二分图最大匹配和网络最大流的转换
证明过程见
算法导论
。
include-LSS
·
2020-09-12 07:01
网络流
【
算法导论
】最大二分匹配
最大二分匹配问题在现实生活中比较普遍,常常出现在任务分配上。例如,有5个员工,4个不同的任务,而不同员工能够完成不同或相同的任务。也就是说,有的员工只会做这个任务,有的员工会做那个任务,有的员工会做一些任务。图解如下:左边代表员工,右边代表任务,连线代表有能力完成。我们的问题是合理安排员工,尽可能地完成最多的任务数。上图中阴影部分为一种最好的分配方式。前一篇文章中,我们介绍了最大流问题,在这里我们
nineheaded_bird
·
2020-09-12 07:21
C/C++
算法
算法之道
流量
员工
网络
分配
poj 2195 带权重的二分图最大匹配问题
粘的别人的模板,过了,心里很不爽,有空一定要好好读读《
算法导论
》的这个章节。
iteye_3619
·
2020-09-12 06:18
难以捉摸的动态规划
自我阅读《
算法导论
》已久,我对书上给出的解决特定问题所用到的算法并无太多不明朗之处,而且在遇到相似的问题时,可以很快意识到自己熟知的某个算法能够高效的解决这个问题。
iteye_16843
·
2020-09-12 06:46
难以捉摸的动态规划
世界上最漂亮的排序算法!
i+1>=j)return;intk=(j-i+1)/3;stooge_sort(arr,i,j-k);stooge_sort(arr,i+k,j);stooge_sort(arr,i,j-k);}《
算法导论
架构师之路_
·
2020-09-12 05:06
算法导论
程序2--归并排序(Python)
分治法:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题。然后再合并这些子问题新的解来建立原问题的解。归并排序:分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列。解决:使用归并排序递归地排序两个子序列。合并:合并两个已排序的子序列以产生已排序的答案。过程merge需要O(n)的时间,其中n=r-p+1是待合并的元素的总数。工作方式如下:玩扑克牌的例子。假设桌上有
夜空霓虹
·
2020-09-12 04:42
算法导论
算法导论
:分治法,python实现合并排序MERGE-SORT
1.简单合并排序法实现思想:两堆已排好的牌,牌面朝下,首先掀开最上面的两张,比较大小取出较小的牌,然后再掀开取出较小牌的那一堆最上面的牌和另一堆已面朝上的牌比较大小,取出较小值,依次类推......"""合并两个已经排好的子列表"""ListB=[2,4,5,7,1,2,3,6]ListB_L=ListB[0:int((len(ListB))/2)]ListB_R=ListB[int((len(L
SanFanCSgo
·
2020-09-12 04:42
python及算法学习
python实现归并排序 --
算法导论
defmerge(A,p,q,r):n1=q-p+1n2=r-qL=list(range(n1+1))R=list(range(n2+1))foriinrange(0,n1):L[i]=A[p+i]forjinrange(0,n2):R[j]=A[q+j+1]L[n1]=10000#这里可以使用无穷大/也可以使用一个比数组最大的元素大的值R[n2]=10000i=0j=0forkinrange(p
t4ngw
·
2020-09-12 03:46
算法导论
python
算法
排序算法
python实现计数排序 --
算法导论
defCOUNTING_SORT(A,B,k):C=list(range(k))foriinrange(0,k):C[i]=0forjinrange(0,len(A)):C[A[j]-1]+=1foriinrange(1,k):C[i]=C[i]+C[i-1]forjinrange(len(A),0,-1):B[C[A[j-1]-1]-1]=A[j-1]C[A[j-1]-1]-=1print(A)
t4ngw
·
2020-09-12 03:46
算法导论
算法
python
排序算法
算法导论
【python菜鸟日记】-02
算法导论
-选择排序
importrandomA=[]foriinrange(5):A.append(random.randint(0,100))printAforjinrange(len(A)):forkinrange(len(A[j:])):ifA[j]>A[j+k]:A[j],A[j+k]=A[j+k],A[j]printA
sydnever
·
2020-09-12 03:14
python
【python菜鸟日记】-01
算法导论
-插入排序
importrandomlist_a=[]foriinrange(5):list_a.append(random.randint(0,100))printlist_aforjinrange(0,len(list_a)):key=list_a[j]printkeyi=j-1whilei>=0andlist_a[i]>key:list_a[i+1]=list_a[i]i=i-1list_a[i+1]=
sydnever
·
2020-09-12 03:14
python
算法导论
:归并排序算法之python实现
A=[99,38,65,97,76,13,27,49]#排序步骤#A=[99,38,65,97][76,13,27,49]#A=[99,38][65,97][76,13][27,49]#A=[38,99][65,97][13,76][27,49]#A=[38,65,97,99][13,27,49,76]#A=[13,27,38,49,65,76,97,99]defmerge(A,p,q,r):n1
学海无涯0216
·
2020-09-12 03:11
算法导论
算法导论
——2.3-2无哨兵情况下的归并排序
没有哨兵时,可以设置一个判断,只要2个分数组的一个到达底端就把另一个的后续元素赋给原数组。具体如下:#includeusingnamespacestd;constintsentry=999999;voidMerge(intia[],size_tp,size_tq,size_tr){inta1[10],a2[10];size_tlen1=q-p+1,len2=r-q;for(inti=0;i=a2[
qq_36393555
·
2020-09-12 03:38
算法导论
排序算法总结之归并排序 Merge Sort
算法伪代码:伪代码来自
算法导论
归并排序算法部分:MERGESORT(int[]A,intp,intr)if(p
fight_to_dead
·
2020-09-12 02:35
算法
排序算法总结之插入排序 Insertion Sort
下图出自
算法导论
的插入排序部分,演示了插入排序的整个过程:算法伪代码:INSERTION-SORT(A)forj=2toA.lengthkey=A[j]//InsertA[j]intothesortedsequenceA
fight_to_dead
·
2020-09-12 02:35
算法
算法导论
排序算法
java
插入排序
insertion
【python菜鸟日记】-03
算法导论
-归并排序
importrandomA=[]foriinrange(random.randint(0,100)):A.append(random.randint(0,100))printAdefmerge_sort(A):iflen(A)<=1:returnAdefmerge(A1,A2):merged=[]whileA1andA2:ifA1[0]<=A2[0]:merged.append(A1.pop(0)
sydnever
·
2020-09-12 01:42
python
排序算法总结之计数排序 Counting Sort
下图是
算法导论
计数排序部
fight_to_dead
·
2020-09-12 01:29
算法
算法导论
笔记:24单源最短路径
最短路径问题:一个带权重的有向图G=(V,E)和权重函数w:E->R,该权重函数将每条边映射到实数值的权重上。一条路径p的权重w(p)是构成该路径的所有边的权重之和,定义从节点u到结点v的最短路径权重δ(u,v)如下:在实际应用中,可以用一张图表示道路交通图,结点代表城市,边代表城市之间的道路,边上的权重代表道路的长度。目标就是找出一条从城市A到城市B的最短路径,边上的权重还可以表示时间、费用、罚
weixin_30287169
·
2020-09-12 01:48
算法导论
第二十五章:有向图的传递闭包
已知一有向图G=,顶点集合V={1,2,...,n},我们可能希望确定对所有顶点对i,j∈V,图G中事发后都存在一条从i到j的路径。G的传递闭包定义为图,其中:在Θ(n^3)时间内计算出图的传递闭包的一种方法是对E中每条边赋以权值1,然后运行Floyd-Warshall算法。如果顶点i到顶点j存在一条路径,则d(i,j)#include#includeusingnamespacestd;typed
iffTimes
·
2020-09-12 01:04
Data
Structure
and
Algorithms
算法导论
第十六章:贪心算法之单任务调度问题
贪心算法是使所做的选择看起来都是当前最优的,通过所做的局部最优选择来产生一个全局最优解。其具有的性质如下:1)贪心选择性质:一个全局最优解可以通过局部最优(贪心)选择来达到。即,在考虑如何做选择时,我们只考虑对当前问题最佳的选择而不考虑子问题的结果。这一点是贪心算法不同于动态规划之处:在动态规划中,每一步都要做出选择,但是这些选择依赖于子问题的解。因此,解动态规划问题一般是自底向上,从小问题处理至
iffTimes
·
2020-09-12 01:32
Data
Structure
and
Algorithms
算法导论
第十四章:区间树
区间树是一种对动态集合进行维护的红黑树,具体设计如下:step1:基础数据结构我们选择的基础数据结构式红黑树,其中每个节点x包含一个区间域x.int,x的关键字为区间的低端点x.int.low.step2:附加信息每个节点x除了区间信息外,还包含一个值x.max,即以x为根的的子树中所有区间的断点的最大值step3:对信息维护必须验证对含有n个节点的区间树的插入和删除都能在O(lgn)时间内完成,
iffTimes
·
2020-09-12 01:32
Data
Structure
and
Algorithms
算法导论
-25.1-最短路径与矩阵乘法
一、介绍二、代码#include#includeusingnamespacestd;#defineN6//点的个数#defineM10//边的个数//邻接矩阵structGraph{intmap[N+1][N+1];introw;Graph(intn):row(n){inti,j;for(i=1;i>start>>end>>value;G.map[start][end]=value;}Print(
windmissing
·
2020-09-12 00:38
【
算法导论
笔记】所有结点对的最短路径问题
基于矩阵乘法的动态规划算法求解所有最短路径EXTEND_SHORTEST_PATHS(L,W)n=L.rowsletL'=l'(i,j)beanewn*nmatrixfori=1tonforj=1tonl'(i,j)=∞returnL'SLOW-ALL-PATHS-SHORTEST-PATHS(W)n=W.rowsL[1]=Wform=2ton-1letL[m]beanewn*nmatrixL[m
jimye
·
2020-09-12 00:09
数据结构与算法
算法导论
25(所有结点对的最短路径问题)
25.1最短路径和矩阵乘法#includeusingnamespacestd;#definen20intL[n][n],M[n][n];typedefstruct{intVNum,ENum;intw[n][n];}Graph;voidcreate_graph(Graph&G){inti,j,v1,v2;cin>>G.VNum>>G.ENum;for(i=0;i>v1>>v2>>j;G.w[v1][
hz5034
·
2020-09-12 00:41
算法导论
算法导论
| 第25章 所有结点对的最短路径问题
零、前言前面讲了单源最短路径问题,指定一个原点一个终点,找到最短路径。但是如果我们要求所有结点对呢?方案一:可以对每一个结点调用一次单源最短路径算法,一共调用|V|次。(每指定一个原点,可以求出其他任何点到该原点的举例)对于权值为非负的图,可以调用Dijkstra算法,不同的优先队列实现得到不同的时间复杂度:①线性数组,O(V^3+VE)=O(V^3)。②二叉堆,O(VElgV),在稀疏图的情况下
solar一抹阳光
·
2020-09-12 00:16
算法导论
算法导论
-第23章-最小生成树:Kruskal算法(基于按秩合并、路径压缩的不相交集合)C++实现
#include#include#includeusingnamespacestd;staticcharelements_index{'a'};usingP=pair;usingPP=pair;structElement{charindex{elements_index++};intrank{0};Element*parent{this};};Element*FIND_SET(Element*x)
VanTrickster
·
2020-09-11 23:32
算法
算法导论
第二十五章:每对顶点间的最短路径
Floyd-Warshall算法设G的顶点为V={1,2,...,n},对于每个k考虑顶点的一个子集{1,2,...,k}。对于任意一对顶点i,j∈V,考察从i到j且中间顶点皆属于集合{1,2,...,k}的所有路径,设p是其中的一条最小权值路径:1)如果k不是路径p中的中间顶点,则p的所有中间顶点皆在集合{1,2,...,k-1}中。因此从顶点i到顶点j且满足所有中间顶点皆属于集合{1,2,..
iffTimes
·
2020-09-11 23:11
Data
Structure
and
Algorithms
算法导论
第二十五章 所有节点对的最短路径问题
基于单源最短路径问题的讨论,解决所有最短路径问题,对每个节点求其最短路径:25.1最短路径和矩阵乘法用动态规划的方法来实现之前的思路:如下示例:使用公式L[i][j]=min(L[i][j],L'[i][k]+W[k][j])求解第一行的过程如下:i=1,j=1l'(1,1)=inf;l(1,1)+w(1,1)=0;l(1,2)+w(2,1)=inf;l(1,3)+w(3,1)=inf;l(1,4
pokeyode
·
2020-09-11 23:19
算法笔记
二叉排序树(Binary Sort Tree,二叉查找树,二叉搜索树)--【
算法导论
】
今天的收获就是二叉搜索树,“好记性不如烂笔头”,写下来加深一下印象;1、首先是了解了二叉搜索树(BinarySortTree)又称二叉查找树,亦称二叉排序树。若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。2、接下来看的是查询二叉搜索树,查询二叉搜索树的内容比较多;(1)查找:即是查询关键
_Luffy
·
2020-09-11 23:41
C++
算法导论
算法探寻之路
算法导论
例题——钢管切割
《
算法导论
》(CLRS)中第一个dp例题(rodcutting)的C++代码#include#include#includeusingnamespacestd;intmain(){intprice[11
pirate597的跟班
·
2020-09-11 21:07
邻接矩阵表示图的深度优先搜索和广度优先搜索
同样,
算法导论
采用了“聪明的做法”,用三种颜色来标记三种状态。
herongweiV
·
2020-09-11 16:25
【算法总结】
【搜索】
怎么提高编程能力?逻辑思维能力?
学习一门简单而且可用性强的语言,写点自动签到、自动下动漫之类的日常小程序,提高编程兴趣(比如python,可以选择教材LearnPythonTheHardWay)学习常见的算法和数据结构,根据个人喜好选择深浅不同的书籍,如《
算法导论
yyjava
·
2020-09-11 06:14
架构设计
算法导论
——红黑树插入算法C++实现
一、概念红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长2倍,因而是近似于平衡的。二、定义一棵红黑树是满足下面红黑性质的二叉搜索树:1、每个结点或是红色,或是黑色;2、根节点是黑色的;3、每个叶节点(NIL)是黑色的;4、如果一个结点是红色的,则它的两个
砺晗
·
2020-09-11 06:05
数据结构
算法导论
动态规划切割钢条
保存已经求得的子问题解自底向上#ifndef_MODEL_#define_MODEL_#include#includeusingstd::vector;usingstd::map;intmax(inta1,inta2){if(a1>=a2)returna1;elsereturna2;}intfunction(intlength,mapdata){vectorVecMax;intMax=0;for(
健十一
·
2020-09-11 05:45
B树的java源码实现
清明节这几天闲来无事,参考《
算法导论
》第二版第十八章的思想使用java语言实现了一颗简单的B树,在此跟大家分享下,就当是抛砖引玉,欢迎大家跟我讨论。
wangpingfang
·
2020-09-11 04:04
算法与数据结构
算法导论
红黑树的扩张 动态顺序统计
#include#include#defineRED1#defineBLACK0typedefstructRBTreeNode{intkey;intcolor;intsize;RBTreeNode*p;RBTreeNode*left;RBTreeNode*right;}RBT,*pRBT;pRBTnil=(pRBT)malloc(sizeof(RBT));intbh=0;voidinitNil()
万万岁
·
2020-09-11 02:05
算法导论
算法导论
第13章 红黑树
一、概念1.定义与性质(1)定义红黑树字义:满足(a)每个结点或是红的,或是黑的(b)根结点是黑的(c)每个叶结点(NIL)是黑的(d)如果一个结点是红的,则它的两个儿子是黑的(e)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点的二叉查找树称为红黑树。黑高度定义:从某个结点x出发(不包括该结点)到达一个叶结点的任意一条路径上的黑色结点的个数称为x的黑高度。(2)性质红黑树确保没有
windmissing
·
2020-09-11 02:15
算法导论
《算法导论》答案
算法导论
题解(我的答案,欢迎指正) introduction to algorithms
onlinereading:http://books.google.com/books?id=NLngYyWFl_YC&pg=PA15&dq=introduction+to+algorithms&psp=1&sig=jX-xfEDWJU3PprUwH8Qfxidli6M#PPA382,M1*******************chp11.2-11.2-21.2-3n=15*************
lwl_ls
·
2020-09-11 02:27
红黑树的c语言实现
不得不说《
算法导论
》是一本非常厉害的书!我主要参考了《
算法导论
》和网络上其他一些优秀的红黑书原理的资料,实现了这个红黑树的代码。
code_mlym
·
2020-09-11 00:48
算法导论
算法导论
-红黑树C++实现
红黑树的定义:一棵二叉查找树如果满足下面的红黑性质,则为一棵红黑树:1)每个节点或是红的,或是黑的。2)根节点是黑的。3)每个叶节点(NIL)是黑节点。4)如果一个节点是红的,则它的两个儿子都是黑的。5)对每个节点,从该节点到其子孙节点的所有路径上包含相同节点数目的黑节点。C++代码实现:BRTreeNode.h#ifndefBRTREENODE_H_INCLUDED#defineBRTREENO
拳四郎
·
2020-09-10 23:54
数据结构与算法
poj 3714 (最近点对)
看了
算法导论
,发现了一种求最近点对的高效方法,就是在合并操作时只找每个点(已经按y排好序)以下的6个点。
weixin_33939380
·
2020-09-10 19:07
循环不变量求解数组问题
文章目录循环不变量原理快排移动0去掉指定元素排序数组去重排序数组只保留最多2个重复的元素循环不变量原理第一次看到循环不变量是在
算法导论
的快排里。一般是针对数组问题求解,需要2个指针。
CasterOxfd
·
2020-09-10 18:28
算法
算法导论
3-3
问题根据增长率来对下列函数排序;即找出函数的一种排列g1,g2,…,g30,使g2为g1的渐近下界,g3为g2的渐近下界,…,以此类推。将该序列划分为等价类,使f(n)和g(n)在同一个等价类中当且仅当g(n)是f(n)的渐近确界。给出非负函数f(n)的一个例子,使对任何在1中gi(n),gi(n)既不是f(n)的渐近上界也不是f(n)的渐近下界。分析通过第三章可知,从整体上讲,各类函数按增长性降
newdye
·
2020-09-10 18:30
算法
算法导论
3.2-4
问题函数是否多项式有界?函数呢?分析看了网上的分析,要用到---(1)感觉这样可以去掉常数k的干扰,首先来证明(1)证明:必要性:根据渐近上界定义,存在n0和c,当n>=n0时,lg(f(n))=n0时,对两边取对数得因为c为常数,所以肯定可以找到一个常数k1,使所以此时,存在正常数n0和k1,当n>=n0时即下面证明题目,问题就转换成lg(f(n))的渐近上届是否为lgn证明:因为所以又因为不难
newdye
·
2020-09-10 18:30
算法
算法导论
4-3
1题目参数传递的代价整个这本书中,我们都假定过程调用中的参数传递所花时间是常数,即使所传递的参数是N个元素的数组也是一样。这个假设对大多数系统都是有效的,因为当参数为数组时,所传递的只是指向该数组的指针,而不是该数组本身。本题讨论三种参数传递策略:数组是由一个指针来传递。时间=Θ(1)。参数数组通过复制而传递。时间Θ(N),N是该数组的大小。一个数组在被传递时,仅拷贝调用过程可能引用的数组的子域。
newdye
·
2020-09-10 18:59
算法
算法导论
4-4
1题目更多递归式的例子给出下列递归式的渐近上下界,给出的界尽量紧确。2分析与解答T(n)=3T(n/2)+nlgn,根据主定理T(n)=Θ(nlog23)T(n)=5T(n/5)+n/lgn,简单画出递归树,可得T(n)=∑i=0log5n-1n/lg(n/5i)+nT(1)=n∑i=0log5n-1(1/lg(n/5i))+Θ(n)=(n/lg5)∑i=0log5n-1(1/(log5n-i))
newdye
·
2020-09-10 18:59
算法
堆排序的应用
今天在回顾
算法导论
的过程中发现,堆排序,快排,归并排序的应用很广泛,重要的不是这种排序的方式,而是这种排序的思想值得我们学习。比如堆排序常用于中位数的查找,以及找出给定数组中最大(小)的k个数。
力扣小男孩
·
2020-09-10 15:27
刷题
算法导论
(第三版)第二章练习题2.2-1 考虑排序存储在数组A中的n个数...
题干如下:考虑排序存储在数组A中的n个数:首先找出A中最小元素并将其与A[1]中元素进行交换.接着,找出A中次小元素并惊奇与A[2]中元素进行交换.对A中前n-1个元素按该方式继续.该算法称为选择算法,写出其伪代码该算法维持的循环不变式是什么?为什么它只需要对前n-1个元素而非所有n个元素运行?用θ几号给出选择排序的最好情况与最坏情况运行时间.(1)functionaddAction(){$arr
moqiluoji
·
2020-09-10 15:21
算法导论
算法导论
上一页
10
11
12
13
14
15
16
17
下一页
按字母分类:
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
其他