Skip to main content
QUICK REVIEW

[논문 리뷰] Fast and Simple Computation of All Longest Common Subsequences

Ronald I. Greenberg|arXiv (Cornell University)|2002. 11. 01.
Algorithms and Data Compression참고 문헌 19인용 수 5
한 줄 요약

이 논문은 두 입력 시퀀스의 모든 가장 긴 공통 부분수열(LCS) 임bedding을 효율적으로 열거할 수 있도록 하는, 간단한 O(mn) 알고리즘을 제안한다. 동적 프로그래밍과 윤곽 기반 연결 리스트를 활용하여, 선형 시간 전처리 후 출력 크기에 비례하는 시간에 모든 고유한 LCS 또는 모든 임bedding을 생성한다.

ABSTRACT

This paper shows that a simple algorithm produces the {\em all-prefixes-LCSs-graph} in $O(mn)$ time for two input sequences of size $m$ and $n$. Given any prefix $p$ of the first input sequence and any prefix $q$ of the second input sequence, all longest common subsequences (LCSs) of $p$ and $q$ can be generated in time proportional to the output size, once the all-prefixes-LCSs-graph has been constructed. The problem can be solved in the context of generating all the distinct character strings that represent an LCS or in the context of generating all ways of embedding an LCS in the two input strings.

연구 동기 및 목표

  • 두 입력 시퀀스에 대해 모든 고유한 가장 긴 공통 부분수열(LCS) 문자열과 그 임bedding을 효율적으로 열거하는 문제를 해결한다.
  • 중복을 생성하고 후처리를 통해 제거해야 하는 비효율적인 단순 백트래킹 방법의 한계를 극복한다.
  • 모든 접두사 쌍에 대해 LCS와 임bedding을 빠르게, 출력에 민감한 방식으로 열거할 수 있도록 지원하는 데이터 구조인 '모든 접두사-LCS 그래프'를 개발한다.
  • 고유한 LCS 문자열과 각 LCS에 대한 다수의 임bedding을 모두 처리할 수 있는 통합 프레임워크를 제공하며, 최소한의 오버헤드를 유발한다.
  • 전처리에 대해 최적의 시간 복잡도 O(mn)을 확보하고, 열거에 대해 출력 크기에 비례하는 시간 복잡도를 달성하여 기존 방법보다 향상시킨다.

제안 방법

  • 표준 재귀식을 사용하여 동적 프로그래밍 테이블 L[i,j]를 구성한다: a_i = b_j 이면 L[i,j] = L[i-1,j-1]+1, 그렇지 않으면 max(L[i-1,j], L[i,j-1]).
  • 각 셀 [i,j]가 동일한 등수(L[i,j])와 이전 또는 같은 인덱스를 가진 매칭을 유지하는 연결 리스트(head, tail, pretail)를 갖는 '모든 접두사-LCS 그래프'를 구축한다.
  • 윤곽 기반 순회를 사용한다: 매칭은 등수별로 그룹화되고, 자이거-조르드 컨투어를 통해 순서를 유지하고 중복을 방지한다.
  • 이중 단계 병합을 적용한다: 각 [i,j]에 대해, L[i,j]와 같은 등수를 가진 [i-1,j]와 [i,j-1]의 인접 리스트만 병합하여 중복 임bedding을 방지한다.
  • 중복 경로를 제거하기 위해 반지배성 및 지배성 조건을 강제 적용하여 각 LCS 임bedding이 정확히 한 번만 생성되도록 보장한다.
  • 자기 참조 포인터와 연결 리스트 포인터(head, tail, pretail)를 사용하여 동적 프로그래밍 순회 중에 인접 리스트를 효율적으로 유지하고 업데이트한다.

실험 결과

연구 질문

  • RQ1중복을 생성하지 않고 고유한 모든 LCS 문자열과 그 임bedding을 계산할 수 있는 단순하고 효율적인 알고리즘이 존재하는가?
  • RQ2모든 접두사 쌍에 대해 O(mn) 전처리 시간 내에 모든 LCS와 임bedding을 출력에 민감한 방식으로 열거할 수 있는 데이터 구조를 구축하는 것이 가능한가?
  • RQ3표준 LCS 동적 프로그래밍 테이블을 어떻게 보완하여 모든 임bedding을 생성하면서도 지수적 증가를 방지할 수 있는가?
  • RQ4매칭의 구조적 성질(예: 지배성, 윤곽)을 어떻게 활용하여 중복 경로 생성을 최소화할 수 있는가?
  • RQ5선형 시간 전처리 단계 이후에 모든 LCS 임bedding을 출력 크기에 비례하는 시간 내에 열거할 수 있는가?

주요 결과

  • 모든 접두사-LCS 그래프는 간단한 동적 프로그래밍 접근법과 연결 리스트 보강을 통해 O(mn) 시간에 구성할 수 있다.
  • 그래프가 구축된 후에는 어떤 접두사 쌍 A_i와 B_j에 대해서도 고유한 모든 LCS 또는 LCS의 모든 임bedding을 출력 크기에 비례하는 시간에 열거할 수 있다.
  • 인접 리스트 구축 과정에서 반지배성 및 지배성 조건을 강제 적용하여 중복 열거를 방지한다.
  • 이 방법은 고유한 LCS 문자열 생성과 해당 문자열의 모든 임bedding 열거를 모두 지원하며, 후처리 중복 제거가 필요 없다.
  • 기본 백트래킹 방법에 의해 생성된 결과와 동일한 출력을 내는 C 구현체가 제공되어 정확성이 확인되었다.
  • 윤곽 기반 연결과 pretail 포인터의 사용으로 인해 인접 리스트에 보관되는 것은 오직 관련성 있고 중복이 없는 경로들만 유지된다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.