算法设计与分析:动态规划(2) - 序列联配问题(最优对齐方案)

本文介绍了序列联配问题,利用动态规划求解字符串间的最优对齐,从而计算最小编辑距离。通过对字符串的匹配、插入、删除操作,找到最佳匹配策略。动态规划算法通过构建决策矩阵,回溯找到最优解,并探讨了在实际应用中如何依据概率做出次优决策。
摘要由CSDN通过智能技术生成

本文参考UCAS卜东波老师算法设计与分析课程撰写

前言

本文依然围绕动态规划问题展开,会详细描述动态规划在序列联配问题中的应用,通过这个问题引出高级动态规划,以及以算代存的方式减少动态规划占用的内存。

序列联配问题

问题描述与分析

  • 给你两个字符串序列 x = x 1 x 2 . . . x n x = x_1x_2...x_n x=x1x2...xn, y = y 1 y 2 . . . y n y = y_1y_2...y_n y=y1y2...yn,计算联配 ( x ′ , y ′ ) (x',y') (x,y),使得编辑操作数目 s ( x ′ , y ′ ) s(x',y') s(x,y)最小
    首先解读一下问题,想象这样一个场景,我们拥有一个字典词库,对于用户输入的单词S(可能输错),我们需要尽快地找到词库中与它最像的单词(动态规划保证这一过程尽可能快),修正用户的输入。

    为此我们引入“对齐”的概念。拿到两个字符串T&S,我们对字符串每个对应位置的元素做以下判断:

    • S ′ [ i ] S'[i] S[i]=’-’: S [ i ] S[i] S[i]相比于 T [ i ] T[i] T[i] 少了一个字母,称作删除
    • T ′ [ i ] T'[i] T[i]= ‘-’: S ′ [ i ] S'[i] S[i]相比于 T [ i ] T[i] T[i]多了一个字母,称作插入
    • S [ i ] S[i] S[i] T [ i ] T[i] T[i]位置元素相同,称作匹配

    简而言之,就是给了 ( S , T ) (S,T) (S,T)要转换到 ( S ′ , T ′ ) (S',T') (S,T),使得 ( S ′ , T ′ ) (S',T') <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值