算法设计实验二 分治法求最近点对
一.实验目的
-
对于平面上给定的N个点,给出所有点对的最短距离,即,输入是平面上的N个点,输出是N点中具有最短距离的两点。
-
要求随机生成N个点的平面坐标,应用蛮力法编程计算出所有点对的最短距离。
-
要求随机生成N个点的平面坐标,应用分治法编程计算出所有点对的最短距离。
-
分别对N=100,1000,10000,100000,统计算法运行时间,比较理论效率与实测效率的差异,同时对蛮力法和分治法的算法效率进行分析和比较。
-
如果能将算法执行过程利用图形界面输出,可获加分。
算法设计实验三 地图染色
一、实验目的:
- 掌握回溯法算法设计思想。
- 掌握地图填色问题的回溯法解法。
二、内容:
背景知识:
为地图或其他由不同区域组成的图形着色时,相邻国家/地区不能使用相同的颜色。 我们可能还想使用尽可能少的不同颜色进行填涂。一些简单的“地图”(例如棋盘)仅需要两种颜色(黑白),但是大多数复杂的地图需要更多颜色。
每张地图包含四个相互连接的国家时,它们至少需要四种颜色。1852年,植物学专业的学生弗朗西斯·古思里(Francis Guthrie)于1852年首次提出“四色问题”。他观察到四种颜色似乎足以满足他尝试的任何地图填色问题,但他无法找到适用于所有地图的证明。这个问题被称为四色问题。长期以来,数学家无法证明四种颜色就够了,或者无法找到需要四种以上颜色的地图。直到1976年德国数学家沃尔夫冈·哈肯(Wolfgang Haken)(生于1928年)和肯尼斯·阿佩尔(Kenneth Appel,1932年-2013年)使用计算机证明了四色定理,他们将无数种可能的地图缩减为1936种特殊情况,每种情况都由一台计算机进行了总计超过1000个小时的检查。
他们因此工作获得了美国数学学会富尔克森奖。在1990年,哈肯(Haken)成为伊利诺伊大学(University of Illinois)高级研究中心的成员,他现在是该大学的名誉教授。
四色定理是第一个使用计算机证明的著名数学定理,此后变得越来越普遍,争议也越来越小 更快的计算机和更高效的算法意味着今天您可以在几个小时内在笔记本电脑上证明四种颜色定理。
问题描述:
我们可以将地图转换为平面图,每个地区变成一个节点,相邻地区用边连接,我们要为这个图形的顶点着色,并且两个顶点通过边连接时必须具有不同的颜色。附件是给出的地图数据,请针对三个地图数据尝试分别使用5个(le450_5a),15个(le450_15b),25个(le450_25a)颜色为地图着色。
三、实验要求
1、对下面这个小规模数据,利用四色填色测试算法的正确性;
2、对附件中给定的地图数据填涂;
3、随机产生不同规模的图,分析算法效率与图规模的关系(四色)。
算法设计实验四 动态规划
一、实验目的:
- 掌握动态规划算法设计思想。
- 掌握流水线问题的动态规划解法。
二、内容:
汽车厂有两条流水线,每条流水线有n个处理环节(station): S1,1,…,S1,n 和 S2,1,…,S2,n,其中下标的第一个字母表示流水线编号(流水线1和流水线2)。其中S1, j 和 S2, j 完成相同的功能,但是花费的时间不同,分别是a1, j , a2, j 。两条流水线的输入时间分别为e1 和 e2, 输出时间是x1 和 x2。
每个安装步骤完成后,有两个选择:
1)停在同一条安装线上,没有转移代价;
2)转到另一条安装线上,转移代价: Si,j 的代价是ti,j , j = 1,…,n - 1
问题: 如何选择安装线1和安装线2的节点组合,从而最小化安装一台车的总时间?
三、实验要求
1、给出解决问题的动态规划方程;
2、随机产生S2, j 、ti,j的值,对小数据模型利用蛮力法测试算法的正确性;
3、随机产生S2, j 、ti,j的值,对不同数据规模(n的值)测试算法效率,并与理论效率进行比对,请提供能处理的数据最大规模,注意要在有限时间内处理完;
4、该算法是否有效率提高的空间?包括空间效率和时间效率。
算法设计实验五 无向图—桥
一、实验目的:
- 掌握图的连通性。
- 掌握并查集的基本原理和应用。
二、内容:
1. 桥的定义
在图论中,一条边被称为“桥”代表这条边一旦被删除,这张图的连通块数量会增加。等价地说,一条边是一座桥当且仅当这条边不在任何环上。一张图可以有零或多座桥。
图 1 没有桥的无向连通图
图 2 这是有16个顶点和6个桥的图
(桥以红色线段标示)
2. 求解问题
找出一个无向图中所有的桥。
3. 算法
(1)基准算法
For every edge (u, v), do following
a) Remove (u, v) from graph
b) See if the graph remains connected (We can either use BFS or DFS)
c) Add (u, v) back to the graph.
(2)应用并查集设计一个比基准算法更高效的算法。不要使用Tarjan算法,如果使用Tarjan算法,仍然需要利用并查集设计一个比基准算法更高效的算法。
三、实验要求
- 实现上述基准算法。
- 设计的高效算法中必须使用并查集,如有需要,可以配合使用其他任何数据结构。
- 用图2的例子验证算法正确性。
- 使用文件 mediumG.txt和largeG.txt 中的无向图测试基准算法和高效算法的性能,记录两个算法的运行时间。
- 设计的高效算法的运行时间作为评分标准之一。
- 提交程序源代码。
- 实验报告中要详细描述算法设计的思想,核心步骤,使用的数据结构。
算法设计实验六 最大流论文评审
一、实验目的:
- 掌握最大流算法思想。
- 学会用最大流算法求解应用问题。
二、内容:
-
有m篇论文和n个评审,每篇论文需要安排a个评审,每个评审最多评b篇论文。请设计一个论文分配方案。
-
要求应用最大流解决上述问题,画出m=10,n=3的流网络图并解释说明流网络图与论文评审问题的关系。
-
编程实现所设计算法,计算a和b取不同值情况下的分配方案,如果没有可行方案则输出无解。
三、实验要求
-
在blackboard提交电子版实验报告,注意实验报告的书写,整体排版。
-
实验报告的实验步骤部分需详细给出算法思想与实现代码之间的关系解释,不可直接粘贴代码(直接粘贴代码者视为该部分内容缺失)。
-
实验报告中要求证明该算法的关键定理,并说明这些定理所起的作用。
-
实验报告样式可从http://192.168.2.3/guide.aspx 表格下载-学生适用-在校生管理-实践教学-实验:深圳大学学生实验报告)
-
源代码作为实验报告附件上传。
-
在实验课需要现场运行验证并讲解PPT。
感慨
实验一写得太拉垮了,就不发了
苟延残喘,勉强混了个A+,躺