深圳大学算法实验总结2021

算法设计实验二 分治法求最近点对

一.实验目的

  1. 对于平面上给定的N个点,给出所有点对的最短距离,即,输入是平面上的N个点,输出是N点中具有最短距离的两点。

  2. 要求随机生成N个点的平面坐标,应用蛮力法编程计算出所有点对的最短距离。

  3. 要求随机生成N个点的平面坐标,应用分治法编程计算出所有点对的最短距离。

  4. 分别对N=100,1000,10000,100000,统计算法运行时间,比较理论效率与实测效率的差异,同时对蛮力法和分治法的算法效率进行分析和比较。

  5. 如果能将算法执行过程利用图形界面输出,可获加分。

算法设计实验三 地图染色

一、实验目的:

  1. 掌握回溯法算法设计思想。
  2. 掌握地图填色问题的回溯法解法。

二、内容:

背景知识:

为地图或其他由不同区域组成的图形着色时,相邻国家/地区不能使用相同的颜色。 我们可能还想使用尽可能少的不同颜色进行填涂。一些简单的“地图”(例如棋盘)仅需要两种颜色(黑白),但是大多数复杂的地图需要更多颜色。

每张地图包含四个相互连接的国家时,它们至少需要四种颜色。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、随机产生不同规模的图,分析算法效率与图规模的关系(四色)。

算法设计实验四 动态规划

一、实验目的:

  1. 掌握动态规划算法设计思想。
  2. 掌握流水线问题的动态规划解法。

二、内容:

汽车厂有两条流水线,每条流水线有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. 掌握图的连通性。
  2. 掌握并查集的基本原理和应用。

二、内容:

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算法,仍然需要利用并查集设计一个比基准算法更高效的算法。

三、实验要求

  1. 实现上述基准算法。
  2. 设计的高效算法中必须使用并查集,如有需要,可以配合使用其他任何数据结构。
  3. 用图2的例子验证算法正确性。
  4. 使用文件 mediumG.txt和largeG.txt 中的无向图测试基准算法和高效算法的性能,记录两个算法的运行时间。
  5. 设计的高效算法的运行时间作为评分标准之一。
  6. 提交程序源代码。
  7. 实验报告中要详细描述算法设计的思想,核心步骤,使用的数据结构。

算法设计实验六 最大流论文评审

一、实验目的:

  1. 掌握最大流算法思想。
  2. 学会用最大流算法求解应用问题。

二、内容:

  1. 有m篇论文和n个评审,每篇论文需要安排a个评审,每个评审最多评b篇论文。请设计一个论文分配方案。

  2. 要求应用最大流解决上述问题,画出m=10,n=3的流网络图并解释说明流网络图与论文评审问题的关系。

  3. 编程实现所设计算法,计算a和b取不同值情况下的分配方案,如果没有可行方案则输出无解。

三、实验要求

  1. 在blackboard提交电子版实验报告,注意实验报告的书写,整体排版。

  2. 实验报告的实验步骤部分需详细给出算法思想与实现代码之间的关系解释,不可直接粘贴代码(直接粘贴代码者视为该部分内容缺失)。

  3. 实验报告中要求证明该算法的关键定理,并说明这些定理所起的作用。

  4. 实验报告样式可从http://192.168.2.3/guide.aspx 表格下载-学生适用-在校生管理-实践教学-实验:深圳大学学生实验报告)

  5. 源代码作为实验报告附件上传。

  6. 在实验课需要现场运行验证并讲解PPT。

感慨

实验一写得太拉垮了,就不发了
苟延残喘,勉强混了个A+,躺
在这里插入图片描述

### 回答1: 当n取100、100、10000时,Matlab可以处理更大规模的数据集,但同时也需要更多的计算资源和内存。对于较大的数据集,需要使用更高效的算法和优化技巧,以提高计算速度和减少内存占用。此外,Matlab还提供了许多工具和函数,用于处理和分析大规模数据集,如矩阵运算、统计分析、数据可视化等。 ### 回答2: 当n取100时,Matlab可以用来处理和计算100个数值的数据。可以进行数值运算、矩阵运算、图形绘制等操作。对于100个数值数据的处理,Matlab有强大的功能和库可以使用,例如可以进行数据的统计分析、数据的可视化呈现等。 当n取1000时,Matlab可以用来处理和计算1000个数值的数据。同样可以进行各种数值运算、矩阵运算、图形绘制等操作。对于1000个数值数据的处理,Matlab的功能和库仍然能够胜任,可以更加精确和全面地进行数据处理和分析。 当n取10000时,Matlab可以用来处理和计算10000个数值的数据。尽管数据量增加,但Matlab仍然可以通过其强大的计算能力来有效地处理和分析这些大规模的数据。当处理大规模数据时,可能需要更多的计算资源和时间,但Matlab提供了各种优化和并行计算的方法来提高计算效率。 总结起来,无论n取多少,Matlab都能够适应并处理相应规模的数值数据。它提供了各种功能和库来进行数据处理、数值计算和图形绘制等操作,能够帮助用户更好地分析和理解数据。同时,Matlab也支持并行计算和优化方法,以提高计算效率和处理大规模数据的能力。 ### 回答3: 当n取100时,matlab可以进行各种计算和数据处理操作,因为100对于matlab来说是一个较小的数值。它可以快速地进行矩阵运算、数据拟合、曲线绘制等任务,同时还能够处理一部分实时数据。 当n取1000时,matlab的计算速度可能会稍微慢一些,但仍然可以处理大部分的计算任务。例如,它可以进行更复杂的矩阵运算、数据分析、模拟仿真等任务。此外,matlab还可以进行更大规模的数据可视化和数据处理,方便用户进行更深入的研究和分析。 当n取10000时,matlab的计算速度可能会进一步下降,特别是在需要大量内存和运算资源的任务中。对于一些复杂的算法和模型,可能需要更长的计算时间。因此,当n取10000时,matlab可能相对于更大规模数据的处理和计算来说会比较劣势。 总之,matlab在n取100,1000,和10000时,可以进行不同程度的计算和数据处理。n的取值越大,matlab的计算速度会逐渐降低,但它仍能够在一定范围内满足用户的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值