赞
踩
最坏时间复杂度 O ( n 2 l o g n ) O(n^2logn) O(n2logn)
最长公共平方子序列(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
在两个字符序列中,寻找一个公共子序列,并且该公共子序列还可以通过一个分割点分割成两个相同的子序列。
首先明确一点,对于原字符序列中寻找的公共子序列,可以是不连续的,即对原字符序列擦除任意数量的字符可以得到的顺序序列。
对于组合优化问题中,平方子串属于约束,平方子串的长度是目标
对于输入的字符串,会智能的选择一个合适的分割点,然后将一个字符串分为两份,以输入两个字符串为例:
存在两个关键的算法:
一种候选前K个最优解的搜索算法(逻辑树形结构)
在第一步选择样本时,选择前K个高概率的搜索样本,然后每个样本继续下一步选择(选择一个),即在第一步选择K个,后续的选择还是1个最高概率样本。
假设,集合中有N个,设置为K,输出序列长/时间步为T。则时间复杂度为 O ( K N T ) O(KNT) O(KNT)
偏置随机关键遗传算法
精英个体会和突变个体保留到下一代,下一代中剩下的 p S i z e − p e − p m p_{Size}-p_e-p_m pSize−pe−pm个个体来自于父代中的亲本交配生成。
将每个个体的基因解码映射到LCS问题的可行解上
个体优化进入了停止期,表明多个个体在存在多个同样适应度的搜索区域-瓶颈期,缺乏引导搜索,会影响下一步优化性能。为了区分这些个体,引入了第二个目标函数。
论文中说最好费时间的操作是对于个体的解码操作。
RANDOM 基准测试集:
来源: 从之前的工作 [33] 中获得,用于评估 RVNS 算法。
特点: 由均匀随机生成的字符串组成,包括 450 个测试实例和 135 个调整实例。
字符串长度: n ∈ {100, 500, 1000}
字符串数量: m ∈ {10, 50, 100, 150, 200}
字母表大小: |Σ| ∈ {4, 12, 20}
NON-RANDOM 基准测试集:
来源: 新生成的基准测试集,用于测试算法在不同分布的实例上的性能。
特点: 由非均匀字符串组成,包括 90 个测试实例和 45 个调整实例。
字符串长度: n ∈ {100, 500, 1000}
字符串数量: m ∈ {10, 50, 100, 150, 200}
字符串类型: type ∈ {1, 2},分别表示不同的模式植入方式。
字母表大小: 根据字符串长度设置,n = 100 时为 12,n = 500 时为 15,n = 1000 时为 18。
BACTERIA 基准测试集:
来源: 从 [17] 中获得,用于测试算法在真实世界实例上的性能。
特点: 由细菌 DNA 分子组成,包括 35 个测试实例。
字符串数量: m ∈ [2, 383]
字符串长度: 455 ≤ |s_i| ≤ 1847
字母表大小: |Σ| = 4
gv=1,所有的贪婪信息都设置为0.5,设置为中间位置
gv=2,依次找出左右字符差距最小的分割点,切割点能够最大化切割两侧每种字符数量的总体平衡
使用两个数组,分别统计,然后求差
gv=3,找一个字符串的切点的两层的LCS最长,寻找这个切点,其最大化每个字符串切割后两部分之间的LCS长度
of2的值越小,越符合期望。
这个启发式函数提供了一个简单上界,用于估计解的期望长度。它计算每个字符在所有输入字符串剩余部分的最大出现次数的总和。
具体来说,对于字符集 Σ中的每个字符
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。