随笔分类 -  java算法

摘要:##基本介绍 马踏棋盘问题是旅行商问题(TSP)或哈密顿回路问题(HCP)的一个特例。在 8×8 的国际象棋棋盘上,用一个马按照马步跳遍整个棋盘,要求每个格子都只跳到一次,最后回到出发点。这是一个 NP问题,通常采用回溯法或启发式搜索类算法求解。在 9×10 的中国象棋棋盘上也可以实现马步遍历。 # 阅读全文
posted @ 2021-10-25 20:34 翻蹄亮掌一皮鞋 阅读(202) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。 ##思路 1,从任意一条单边路径开始。所有两点之间的距离是边的权 阅读全文
posted @ 2021-10-25 16:29 翻蹄亮掌一皮鞋 阅读(314) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点, 阅读全文
posted @ 2021-10-25 13:43 翻蹄亮掌一皮鞋 阅读(423) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数),所以,适合于求边稀疏的网的最小生成树。基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路 ##案例 1)有北京有新增7个站点(A,B,C, 阅读全文
posted @ 2021-10-23 14:27 翻蹄亮掌一皮鞋 阅读(356) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语: 阅读全文
posted @ 2021-10-23 14:06 翻蹄亮掌一皮鞋 阅读(423) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。 ##案例 假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的 阅读全文
posted @ 2021-10-17 15:42 翻蹄亮掌一皮鞋 阅读(82) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个nex 阅读全文
posted @ 2021-10-16 22:18 翻蹄亮掌一皮鞋 阅读(110) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过 阅读全文
posted @ 2021-10-11 22:35 翻蹄亮掌一皮鞋 阅读(292) 评论(0) 推荐(0) 编辑
摘要:##基本介绍 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。 ##基本步骤 1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题 2 阅读全文
posted @ 2021-10-10 13:12 翻蹄亮掌一皮鞋 阅读(91) 评论(0) 推荐(0) 编辑
摘要:##简介 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编 阅读全文
posted @ 2021-09-30 00:32 翻蹄亮掌一皮鞋 阅读(358) 评论(0) 推荐(0) 编辑
摘要:简介 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术。 斐波那契搜索就是在二分查找的基础上根据斐波那契数列进行分割的。在斐波那契数列找一个等于略大于查找表中元素个数的数F[n],将原查找表扩展为长度为Fn,完成后进行斐波那契分割,即F[n]个元素分割 阅读全文
posted @ 2021-08-20 21:48 翻蹄亮掌一皮鞋 阅读(120) 评论(0) 推荐(0) 编辑
摘要:简介 插值查找是根据查找关键字与查找表中最大最小记录关键字比较后的查找方法。插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率。适合于关键字值分布均匀的集合,前提是集合的数据是有序的。 公式:left表示左边索引,right表示右边索引,value为查找值。int mid = lef 阅读全文
posted @ 2021-08-17 13:03 翻蹄亮掌一皮鞋 阅读(88) 评论(0) 推荐(0) 编辑
摘要:简介 分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且元素必须是有序的。 思路 前提:数组中的元素顺序排序: 先确定数组的中间数的下标 mid = (left + right) / 2; 让查找的数value与中间数ar 阅读全文
posted @ 2021-08-17 10:40 翻蹄亮掌一皮鞋 阅读(45) 评论(0) 推荐(0) 编辑
摘要:简介 线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。 代码 public static List<Integer> seqSearch (int[] arr, 阅读全文
posted @ 2021-08-16 14:21 翻蹄亮掌一皮鞋 阅读(42) 评论(0) 推荐(0) 编辑
摘要:度量一个程序(算法)执行时间的两种方法 事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。 事前估算的方法 通过分 阅读全文
posted @ 2021-08-07 11:39 翻蹄亮掌一皮鞋 阅读(175) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示