最长递增子序列

✍ dations ◷ 2025-11-23 15:43:07 #组合数学,动态规划

在计算机科学中,最长递增子序列(longest increasing subsequence)问题是指,在一个给定的数值序列中,找到一个子序列,使得这个子序列元素的数值依次递增,并且这个子序列的长度尽可能地大。最长递增子序列中的元素在原序列中不一定是连续的。许多与数学、算法、随机矩阵理论(英语:random matrix theory)、表示论相关的研究都会涉及最长递增子序列。解决最长递增子序列问题的算法最低要求O( log )的时间复杂度,这里表示输入序列的规模。

对于以下的原始序列

最长递增子序列为

值得注意的是原始序列的最长递增子序列并不一定唯一,对于该原始序列,实际上还有以下两个最长递增子序列

最长递增子序列问题与最长公共子序列问题密切相关,后者具有动态规划解决方案(时间复杂度为O):序列S的最长递增子序列是S和T的最长公共子序列,其中T是对S进行排序的结果。但对于特殊情况,输入是整数 1, 2, ..., , 的排列,解决方案可以进一步改进,从而使时间复杂度降为O( log ) 。

排列图(permutaion graph)中的最大团是由'定义该图的排列中最长的递减子序列'定义的, 求最长的递减子序列在计算复杂度上(通过对所有数取它的负数)等同于求最长的递增子序列。 因此,最长递增子序列算法可用于有效地解决排列图中的分团问题。

下面概述的算法使用数组和二分查找算法有效地解决了最长递增子序列问题。 它依次处理序列元素,保存当前找到的最长的递增子序列, 比如: ,X ]。在处理X之后,算法会将值存储在两个数组中:

另外,该算法还存储了一个变量L,该变量L表示到目前为止找到的最长的递增子序列的长度。 下面的算法使用基于零的编号,为了清楚起见,M用M 填充,而M 未使用,因此M 对应于长度j的子序列。 实际的实现可以跳过M 并相应地调整索引。

请注意,在算法的任何时候,序列

是递增的。 因为,如果长度的子序列以X ]结尾,则长度的子序列以较小的值结尾:即以X 结尾的子序列 ]。 因此,我们可以使用二分查找在时间内完成搜索。

伪代码如下:

P = array of length NM = array of length N + 1L = 0for i in range 0 to N-1:    // Binary search for the largest positive j ≤ L    // such that X] <= X    lo = 1    hi = L    while lo ≤ hi:        mid = ceil((lo+hi)/2)        if X] < X:            lo = mid+1        else:            hi = mid-1    // After searching, lo is 1 greater than the    // length of the longest prefix of X    newL = lo    // The predecessor of X is the last index of     // the subsequence of length newL-1    P = M    M = i        if newL > L:        // If we found a subsequence longer than any we've        // found yet, update L        L = newL// Reconstruct the longest increasing subsequenceS = array of length Lk = Mfor i in range L-1 to 0:    S = X    k = Preturn S

由于该算法对每个序列元素都执行二分查找,因此时间复杂度为O( log )。 弗雷德曼 Fredman (1975)讨论了该算法的一种变体,他将其归功于高德纳。 在他研究的变体中,该算法在进行二分查找之前,测试每个值X 是否可以在常数时间内扩展当前最长的递增序列。 通过这种修改,算法在最坏的情况下只会进行 log2 − log2log2 + O()个比较,对于比较算法(最高为O() 项中的恒定因子)而言,这是最佳选择。

相关

  • 黑粉菌纲条黑粉菌目 Urocystales 黑粉菌目 Ustilaginales黑粉菌纲(学名:Ustilaginomycetes)是担子菌门黑粉菌亚门下的一个纲。这一纲中的真菌是真正意义上的黑粉菌(smut fungi)。它们已知
  • 阿尔波特·班杜拉阿尔波特·班杜拉(英语:Albert Bandura,1925年12月4日-),出生于加拿大Mundare,著名心理学家,以其社会学习论著称。班杜拉毕业于不列颠哥伦比亚大学 ,1951年获得爱荷华大学硕士学位,次
  • 俄罗斯地理学会俄罗斯地理学会 (Ру́сское географи́ческое о́бщество «РГО»)是俄罗斯的一个地理学的学会,总部位于圣彼得堡。该学会支持探险和地理研究
  • 李芳远朝鲜太宗(朝鲜语:조선 태종/朝鮮 太宗 Joseon Taejong;1367年-1422年),即朝鲜太宗恭定大王、朝鲜恭定国王,朝鲜王朝的第三位国王,1400年至1418年在王位,1418年至1422年在太上王位。名
  • 台大医院失误移植艾滋病患器官案柯文哲系列柯P新政柯P新政建设柯文哲现象争议政党歌曲其它相关台大医院失误移植艾滋病患器官案,又称台大医院艾滋器捐误植案、艾滋器捐案,2011年8月24日在台湾发生的医疗事故
  • 阿尔克伊1法国统计部门在计算土地面积时,不计算面积大于1平方公里的湖泊、池塘、冰川和河口。阿尔克伊(法语:Arcueil)是法国法兰西岛大区马恩河谷省的一个市镇,属于拉伊莱罗斯区。该市镇2
  • 大呼罗珊大呼罗珊(波斯语:خراسان‎),中亚和西亚历史上的一个地区,大概包括今伊朗东北部、阿富汗和土库曼斯坦大部、塔吉克斯坦全部、乌兹别克斯坦东半部的吉尔吉斯斯坦小部分各一部
  • 麦氏点麦氏点(McBurney 点)通常以脐与右髂前上棘(英语:anterior superior iliac spine)连线的三分之一处为标志。这一点大致相当于阑尾和盲肠的连接处(或称阑尾根部)。在麦氏点的压痛被称
  • 卷是经常在一些丛书中使用的一个数量单位,指一套书中的一部分(经常是其中一本),也使用在期刊等连续出版物中,作为期刊的连续性标识符,常常是一年一卷。图书卷数的划分以及每卷的大
  • 班夫山地电影节班夫山地电影节(英语:Banff Mountain Film Festival)是一年一度举行的电影节,主题为表彰关于山地文化、运动和环境的电影短片和记录片。电影节开始于1976年,由班夫中心组织策划。