数据结构
xhj_enen
这个作者很懒,什么都没留下…
展开
-
C语言实现Huffman Tree(参考严蔚敏《数据结构》部分伪码)
Huffman树,又称最优二叉树,是一类带权路径最短的树,有着广泛的应用。Huffman树中没有度为1的节点,所以一棵有 n 个叶子节点的 Huffman 树中,总共有 2n-1 个结点。构建赫夫曼树的步骤:1)根据给定的 n 个权值 {w1,w2,w3,...,wn} 构成 n 棵二叉树的集合 F={T1,T2,T3,...,Tn},其中每棵二叉树 Ti 中只有一个带权为 wi 的根节点,其左右...原创 2018-03-26 11:53:15 · 824 阅读 · 1 评论 -
(图论)广度优先搜索(Breadth First Search, BFS)
描述最简单、直接的图搜索算法:从起点开始层层扩展第一层是离起点距离为1的第二层是离起点距离为2的…本质就是按层(距离)扩展,无回退。BFS算法分析1、算法流程:1、给定某起点 a ,将 a 放入缓冲区,开始搜索;2、过程:假定某时刻缓冲区内的节点为 abcabcabc,则访问节点 aaa 的邻接点 a1a2a3a_1 a_2 a_3a1a2a3,同时缓冲区变成 ...原创 2019-03-14 11:28:14 · 393 阅读 · 0 评论 -
Longest Common Subsequence
问题描述LCS 的定义:Longest Common Subsequence,最长公共子序列,即两个序列 X 和 Y 的公共子序列中,长度最长的那个,并且公共子序列不同于公共字串,公共子序列可以是不连续的,但是前后位置不变。LCS 的意义:求两个序列中最长的公共子序列的算法,广泛的应用在图形相似处理、媒体流的相似比较、计算生物学方面。生物学家常常用该算法进行基因序列比对,由此推测序列的结构...原创 2019-03-11 15:36:43 · 2870 阅读 · 0 评论 -
Longest Increasing Subsequence
问题描述最长递增子序列:给定一个长度为 N 的数组,找出一个最长的单调递增子序列。例如:给定数组{5,6,7,1,2,8},则其最长的单调递增子序列为{5,6,7,8},长度为4。问题分析一、可以将 LIS 问题转换为 LCS(Longest Common Subsequence) 问题进行求解。方法如下:原数组为 A{5,6,7,1,2,8}排序后为 A’{1,2,5,6,7,8}...原创 2019-03-11 15:51:33 · 210 阅读 · 0 评论 -
字符串编辑距离(Edit Distance)
一、问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之间,由一个转变成另一个所需的最少编辑操作次数。许可的编辑操作包括:将一个字符替换成另一个字符插入一个字符删除一个字符应用1. DNA分析:基因学的一个主要主题就是比较DNA序列并尝...原创 2019-03-11 17:05:22 · 1687 阅读 · 0 评论 -
(字符串)求一个字符串的全排列
一、问题描述给定字符串 S[0,…,N-1],设计算法,枚举 S 的全排列。二、问题分析全排列的问题规模是阶乘级的,而递归算法的时间复杂度就是用递归求的,所以考虑用递归来求解问题:分别以1,2,3,4作为首字符,剩余的字符串继续做全排列,即做递归。三、带重复字符的字符串的全排列带重复字符的全排列就是每个字符分别与它后面非重复出现的字符交换。即第i个字符与第j个字符进行交换之前,...原创 2019-03-11 21:57:55 · 1056 阅读 · 0 评论 -
(图论)最小生成树
问题描述在 n 个城市之间铺设光缆,以保证这n个城市中的任意两个城市之间都可以通信。由于铺设光缆的价格很高,且各个城市之间的距离不同,这就使得在各个城市之间铺设光缆的价格不同。那么如何选择铺设线路的方案,才能使费用最低呢?该问题就涉及到有权图的最小生成树问题。基本概念连通图:在无向图中,若任意两个顶点之间都有路径相通,则称该图为连通图。强联通图:在有向图中,若任意两个顶点之间都有路径相通...原创 2019-04-14 11:00:24 · 682 阅读 · 0 评论