我的算法
xiaoshiguang3
这个作者很懒,什么都没留下…
展开
-
马踏棋盘算法
马踏棋盘算法1.马踏棋盘算法介绍和游戏演示(1)马踏棋盘算法也被称为骑士周游问题(2)将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格(3)游戏演示: 在线马踏棋盘2.马踏棋盘游戏代码实现(1)马踏棋盘问题(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用。(2)如果使用回溯(就是深度优先搜索)来解决,假如马儿踏了53个点,如图:走到了第53个,坐标(1,0),发现已经走到尽头原创 2020-07-31 00:30:39 · 2034 阅读 · 3 评论 -
弗洛伊德算法(Floyd)
弗洛伊德(Floyd)1.弗洛伊德(Floyd)算法介绍(1)和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名(2)弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径(3)迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。(4)弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路原创 2020-07-29 23:43:39 · 666 阅读 · 0 评论 -
迪杰斯特拉算法(Dijkstra)——java实现
迪杰斯特拉算法(Dijkstra)1.应用场景-最短路径问题看一个应用场景和问题:(1)战争时期,胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在有六个邮差,从G点出发,需要分别把邮件分别送到 A, B, C , D, E, F, G7个村庄(2)各个村庄的距离用边线表示(权) ,比如 A – B 距离 12公里(3)问:如何计算出D村庄到 其它各个村庄的最短距离?(4)如果从其它点出发到各个点的最短距离又是多少?2.迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Di原创 2020-07-28 23:01:31 · 931 阅读 · 0 评论 -
克鲁斯卡尔算法(Kruskal)
克鲁斯卡尔算法(Kruskal)1.应用场景-公交站问题看一个应用场景和问题:(1)某城市新增7个站点(A, B, C, D, E, F, G) ,现在需要修路把7个站点连通(2)各个站点的距离用边线表示(权) ,比如 A – B 距离 12公里(3)问:如何修路保证各个站点都能连通,并且总的修建公路总里程最短?2.克鲁斯卡尔算法介绍(1)克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。(2)基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回原创 2020-07-26 17:59:02 · 4613 阅读 · 0 评论 -
普里姆算法(Prim)-修路问题
普里姆算法(Prim)1.应用场景-修路问题看一个应用场景和问题:(1)有胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通(2)各个村庄的距离用边线表示(权) ,比如 A – B 距离 5公里(3)问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?2.最小生成树(MST)(1)修路问题本质就是就是最小生成树问题, 先介绍一下最小生成树(Minimum Cost Spanning Tree),简称MST。(2)给定一个带权的无向连通图,如何原创 2020-07-26 10:54:26 · 1315 阅读 · 0 评论 -
贪心算法(GreedyAlgorithm)
贪心算法(GreedyAlgorithm)1.应用场景-集合覆盖问题假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号2.贪心算法介绍(1)贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法.(2)贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果.3.贪心算法最佳应用-集合覆盖的思路分析(1)如何找原创 2020-07-25 23:55:51 · 350 阅读 · 0 评论 -
动态规划算法(Dynamic Programming)-背包问题
动态规划算法(Dynamic Programming)-背包问题1.应用场景-背包问题背包问题:有一个背包,容量为4磅 , 现有如下物品物品重量价格吉他(G)11500音响(S)43000电脑(L)32000(1)要求达到的目标为装入的背包的总价值最大,并且重量不超出(2)要求装入的物品不能重复(3)背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大。其中又分01背包和完全背包(完全背包指的是:原创 2020-07-25 11:50:36 · 211 阅读 · 0 评论 -
分治算法以及汉诺塔问题
分治算法1.分治算法的介绍(1)分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……(2)分治算法可以求解的一些经典问题二分搜索汉诺塔合并排序快速排序大整数乘法棋盘覆盖线性时间选择最接近点对问题循环赛日程表2.分治算法的基本步骤分治原创 2020-07-22 23:14:10 · 216 阅读 · 0 评论