问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

matlab 最长公共子序LCS问题编程问题

发布网友 发布时间:2022-04-12 14:29

我来回答

1个回答

热心网友 时间:2022-04-12 15:58

function [D, dist, aLongestString] = LCS(X,Y)
%%%Calculates the longest common substring between to strings.
%%%Code written by David Cumin
%%%INPUT
%%%X, Y - both are strings e.g. 'test' or 'stingtocompare'
%%%OUTPUT
%%%D is the substring over the length of the shortest string
%%%dist is the length of the substring
%%%aLongestString is a sting of length dist (only one of potentially many)

%%%Make matrix
n =length(X);
m =length(Y);
L=zeros(n+1,m+1);
L(1,:)=0;
L(:,1)=0;
b = zeros(n+1,m+1);
b(:,1)=1;%%%Up
b(1,:)=2;%%%Left

for i = 2:n+1
    for j = 2:m+1
        if (X(i-1) == Y(j-1))
            L(i,j) = L(i-1,j-1) + 1;
            b(i,j) = 3;%%%Up and left
        else
            L(i,j) = L(i-1,j-1);
        end
        if(L(i-1,j) >= L(i,j))
            L(i,j) = L(i-1,j);
            b(i,j) = 1;%Up
        end
        if(L(i,j-1) >= L(i,j))
            L(i,j) = L(i,j-1);
            b(i,j) = 2;%Left
        end
    end
end
L(:,1) = [];
L(1,:) = [];
b(:,1) = [];
b(1,:) = [];
dist = L(n,m);

D = (dist / min(m,n));
if(dist == 0)
    aLongestString = '';
else
    %%%now backtrack to find the longest subsequence
    i = n;
    j = m;
    p = dist;
    aLongestString = {};
    while(i>0 && j>0)
        if(b(i,j) == 3)
            aLongestString{p} = X(i);
            p = p-1;
            i = i-1;
            j = j-1;
        elseif(b(i,j) == 1)
            i = i-1;
        elseif(b(i,j) == 2)
            j = j-1;
        end
    end

    if ischar(aLongestString{1})
        aLongestString = char(aLongestString)';
    else
        aLongestString = cell2mat(aLongestString);
    end
end

end

示例
>> [D dist str] = LCS('ACGTAACCT', 'GGACTAGG');
>> dist

dist =

     4

>> str

str =

GACT

求解LCS的动态规划算法请自行参阅算法设计书。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么网址更新火影忍者集数最快 如果你跟男朋友分手了,他的回答是顺其自然这是什么意思,我该怎么办... 一个女人像男人提分手男人说顺其自然是什么意思 上线两年《X-HERO》如何做到登顶多个国家榜首的? 龙武游戏怎么样费钱吗 Q1游戏公司产品 中国现有什么银行 x.最近六个月的通话记录? 爱奇艺会员哪里买便宜 爱奇艺会员免费领取 iphone4 怎样删除原来的旧凯立德地图 笔记本不清灰和换硅胶对电脑效能影响大吗? 笔记本如果长时间不清灰,里面的灰会损坏到cpu和显卡吗 用和密码能在电脑上登陆微信吗? 电脑长时间不清灰会把硬件烧坏吗 笔记本出现什么情况说明该清理灰尘了,对了长期不清理灰尘会怎么样? 有防水插线板吗? QQ密保卡怎么打开? 笔记本电脑清灰晚管不卡吗? 插线板是什么垃圾 怎样下载QQ密保卡 qq密保卡解绑 页面打不开 笔记本电脑不清理灰尘会怎样?为什么? 插线板的税收编码分类是什么 qq密保卡坐标无法正常下载显示怎么办? 常用插线板有哪些类型 QQ三国密保卡下载到手机打不开,手机是小米1S智能机,已下载QQ影音。 QQ密保卡下载了记好网址了换个地方就打不开了 在网上下载密保卡绑定qq?怎么不能用啊? 我下载了QQ密保卡为什么打不开啊 快播 QQ影音 浏览器都打不开 显示格式不正确或没有解码器 我电脑是XP的 qq密保卡下载到电脑上了.打不开 swf什么格式啊 小米max3手机卡里面卡了个针修一下多少钱? 小米Max3换个屏保怎么输入开机密码打不开 小米max3维修部在哪里? 小米max低配版换了顶配版的主板,怎么刷机 小米Max3摔地上后黑屏关机,按电源键无法开机,摘掉指纹排线能正常开机使用,是排线短路了吗? 5、word文档中可以插入哪些图形对象? wrod中插入的多个对象(word文档),如何批量保存? 在Word文档中有哪些对象是以图形形式存放在Word中 什么是对象?在Word2000中对象插入的嵌入方式和链接方式是什么意思? 雷克萨斯倒车屏幕显示屏怎么调亮度? 上汽大通的显示器怎么调亮度? 车载mp5显示器亮度怎么调 最长不下降子序列 C++ 粉色bf风的外套里面可以搭白色连帽卫衣吗 粉色外套配绿色卫衣好看吗? 外套颜色米色可以和米白色卫衣或者粉色卫衣搭一起吗?外套米色和象牙白哪个百搭? 粉色卫衣可以搭配粉色外套吗 篮球运动里打手犯规怎么判? 篮球的打手犯规是什么 在篮球里,打手犯规的定义是什么?球投离手后打手算不算犯规?还有,移动单挡的定义又是什么?