数据结构与算法
CharlesWu123
分享平时积累与学习的内容,研究方向:OCR,图像,深度学习。
展开
-
最短路径问题 —— Dijkstra 和 Floyd 算法
最短路径两个顶点之间带权路径长度最短的路径为最短路径。在带权图当中,把从一个顶点 v 到另一个顶点 u 所经历的边的权值之和称为路径的带权路径之和。Dijkstra带权图单源最短路径步骤初始化数组,并集合 S 初始化为 {0};从顶点集合 V-S 中选出 vjv_jvj ,满足 dist[j]=Min{dist[i],vi∈V−S}dist[j] = Min\{dist[i], v_i \in V-S\}dist[j]=Min{dist[i],vi∈V−S},vjv_jvj 就是当前原创 2020-11-30 17:05:50 · 345 阅读 · 0 评论 -
最小生成树 —— Prim 和 Kruskal 算法
最小生成树定义生成树:连通图包含全部顶点的一个极小连通子图最小生成树:对于带权无向连通图 G=(V, E),G的所有生成树当中边的权值之和最小的生成树为 G 的最小生成树(MST)性质最小生成树不一定唯一,即最小生成树的树形不一定唯一。当带权无向连通图G的各边权值不等时或G只有节点数减1条边时,MST唯一最小生成树的权值是唯一的,且是唯一的最小生成树的边数为顶点数减1算法Prim 算法适用于稠密图,Kruskal算法适用于稀疏图Prim 算法初始化:向空的结果树 T=(VT,ET原创 2020-11-30 16:49:16 · 3218 阅读 · 1 评论 -
动态规划---初了解
动态规划基本思想: 将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方...原创 2018-08-22 23:21:30 · 159 阅读 · 0 评论 -
时间复杂度和空间复杂度
一个算法的优劣主要决定于算法的时间复杂度和空间复杂度,下面就来谈谈时间复杂度和空间复杂度。1.时间复杂度 我们使用时间复杂度来判断算法的运行时间的长短,但是我们不可能算出所用的时间。由于算法的时间复杂度和算法的执行次数成正比,可以根据算法的运行次数来得到算法的时间复杂度。算法的执行次数又称为时间频度,记为T(n)。其中n为问题的规模大小,算法中基本操作执行的次数是n的函数,记作T(n...原创 2018-08-23 20:45:38 · 569 阅读 · 0 评论 -
内部排序算法(插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,堆排序,归并排序,基数排序)总结
1.冒泡排序 时间复杂度,空间复杂度,稳定性:稳定def bubbleSort(L): length = len(L) for i in range(length - 1): # 比较次数 for j in range(length - i - 1): # 从0开始 if L[j] > L[j + 1...原创 2018-08-24 12:15:39 · 364 阅读 · 1 评论 -
最优化算法----粒子群算法(PSO)
简介粒子群算法(ParticleSwarmOptimization,PSOParticle Swarm Optimization, PSOParticleSwarmOptimization,PSO)属于进化算法的一种,和模拟退火相似,也是从随机解出发,通过迭代寻找最优解,也是通过适应度来评价解的品质,比遗传算法规则更为简单,没有遗传算法的“交叉”和“变异”操作,通过追随当前搜索到的最优值来...原创 2019-07-04 09:44:04 · 5477 阅读 · 0 评论 -
最优化算法----模拟退火+Python实现
基本模型模拟退货算法可以分解为解空间、目标函数和初始解三部分基本思想求一个函数的最优解可以通过贪心算法获得其最优解,但有可能是局部最有解,而不是全局最优解。为了解决这一问题,产生了模拟退火算法,该算法是在搜索的过程中加入了随机的因素,以一定的概率接受比当前解要差的解,因此有可能会跳出这个局部最优解,达到全局最优解。基本步骤初始化:初始温度 TTT, 温度变化率 ΔT\Delta TΔT...原创 2019-06-28 16:58:54 · 4290 阅读 · 0 评论