本文目录一览

1,prim算法

不会改变。 因为每次都是自当前点向外搜索,每个树的分支搜索,MIX或者MAX值。 求全部路径 最短 OR 最长 这是万全之策喔

prim算法

2,什么是普利姆算法

Prim算法:是图的最小生成树的一种构造算法。 假设 WN=(V,如果看不懂还可以找一本数据结构的书看,这个算法挺简单的。btw:其实你有空问,应该有空百度啊~百度百科就有了。懒得写,我还是直接从百度copy过来的~
构造最小生成树的一种算法,具体过程请参见数据结构的书籍

什么是普利姆算法

3,Prim算法求大牛通俗易懂地解释下为什么成立

不会改变。 因为每次都是自当前点向外搜索,每个树的分支搜索,mix或者max值。 求全部路径 最短 or 最长 这是万全之策喔
prim算法就是把点分成两个集合,一个集合里面包含已经加入生成树的点,另一个包含未加入的,然后不断在两个集合之间找最短的边,直到所有的点都加入到生成树中,这时候就构成了最小生成树。

Prim算法求大牛通俗易懂地解释下为什么成立

4,音标prim怎么读

1 premium [?pri?m??m] [?prim??m] 2 supreme [su??pri?m] [su?prim] 3 prima [?pri?m?] [?prim?] 4 premed [?pri?med] [pri?m?d] 5 primavera
期待看到有用的回答!

5,怎么记下prim是呆板的意思trim是整齐的意思啊

rim——边,边缘t(take 拿掉) + rim(边缘)——trim(拿掉边缘,“v.修剪,n.整齐”)p(put 安置) + rim(边缘)——prim(总是放在边缘地方,“a.拘谨的,呆板的”)其实这两个单词比较一下多看几遍就认识了,一味追求花哨的记法有点舍本求末的味道,呵呵。。 不过我的答案希望对你有帮助。。
你好!p开头的就像一个人流鼻涕,特傻,特呆记住这个就不会混淆了如有疑问,请追问。

6,Prim算法的实现过程

G=(V,E)①初始化:读入的数据用邻接矩阵x存储,一个一维布尔型数组chosen,记录第i个节点是否已选,初始值除1外全部设为false,记录权值的变量cost赋值为0;以下②到④循环执行v-1次(每次生成一条边,运行(点的个数减1)次后,生成一棵最小生成树):②临时变量p赋值为无限大,用于记录当前最小值;③二重循环(外循环i,内循环j)扫描邻接矩阵:如果chosen[i]=true(也就是说第i个点已选),那么扫描x[i],如果not(chosen[j])(也就是说第j个点未选),那么如果x[i,j]<p,那么p赋值为x[i,j],临时变量q赋值为j;④把cost赋值为cost+o,把chosen[q]赋值为true(也就是说第j个点已选);⑤输出cost。一、以上给出具体的运行过程。这个算法的策略就是贪心,和dijkstra差不多,每次都选择未选的边中权值最小的那一条,直到生成最小生成树。用chosen的目的就是保证生成过程中没有环出现,也就是说保证选择的边不会通向一个已经包含在生成树中的点。二、这个只输出最小生成树的每条边权值之和,如果要输出整棵最小生成树,加一个[1..n,1..2]的数组,在第④步的时候把每次选的边记录下来就可以了。三、用小顶堆在第③步优化一下的话就不用每次都扫描那么多边了,只不过建堆维护堆代码写起来很麻烦。四、prim适合用于比较稠密的网,点数和边数差不多的时候效率很恶心,一般都用kruskal。
Prim算法,是指图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克发现,并在1957年由美国计算机科学家罗伯特·普里姆独立发现,1959年,艾兹格·迪科斯彻再次发现了该算法。因此,在某些场合,普里姆算法又被称为DJP算法、亚尔尼克算法或普里姆亚尔尼克算法。
有一个背包,背包容量是m=150。有7个物品,物品可以分割成任意大小。 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 物品 a b c d e f g 重量 35 30 60 50 40 10 25 价值 10 40 30 50 35 40 30 分析: 目标函数: ∑pi最大 约束条件是装入的物品总重量不超过背包容量:∑wi<=m( m=150) (1)根据贪心的策略,每次挑选价值最大的物品装入背包,得到的结果是否最优? (2)每次挑选所占重量最小的物品装入是否能得到最优解? (3)每次选取单位重量价值最大的物品,成为解本题的策略。 ? 值得注意的是,贪心算法并不是完全不可以使用,贪心策略一旦经过证明成立后,它就是一种高效的算法。 贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。 可惜的是,它需要证明后才能真正运用到题目的算法中。 一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。 对于例题中的3种贪心策略,都是无法成立(无法被证明)的,解释如下: (1)贪心策略:选取价值最大者。反例: w=30 物品:a b c 重量:28 12 12 价值:30 20 20 根据策略,首先选取物品a,接下来就无法再选取了,可是,选取b、c则更好。 (2)贪心策略:选取重量最小。它的反例与第一种策略的反例差不多。 (3)贪心策略:选取单位重量价值最大的物品。反例: w=30 物品:a b c 重量:28 20 10 价值:28 20 10 根据策略,三种物品单位重量价值一样,程序无法依据现有策略作出判断,如果选择a,则答案错误。 注:贪心算法当然也有正确的时候。求最小生成树的prim算法和kruskal算法都是漂亮的贪心算法。 所以需要说明的是,贪心算法可以与随机化算法一起使用,具体的例子就不再多举了。(因为这一类算法普及性不高,而且技术含量是非常高的,需要通过一些反例确定随机的对象是什么,随机程度如何,但也是不能保证完全正确,只能是极大的几率正确)
贪心过程.首先,把图中的点分成两种,已连通和未连通的,我把它们分别称为"黑"和"白"点.一开始时,图中全是白点,没有黑点.算法的第一步,随机选出一个白点,染成黑色.然后开始一个重复的过程:从当前图的边中寻找这样的一些边:它的其中一个端点是黑点,而另一个端点是一个白点. 我们可以把这类边称为"可扩展边". 然后算法需要从所有的可扩展边之中选出权值最小的一条.把这条可扩展边加入生成树之中,且把这条边的白色端点染成黑色.重复这个过程,直到全部的节点都为黑色.算法可以优化的地方是,在选择权值最小的可行边时可以使用堆.

文章TAG:算法  Prim  prim算法  
没有了