摘要: 一. 简单的直接算法 比较次数:(n-m-1)*m次 时间复杂度O(mn) 二. Rabin-karp算法 算法思想:将字符串转化成数字进行粗比较,筛选后进行细比较 算法设计: (1)直接数值比较 算法思想:字符集与 1-n 的数值满足双射,字符串转化为n进制数值 优化程度:a. 比较次数:n-m次 阅读全文
posted @ 2020-06-25 17:04 梦里飞雪飘 阅读(282) 评论(0) 推荐(1) 编辑
摘要: 【排序的分类】 1. 基于比较的排序 交换排序(冒泡排序、快速排序) 选择排序(简单选择排序、堆排序) 插入排序(直接插入排序、折半插入、希尔排序) 归并排序 2. 不基于比较的排序 基数排序 【排序算法分析】 1. 冒泡排序 最好情况:O(n) 最坏情况: O(n^2) 平均情况:O(n^2) 2 阅读全文
posted @ 2020-06-24 16:12 梦里飞雪飘 阅读(139) 评论(0) 推荐(1) 编辑
摘要: 图论算法内容难度较大,且灵活多变,本篇是对前述内容的小结 1. 图论算法设计难点 (1)如何将一个实际问题转化成图上的搜索问题(建模难) (2)如何选择最优的搜索方式,搜索代价的代价函数怎么设计(构造难) 2. 算法一览 (1)图论基本算法(DFS、BFS、最小生成树(prim(贪心)、kruska 阅读全文
posted @ 2020-06-24 15:26 梦里飞雪飘 阅读(232) 评论(0) 推荐(2) 编辑
摘要: 一. 算法思想 在使用best-first的搜索策略时,有时可以得到最优解,有时无法得到最优解,因此best-first只能较快的解决可行解问题。 A*算法是 重新定义代价函数,使得best-first搜索策略可以得到优化解的算法 A*算法(Best-first + 特殊代价函数~> 优化解) a. 阅读全文
posted @ 2020-06-24 15:07 梦里飞雪飘 阅读(1176) 评论(0) 推荐(1) 编辑
摘要: 一. 人员安排问题 问题定义: -输入: 人员:P={ P1,P2…Pn} ; 工作:J={J1,J2…Jn} ; 矩阵[Cij]:表示Pi完成Jj的代价 限制条件:P是全序集,J是偏序集,要优先把高难度的任务分配给业务能力强的人员(即:分配任务的一 一映射函数f:若f(Pi) < f(Pj),则 阅读全文
posted @ 2020-06-23 17:57 梦里飞雪飘 阅读(728) 评论(0) 推荐(1) 编辑
摘要: 一. 搜索算法介绍 1. 暴力穷举的思想 2. 搜索是一种通用的解决问题的手段,但复杂度往往较高 二. 基本搜索算法 DFS 与 BFS 三. 优化 1. 爬山法 思想:(局部优化的贪心法 + DFS) 在深度优先搜索过程中, 我们经常遇到多个节点可以扩展的情况, 爬山策略使用贪心方法确定搜索的方向 阅读全文
posted @ 2020-06-23 15:34 梦里飞雪飘 阅读(1227) 评论(0) 推荐(1) 编辑
摘要: 一. 预备知识 1. 匹配:图G=(V,E)中没有公共端点的一组边M 匹配边:M中的边  自由边:E/M中的边 被浸润的顶点:M中边的端点  未被浸润的顶点:其他顶点 完美匹配:浸润G的个顶点的匹配 最大匹配:边的条数达到最大值的匹配 推论:完美匹配一定是最大匹配,反之未必 2. 顶点覆盖:图G 阅读全文
posted @ 2020-06-22 16:51 梦里飞雪飘 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 一. 预备知识 1. 流网络: 有向图G=(V,E)满足(1)存在无入边的源结点s(2)存在无出边的目标点t(3)每条边e都有一个非负容量ci 2. 流 流网络中从s-t的流是一个实值函数 f ,满足 3. 余图(残存网络) 对于流网络G,边容量为c,流为f,则定义残存容量cf 为 即,对每一条边, 阅读全文
posted @ 2020-06-22 15:43 梦里飞雪飘 阅读(1894) 评论(0) 推荐(0) 编辑
摘要: 平摊分析在使用时灵活性和技巧性较强,下面通过几个例子来说明具体使用 【队列的栈实现】 问题定义:使用栈实现队列:入队和出队的操作,并分析他的时间代价 队列的栈实现方法: 使用如图的两个栈实现: push:S2.push O(1) pop:若S1不空,S1.pop ; O(1) 若S1空,将S2拷贝到 阅读全文
posted @ 2020-06-21 17:27 梦里飞雪飘 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 势能法介绍 平摊分析中最常用的方法 根据整个数据结构的特点设计势函数,保证初始势函数为0,整个操作序列中势函数>=0(这个特点保证了平摊代价始终大于实际代价) 对每个操作类:平摊代价 = 实际代价 + 势差 对整体操作序列:总代价 = 总平摊代价 - 势差 势函数的设计特点: 每次操作对 数据结构 阅读全文
posted @ 2020-06-21 16:43 梦里飞雪飘 阅读(1229) 评论(0) 推荐(1) 编辑