![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法实现与分析
文章平均质量分 91
陆云池
这个作者很懒,什么都没留下…
展开
-
算法综合应用实验:供给系统问题
这个代码的功能是求解一个平面上给定的n个点的最小圆覆盖问题,即找到一个半径最小的圆,使得所有的点都在圆内或者圆上。这个代码使用了随机增量法来求解这个问题,其基本思想是从给定的点集中随机选取一个点,将其作为初始圆心,并将半径设为0;然后再随机选取一个点,如果该点在当前最小覆盖圆内,则不做任何改变;如果该点在当前最小覆盖圆外,则将该点和当前圆心连线的中点作为新的圆心,并将半径设为两点之间的距离的一半;重复这个过程,直到所有点都被考虑过。原创 2023-05-30 15:23:16 · 1360 阅读 · 0 评论 -
回溯与分支限界算法实验:最大团问题
最大团问题是一个经典的组合优化问题,它的目标是在一个无向图中找到一个最大的完全子图,即一个最大的顶点集合,使得这些顶点之间两两有边相连。最大团问题是NP-完全的,因此不存在多项式时间的确定性算法来解决它。本实验中,我们将介绍基于回溯和分支限界思想的算法来求解最大团问题本文是对回溯与分支限界算法实验中最大团问题的一个总结。最大团问题是指在一个无向图中,找出包含顶点数最多的完全子图,即任意两个顶点之间都有边相连的子图。原创 2023-05-30 11:49:53 · 4462 阅读 · 1 评论 -
贪心算法问题实验:贪心算法解决TSP问题
TSP问题是指旅行商问题,即给定一组城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中有着广泛的应用。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,但是仍然可以通过贪心算法近似地得到全局最优解)。原创 2023-05-25 21:54:59 · 4698 阅读 · 0 评论 -
动态规划问题实验:数塔问题
动态规划是一种解决复杂问题的方法,它将一个问题分解为若干个子问题,然后从最简单的子问题开始求解,逐步推导出更复杂的子问题的解,最终得到原问题的最优解。动态规划的关键是找到子问题之间的递推关系,以及确定合适的边界条件和初始值。数塔问题是一个经典的动态规划问题,它描述了一个由数字组成的三角形结构,要求从顶部开始向下走,每次只能走到相邻的位置,最终到达底部,使得经过的数字之和最大。数塔问题可以用一个二维数组来表示,其中第i行有i个元素,表示第i层的数字。例如:912 1510 6 8。原创 2023-05-24 10:11:07 · 7854 阅读 · 1 评论 -
算法设计与分析:数理基础与串匹配程序设计
本实验是算法设计与分析课程的一个实验,旨在帮助掌握数理基础和串匹配算法的相关知识,以及如何用C语言实现串匹配程序。本实验分为两个部分:第一部分是数理基础,包括集合、关系、函数、图论等概念的复习和练习;第二部分是串匹配程序设计,要求学生根据给定的问题描述和输入输出格式,设计并实现一个能够在文本中查找模式串的程序。本实验的目的是掌握串匹配算法的基本原理和实现方法,以及分析其时间复杂度和空间复杂度。原创 2023-05-23 23:16:30 · 818 阅读 · 0 评论 -
分治与减治算法实验:题目6 淘汰赛冠军问题
淘汰赛冠军问题是指在一个有n个参赛者的淘汰赛中,如何用最少的比赛次数确定冠军。一个简单的方法是采用单循环赛制,即每个参赛者都和其他n-1个参赛者比赛一次,然后统计胜场数,最多胜场的参赛者就是冠军。这种方法的比赛次数是n(n-1)/2,当n很大时,这个数目会很庞大。因此,我们需要寻找一种更高效的方法。一个更好的方法是采用单淘汰赛制,即每次从剩余的参赛者中随机选出两个进行比赛,胜者晋级,负者淘汰,直到只剩下一个参赛者为止,这个参赛者就是冠军。这种方法的比赛次数是n-1,显然比单循环赛制要少得多。原创 2023-05-01 15:23:29 · 3180 阅读 · 0 评论 -
分治与减治算法实验: 排序中减治法的程序设计
减治法是一种算法设计策略,它的基本思想是将一个规模为n的问题转化为一个规模为n-1的子问题,然后利用子问题的解来求解原问题。减治法可以分为三种类型,分别是减去一个常量、减去一个常数因子和减去一个可变因子。在排序问题中,减治法有很多应用,例如插入排序、堆排序等。插入排序是一种基于减一法的排序算法,它的过程类似于扑克牌抓牌时的排序。每次从未排序的序列中取出一个元素,将其插入到已排序的序列中合适的位置,使得已排序的序列仍然有序。插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。原创 2023-04-26 20:50:14 · 1497 阅读 · 0 评论 -
分治与减治算法实验:题目2 排序中分治法的程序设计
这篇文章介绍了分治法和减治法的算法设计思想,以及它们在排序问题中的应用。文章提到了许多经典的分治法和减治法的应用,例如快速排序、归并排序、堆排序等。这些排序算法都有各自的优缺点,需要根据不同的场景和需求选择合适的算法。文章还介绍了本实验的目的和内容,即通过排序中分治法的程序设计,掌握分治法和减治法在排序问题上的应用,了解不同排序算法的原理、步骤、性能和特点,能够使用高级语言实现和测试这些排序算法,并能够分析和比较它们之间的异同。原创 2023-04-09 16:52:21 · 1893 阅读 · 0 评论 -
蛮力与优化算法实验:题目1 排序问题程序设计整数排序问题
冒泡排序和选择排序是两种简单的排序算法,可用于对C编程语言中的数组进行排序。冒泡排序的主要区别在于,如果相邻元素的顺序不正确,则通过重复交换相邻元素来操作,而选择排序则通过重复从未排序部分中找到最小元素并将其放置在数组开头来对数组进行排序。就速度而言,选择排序算法比冒泡排序算法更快,而冒泡排序算法比选择排序算法慢。冒泡排序需要n次,而选择排序需要n^2次。冒泡排序是稳定的算法,而选择排序是不稳定的。与非常缓慢和低效的冒泡排序相比,选择排序算法快速高效。原创 2023-04-06 13:28:26 · 741 阅读 · 0 评论 -
分治与减治算法实验:题目3 汉诺塔问题的程序设计
汉诺塔问题是一个经典的递归问题,它可以用分治与减治算法来解决。分治与减治算法是一种将复杂问题分解为更小的子问题,然后逐个解决子问题,最后合并子问题的解的算法思想。本实验的目的是通过汉诺塔问题的程序设计,来掌握分治与减治算法的基本原理和应用方法,以及递归函数的编写和调用技巧。本实验要求使用高级语言编写汉诺塔问题的程序,并输出移动步骤和总步数。同时,要求分析不同盘数下,程序的时间复杂度和空间复杂度,并与非递归方法进行比较。一、实验内容。原创 2023-04-05 17:42:04 · 1513 阅读 · 0 评论 -
算法设计与分析实验:分治与减治算法实验:题目1 数字旋转方阵程序设计
算法同样是计算机四大件的一个很重要的内容,本实验的目的是通过编写一个数字旋转方阵程序,来掌握分治与减治算法的基本思想和实现方法。原创 2023-04-04 21:13:54 · 1873 阅读 · 0 评论