最长公共子序列定义
2015-10-14 09:14
274 查看
最长公共子序列(Longest Common Subsequence,LCS)
flyfish 2015-8-20
假定我们有如下两个序列
S1:
1 2 3 4 5 6
S2:
4 5 6 7 8 9
S1和S2有一个最长公共子序列为
4 5 6
一个子序列不一定必须是连续的,即中间可以被其他字符分开,但它们的顺序必须正确的。
最长公共子序列不一定只有一个。
S1:
h e l l o
S2:
l e o n
S1和S2有一个最长公共子序列为
eo
《算法导论》的描述
子序列(subsequence)
A subsequence of a given sequence is just the given sequence with zero or
more elements left out.
一个给定序列的子序列就是该给定序列中去掉零个或者多个元素。
left out 忽视,不考虑;被遗忘
leave out的过去时或者被动语态 被遗忘,删掉等
公共子序列(common subsequence)
Given two sequences X and Y, we say that a sequence Z is a common subsequence of X and Y if Z is a subsequence of both X and Y
给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则序列Z是X和Y的一个公共子序列。
最长公共子序列
X和Y的所有公共子序列中长度最长的公共子序列就是最长公共子序列。
Each subsequence of X corresponds to a subset of the indices {1,2,…,n} of X.
X has 2n subsequences。
X的每个子序列对应于X的下标集合{1,2,…,n}的一个子集。X共有2n个子序列。
为什么是2n?
排列组合解释
Combination [kɒmbɪ’neɪʃ(ə)n] 美 [,kɑmbɪ’neʃən]
组合数
Arrangement 英 [ə’reɪn(d)ʒm(ə)nt] 美 [ə’rendʒmənt]
排列数
排列
从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。
Amn=n(n−1)(n−2)...(n−m+1)
Amn=n!(n−m)!
组合
从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
Cmn=(n−1)(n−2)...(n−m+1)m!
Cmn=n!m!(n−m)!
Cmn=Cn−mn
(a+b)0=1
(a+b)1=a+b
(a+b)2=a2+2ab+b2
(a+b)3=a3+3a2b+3ab2+b3
…
(a+b)1=C01a+C11b
(a+b)2=C02a2+C12ab+C22b2
(a+b)3=C03a3+C13a2b+C23ab2+C33b3
(a+b)n当n为正整数时的展开式就是二项式定理(Binomial
Theorem)
binomial 英 [baɪ’nəʊmɪəl] 美 [baɪ’nomɪəl]
adj. 二项式的;二种名称的
n. [数] 二项式;二种名称
theorem 英 [‘θɪərəm] 美 [‘θiərəm]
n. [数] 定理;原理
二项式各项系数
1
1 1
1 2 1
1 3 3 1
…
形成了杨辉三角
Crn+Cr+1n=Cr+1n+1
a=1,b=1
C0n+C1n+C2n+…Cnn
flyfish 2015-8-20
假定我们有如下两个序列
S1:
1 2 3 4 5 6
S2:
4 5 6 7 8 9
S1和S2有一个最长公共子序列为
4 5 6
一个子序列不一定必须是连续的,即中间可以被其他字符分开,但它们的顺序必须正确的。
最长公共子序列不一定只有一个。
S1:
h e l l o
S2:
l e o n
S1和S2有一个最长公共子序列为
eo
《算法导论》的描述
子序列(subsequence)
A subsequence of a given sequence is just the given sequence with zero or
more elements left out.
一个给定序列的子序列就是该给定序列中去掉零个或者多个元素。
left out 忽视,不考虑;被遗忘
leave out的过去时或者被动语态 被遗忘,删掉等
公共子序列(common subsequence)
Given two sequences X and Y, we say that a sequence Z is a common subsequence of X and Y if Z is a subsequence of both X and Y
给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则序列Z是X和Y的一个公共子序列。
最长公共子序列
X和Y的所有公共子序列中长度最长的公共子序列就是最长公共子序列。
Each subsequence of X corresponds to a subset of the indices {1,2,…,n} of X.
X has 2n subsequences。
X的每个子序列对应于X的下标集合{1,2,…,n}的一个子集。X共有2n个子序列。
为什么是2n?
排列组合解释
Combination [kɒmbɪ’neɪʃ(ə)n] 美 [,kɑmbɪ’neʃən]
组合数
Arrangement 英 [ə’reɪn(d)ʒm(ə)nt] 美 [ə’rendʒmənt]
排列数
排列
从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。
Amn=n(n−1)(n−2)...(n−m+1)
Amn=n!(n−m)!
组合
从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
Cmn=(n−1)(n−2)...(n−m+1)m!
Cmn=n!m!(n−m)!
Cmn=Cn−mn
(a+b)0=1
(a+b)1=a+b
(a+b)2=a2+2ab+b2
(a+b)3=a3+3a2b+3ab2+b3
…
(a+b)1=C01a+C11b
(a+b)2=C02a2+C12ab+C22b2
(a+b)3=C03a3+C13a2b+C23ab2+C33b3
(a+b)n当n为正整数时的展开式就是二项式定理(Binomial
Theorem)
binomial 英 [baɪ’nəʊmɪəl] 美 [baɪ’nomɪəl]
adj. 二项式的;二种名称的
n. [数] 二项式;二种名称
theorem 英 [‘θɪərəm] 美 [‘θiərəm]
n. [数] 定理;原理
二项式各项系数
1
1 1
1 2 1
1 3 3 1
…
形成了杨辉三角
Crn+Cr+1n=Cr+1n+1
a=1,b=1
C0n+C1n+C2n+…Cnn
相关文章推荐
- nodejs 遍历文件夹,文件
- 版本控制工具(CVS、SVN、GIT)简介
- C#中this在构造函数时的使用
- spring事务的传播特性
- 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了
- https原理及tomcat配置https方法
- 移动开发 细究MVVM
- Android 自定义TextView 实现文字对齐排版且支持点击划词
- MySQL中join多个表的情况
- Webform中linq to sql多条件查询(小练习)
- 你真的会用ListView吗?
- Java HashMap 原理
- 软件开发项目风险管理的几点体会
- Java读取Properties文件的六种方法 .
- 链表就地逆置
- 为什么使用第三方轻量级框架FMDB?
- opengl es学习笔记2(着色器补充,示例)
- Objective-C内存管理详解——点语法的内存管理
- python os模块学习
- Android ListView 中文API