实验3 贪心算法(定稿)_实验三贪心算法

2020-02-28 其他范文 下载本文

实验3 贪心算法(定稿)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验三贪心算法”。

《算法设计与分析》实验报告

实验3贪心算法

姓名 学号班级 实验日期实验地点

一、实验目的1、掌握贪心算法的设计思想。

2、理解最小生成树的相关概念。

二、实验环境

1、硬件环境 CPU:酷睿i5 内存:4GB 硬盘:1T2、软件环境

操作系统:Windows10 编程环境:jdk 编程语言:Java

三、实验内容:在Prim算法与Kruskal算法中任选一种求解最小生成树问题。

1、你选择的是:Prim算法

2、数据结构

(1)图的数据结构——图结构是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系,即结点之间的关系可以是任意的,图中任意元素之间都可能相关。

图形结构——多个对多个,如

(2)树的数据结构——树结构是研究数据元素之间的一对多的关系。在这种结构中,每个元素对下(层)可以有0个或多个元素相联系,对上(层)只有唯一的一个元素相关,数据元素之间有明显的层次关系。树形结构——一个对多个,如

3、算法伪代码 Prim(G,E,W)输入:连通图G 输出:G的最小生成树T 1.S←{1};T=∅ 2.While V-S ≠∅ do

3.从V-S中选择j使得j到S中顶点的边e的权最小;T←T∪{e} 4.S←S∪{j}

3、算法分析 时间复杂度:O(n)空间复杂度:O(n^2)

4、关键代码(含注释)

package Prim;

import java.util.*;publiccla Main { staticintMAXCOST=Integer.MAX_VALUE;

staticint Prim(intgraph[][], intn){ /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */

intlowcost[]=newint[n+1];

/* mst[i]记录对应lowcost[i]的起点,当mst[i]=0时表示起点i加入生成树 */ intmst[]=newint[n+1];

intmin, minid, sum = 0;

/* 默认选择1号节点加入生成树,从2号节点开始初始化 */ for(inti = 2;i

/* 标记1号节点加入生成树 */ mst[1] = 0;

/* n个节点至少需要n-1条边构成最小生成树 */ for(inti = 2;i

/* 找满足条件的最小权值边的节点minid */ for(intj = 2;j

/* 输出生成树边的信息:起点,终点,权值 */

System.out.printf(“%c1, minid + 'A''A' + 1;intj = chy-'A' + 1;graph[i][j] = cost;graph[j][i] = cost;for(intj = 1;j

5、实验结果(1)输入

(2)输出

最小生成树的权值为: 生成过程:

(a)

(b)

(d)

(e)

(c)

四、实验总结(心得体会、需要注意的问题等)

这次实验,使我受益匪浅。这次实验我选择了Prim算法来求出树的最小生成树,在编写代码的过程中,我对Prim算法有了更深的了解,也使我对算法设计与分析更有兴趣,今后一定要更努力的学习这门课。

《实验3 贪心算法(定稿).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
实验3 贪心算法(定稿)
点击下载文档
相关专题 实验三贪心算法 定稿 贪心 算法 实验三贪心算法 定稿 贪心 算法
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文