주어진 문자열 목록을 찾을 모든 쌍$(x,y)$어디$x$은 시퀀스의$y$.가능한 것보다 더 잘$O(n^2)$?

cs.stackexchange https://cs.stackexchange.com/questions/121670

문제

고려 다음과 같은 문제의 알고리즘:주어진 문자열 목록 $L=[s_1,s_2,\점,s_n]$, 우리는지 알고 싶 모든 쌍 $(x,y)$$x$ 은 시퀀스의 $y$.우리는 할 수 있다고 가정한 모든 문자열의 길이는 최대 $m$, 디 $m << n$ 모든 유한 알파벳 $\Sigma$$|\Sigma| << n$.우리는 또한다고 가정하 쌍의 수 $(x,y)$$x$ 은 시퀀스의 $y$ 보다 훨씬 작 $n$.

사소한 알고리즘 것이:

1. foreach x in L:
2.   foreach y in L:
3.      if x is subsequence of y:
4.         OUTPUT x,y

그러나,이것은 복잡성 $O(n^2\cdot m)$ -나는 호기심을 알고 있는지 여부를 빨리 알고리즘(빠르게 주어지는 쌍의 수 $(x,y)$ 보다 훨씬 작 $n$, 다,그래서 예를 들어 알고리즘과 복잡도에 따라 수 출력 쌍).

이 질문에는 이에 따라하 이 질문, 에 대한 동일한 문제만을 위한 하위 문자열(지 시간이 걸립).가 Aho-Corasick 알고리즘에 내 문제를 해결이 완벽하게-가 모든 페이지에 터치 활성화 요소이지만 시간이 걸립?

도움이 되었습니까?

해결책

아니,그것은 가능하면 더 나은 강수시설(세스)은 실패합니다.면 우리는 이 문제를 해결할 수 있었다보다 상당히 빠르 $O(n^2)$ 우리는 즉시 얻을 훨씬 더 빨리 알고리즘 해결하기 위한 NP-complete 문제 Satisfiability.이 경우에도 마찬가지 $m$ 약간 더보 $\로그(n)$ 과하는 경우 우리가 원하는지 여부를 결정한 쌍 $(x,y)$ 에 존재합니다.

보,예를 들어, 이러한 강의 notes 아래 3 절"꽉 낮은 범위에 대한 직교 벡터".증명과 유사한의 증거를 정리 2 에서 이러한 강의 메모입니다.

첫째,우리는 더 고려한 일반적인 문제의 주어진 두 개의 문자열 집합 $X,Y$, 을 찾는 일부 문자열에서 $X$ 은 시퀀스에서 문자열 $Y$.

주 SAT 식,우리는 분할 $n$ 변수로는 두 개의 동일한 세트의 $n/2$ 변수입니다.에 $\Sigma$ 우리는 캐릭터에 해당하는 모든 절입니다.에 $X$ 우리는 문자열을 추가한 모든 가능한 과제 전반의 변수 문자로에 해당하는 모든 조항 만족하지 않는 사람들에 의해 변수입니다.한편, $Y$, 우리는 문자열을 추가한 모든 할당을 하반기의 변수 문자를 위해 모든 조항을 만족하는 사람들에 의해 변수입니다.분명히,공식 satisfiable 는 경우에만 어떤 문자열에서 $X$ 은 시퀀스의 일부 문자열에서 $Y$.

는 경우 이 문제를 해결할 수 있습보다 상당히 빠르 $O(n^2)$, 다음,이것은 실질적으로 더 빠른 알고리즘에 대한 Satisfiability 보 $2^n$.가정에 문제가 해결할 수 있에 $O(n^{1.99})$ 시간을,그 다음 Satisfiability 해결할 수 있에 $(2^{n/2})^{1.99}=O(2^{0.996n})$ 는 모순은 사랑에 빠지게 됩니다.

에서 당신의 문제가 하나의 세트의 문자열 모든 수 있는 서브습니다.이것은 그러나지 않는 문제로,우리는 단순히 수정하는 문자열에서 우리의 인스턴스는 어떤 문자열 $Y$ 은 시퀀스의 다른 어떤 문자열은(예를 들어 모든 문자열 패딩 $Y$ 같은 길이),와 마찬가지로 패딩의 모든 문자열에 $X$ 동일한 길이로 다른 문자열에서 $X$ (그러나 실질적으로 보다 짧은 문자열에서 $Y$).

이것은 아마도 함께 할 수 있는 일정한 크기(가지 바이너리)알파벳만이 더 필요한 영리 인코딩이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top