论文笔记:A Biased Random Key Genetic Algorithm for Solving the Longest Common Square Subsequence Problem

A Biased Random Key Genetic Algorithm for Solving the Longest Common Square Subsequence Problem

论文引言中提到的几种算法

Hunt-Szymanski算法

最坏时间复杂度 O ( n 2 l o g n ) O(n^2logn) O(n2logn)

问题-LCSqS

最长公共平方子序列(the longest common square subsequence)是最长公共子序列的问题变种,在寻找两个字符串的最长公共子序列(其中字符可以不连续)的同时,要求满足是平方字符串。

平方字符串的定义: s s s= s 0 s_0 s0+ s 0 s_0 s0= [ s 0 ] 2 [s_0]^2 [s0]2

在两个字符序列中,寻找一个公共子序列,并且该公共子序列还可以通过一个分割点分割成两个相同的子序列。

首先明确一点,对于原字符序列中寻找的公共子序列,可以是不连续的,即对原字符序列擦除任意数量的字符可以得到的顺序序列。

对于组合优化问题中,平方子串属于约束平方子串的长度是目标

论文算法思路

对于输入的字符串,会智能的选择一个合适的分割点,然后将一个字符串分为两份,以输入两个字符串为例:

  1. 长字符串会被分成两个字串,两个字符串s_left和s_right
  2. s1=s1_left+s1_right;s2=s2_left+s2_right(通过算法可以找到一个合适的分割点:把最长公共串分割到两边)
  3. 切割后的子串两两对比,寻找子串中的最长公共子串,会得到四个解集{s1_left&s2_left,s1_left&s2_right,s1_right&s2_left,s1_right&s2_right}(因为算法的分割可以保证两个子串中的最长公共串一样)
  4. 对比解集中的所有最长公共子串,找到公共子串,即为解

存在两个关键的算法:

  1. BRKGA找到最优的切割点
  2. 波束搜索解决产生的LCS问题

主要算法

Beam Search

一种候选前K个最优解的搜索算法(逻辑树形结构)

在第一步选择样本时,选择前K个高概率的搜索样本,然后每个样本继续下一步选择(选择一个),即在第一步选择K个,后续的选择还是1个最高概率样本。

在这里插入图片描述

假设,集合中有N个,设置为K,输出序列长/时间步为T。则时间复杂度为 O ( K N T ) O(KNT) O(KNT)

BRKGA(Bais Random Keys Genetic Algorithm)

偏置随机关键遗传算法

策略参数
  • p m p_m pm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值