编码序列

树的prufer编码

半城伤御伤魂 提交于 2020-04-08 04:42:11
prufer是无根树的一种编码方式,一棵无根树和一个prufer编码唯一对应,也就是一棵树有唯一的prufer编码,而一个prufer编码对应一棵唯一的树。 第一部分:树编码成prufer序列。 树编码成prufer序列的方式是:prufer序列初始为空。每次从树上选出一个编号最小的叶子节点,然后将与该叶子节点相邻的那个节点的编号写入prufer序列的末尾,之后从树上删掉这个叶子节点。循环这个步骤n-2次,最后得到一个长度为n-2的prufer序列(此时树中只有一条边,我们就不管它了)。 我们以下面这个树为例。 step1:编号最小的叶子节点为3,将与其相连的节点1加到prufer的末尾,并将3从树上删掉,此时prufer序列为(1),树变为如下: step2:编号最小的叶子节点为1,将与其相连的节点2加到prufer末尾,此时prufer序列为(1,2),并将节点1删掉,树变为如下: step3:编号最小的叶子节点为4,将与其相连的节点2加入到prufer的末尾,此时prufer序列为(1,2,2),并将节点4删掉,树变为如下: 此时,结束,我们得到了prufer序列为(1,2,2)。 第二部分:由prufer序列得到树。首先,将每个节点的度数设为1加上该节点在prufer序列中出现的次数。然后以下循环执行n-2次。第i次循环,选择此时度数为1的编号最小的节点u

信息抽取——实体关系联合抽取

杀马特。学长 韩版系。学妹 提交于 2020-03-04 05:24:23
目录 简介 实体关系联合抽取 Model 1: End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures Model 2: Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme Model 3: Joint entity recognition and relation extraction as a multi-head selection problem Model 4: 基于DGCNN和概率图的轻量级信息抽取模型 Model 5: Entity-Relation Extraction as Multi-turn Question Answering Model 6: A Novel Hierarchical Binary Tagging Framework for Joint Extraction of Entities and Relations 小结 简介 通常,早期的信息抽取将实体抽取和关系抽取看作串联的任务,这样的串联模型在建模上相对更简单,但这样将实体识别和关系抽取当作两个独立的任务明显会存在一系列的问题: 两个任务的解决过程中没有考虑到两个子任务之间的相关性

基因组注释

≯℡__Kan透↙ 提交于 2020-02-16 01:46:21
基因组注释主要包括四个研究方向:重复序列的识别;非编码RNA的预测;基因结构预测和基因功能注释。我们将分别对这四个领域进行阐述。 1 重复序列的识别。 1.1 重复序列的研究背景和意义:重复序列可分为 串联重复序列 (Tendam repeat)和 散在重复序列 (Interpersed repeat)两大类。其中串联重复序列包括有微卫星序列,小卫星序列等等;散在重复序列又称转座子元件,包括以DNA-DNA方式转座的DNA转座子和反转录转座子(retrotransposon)。常见的反转录转座子类别有LTR,LINE和SINE等。 1.2 重复序列识别的发展现状:目前,识别重复序列和转座子的方法为 序列比对和从头预测 两类。序列比对方法一般采用Repeatmasker软件,识别与已知重复序列相似的序列,并对其进行分类。常用Repbase重复序列数据库。从头预测方法则是利用重复序列或转座子自身的序列或结构特征构建从头预测算法或软件对序列进行识别。从头预测方法的优点在于能够根据转座子元件自身的结构特征进行预测,不依赖于已有的转座子数据库,能够发现未知的转座子元件。常见的从头预测方法有Recon,Piler,Repeatscout,LTR-finder,ReAS等等。 1.3 重复序列识别的研究内容:获得组装好的基因组序列后,我们首先预测基因组中的重复序列和转座子元件。一方面

Leetcode(Java)-89. 格雷编码

半城伤御伤魂 提交于 2020-02-16 01:21:20
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 - 3 10 - 2 对于给定的 n,其格雷编码序列并不唯一。 例如,[0,2,3,1] 也是一个有效的格雷编码序列。 00 - 0 10 - 2 11 - 3 01 - 1 示例 2: 输入: 0 输出: [0] 解释: 我们定义格雷编码序列必须以 0 开头。 给定编码总位数为 n 的格雷编码序列,其长度为 2n。当 n = 0 时,长度为 20 = 1。 因此,当 n = 0 时,其格雷编码序列为 [0]。 思路:镜像添加 class Solution { public List<Integer> grayCode(int n) { List<Integer> res = new ArrayList<>(); res.add(0); for(int i=1;i<=n;i++) { int j = (int)Math.pow(2,i-1); while(j > 0) { res.add(res.get(j-1)+(int)Math.pow(2,i-1)); j--; } } return res; } } 来源: CSDN

LZW算法详解

可紊 提交于 2020-01-28 16:55:43
1. LZW算法简介 LZW算法又叫“串表压缩算法”就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩,是一种无损压缩算法。 LZW压缩有三个重要的对象:数据流(CharStream)、编码流(CodeStream)和编译表(String Table)。在编码时,数据流是输入对象(文本文件的据序列),编码流就是输出对象(经过压缩运算的编码数据);在解码时,编码流则是输入对象,数据流是输出对象;而编译表是在编码和解码时都须要用借助的对象。 其中在编码和解码时编译表(下面称为字典),是中间产物,在编码和解码后删除即可。 2. LZW编码算法手动模拟 现在我们先假设一个简单的场景以便我们理解,假设我们现在对 ILOVEYOUILOVEYOU 这一串只有 大写字母A-Z的序列进行压缩。 因为这段序列中只有字母A-Z那么我们只需要下面这个字典就可以一定可以编码这个序列。 Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Seq A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 现在我们设想如果字典里有我们要编码的序列的子序列的话,例如字典中有(27,“YOU”)这一项,那么我们编码序列的长度与原来相比肯定更优

leetcode89.格雷编码

醉酒当歌 提交于 2019-12-12 16:20:54
1.题目描述 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 - 3 10 - 2 对于给定的 n,其格雷编码序列并不唯一。 例如,[0,2,3,1] 也是一个有效的格雷编码序列。 00 - 0 10 - 2 11 - 3 01 - 1 示例 2: 输入: 0 输出: [0] 解释: 我们定义格雷编码序列必须以 0 开头。 给定编码总位数为 n 的格雷编码序列,其长度为 2n。当 n = 0 时,长度为 20 = 1。 因此,当 n = 0 时,其格雷编码序列为 [0]。 2.解题思路 通过归纳数字规律可以发现,n+1的结果是:n的结果加上(n的结果逆序中的每一数字+2^n) 3.代码实现 class Solution(object): def grayCode(self, n): """ :type n: int :rtype: List[int] """ i = 0 res = [0] base = -1 while i < n: base += 1 tmp = res[::-1] for j in tmp: res.append(j+2**base) i+=1

哈夫曼编码

匿名 (未验证) 提交于 2019-12-03 00:21:02
In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encountering a big problem: the Huffman codes are NOT unique. For example, given a string "aaaxuaxz", we can observe that the frequencies of the characters 'a', 'x', 'u' and 'z' are 4, 2, 1 and 1, respectively. We may either encode the symbols as {'a'=0, 'x'=10, 'u'=110, 'z'=111}, or in another way as {'a'=1, 'x'=01, 'u'=001, 'z'=000}, both compress the

leetcode 89. 格雷编码

蓝咒 提交于 2019-11-26 10:56:49
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 - 3 10 - 2 对于给定的 n,其格雷编码序列并不唯一。 例如,[0,2,3,1] 也是一个有效的格雷编码序列。 00 - 0 10 - 2 11 - 3 01 - 1 示例 2: 输入: 0 输出: [0] 解释: 我们定义格雷编码序列必须以 0 开头。 给定编码总位数为 n 的格雷编码序列,其长度为 2n。当 n = 0 时,长度为 20 = 1。 因此,当 n = 0 时,其格雷编码序列为 [0]。 class Solution: def grayCode(self, n: int) -> List[int]: res = [0] i = 0 while i < n:#从2的0次方开始, res_inv = res[::-1]#求res的反向list res_inv = [x + pow(2,i) for x in res_inv] res = res + res_inv i += 1 return res 来源: https://www.cnblogs.com/xiaotongtt/p/11318383