고유 한 요소로 목록 거리 편집


12

리스트 사이의 레 벤슈 테인-거리 편집 거리는 잘 연구 된 문제입니다. 그러나 각 목록에서 요소가 두 번 이상 발생하지 않는 것으로 알려진 경우 가능한 개선 사항을 많이 찾을 수 없습니다 .

또한 요소가 비교 가능하고 정렬 가능한 것으로 가정합니다 (그러나 비교할 목록은 처음부터 정렬되지 않습니다).

O ( ( S , M , N ) S ) (S)을O(min(m,n)s)O(min(s,m,n)s)s

더 공식적으로

반복되는 문자가 없다는 약속으로 주어진 두 문자열 s, t \ in \ Sigma ^ * 사이의 편집 거리를 얼마나 효율적으로 계산할 수 s,tΣ있습니까?

Σ 는 매우 큰 알파벳입니다.


지금 당신의 질문은 무엇입니까; 페어 단위 편집 거리를 높이는 방법 또는 문자열 목록의 모든 페어 단위 거리를 빠르게 계산하는 방법은 무엇입니까?
라파엘

2
나는 사이 편집 거리를 계산하는 방법을 의심한다. 여기서 는 매우 큰 알파벳 위의 문자열 이며 우리는 또는 문자가 두 번 나타나지 않습니다. in (OP는 각 문자열을 문자 목록, 즉 요소 목록으로 나타냄). 그러나 이것은 확인이 필요합니다. s , t Σ Σ s ts,ts,tΣΣst
DW

예,이 경우 큰 알파벳은 데이터베이스 색인으로 구성되며 "문자열"s 및 t는 이러한 색인을 포함하는 목록입니다.
user362178

복잡성에 대해 궁금한 사용자의 경우 : 및 은 입력 문자열의 길이이고 는 실제 편집 거리이므로 복잡성에 포함됩니다. 각 편집 비용은 1로 간주되지만이 거리 (편집 수 ) 를 계산하는 데 적합하지 않을 수 있습니다. N S Smnss
Albert Hendriks

답변:


3

TL; DR : 개별 문자 만 삽입하고 삭제할 수있는 약간 더 제한적인 편집 거리는 두 문자열 (또는 하나만)에 고유 한 문자가있는 경우 선형 시간으로 계산 될 수 있습니다. 이것은 레 벤슈 테인 편집 거리에서 유용한 상한과 하한을 제공합니다.

편집 거리 및 가장 긴 공통 하위 시퀀스 삽입 / 삭제

Levenshtein 편집 거리는 단일 문자 삽입, 삭제 및 대체를 허용하며 각각에 1의 비용을 할당합니다. 우리가 삽입 및 삭제로만 제한하면 비슷한 대체 거리 측정 값을 얻습니다. 삽입 및 삭제를 사용하여 모방). 이보다 제한적인 편집 거리의 표준 이름을 모르므로 "편집 거리 삽입 / 삭제"라고합니다. 그것은 가장 긴 공통 서브 시퀀스 (LCS) 문제에 밀접하게 대응합니다. 여기서 우리는 각각 길이가 과 인 두 개의 문자열이 주어지며, 둘 모두에 나타나는 가장 긴 서브 시퀀스의 길이를 알고 싶습니다. 두 문자열에 LCSn L n + m - 2 LmnL그런 다음 편집 거리 삽입 삭제n+m2L .이를 보는 가장 쉬운 방법은 문자열을 정렬하여 LCS의 문자가 서로 쌓인 것처럼 보이고 LCS에없는 문자가 -간격의 반대쪽에 나타나도록하는 것입니다 캐릭터. 그러면 -맨 위 행에 삽입 -하고 맨 아래 행에 삭제하면 첫 번째 문자열을 두 번째 문자열로 편집 할 수 있습니다 . 예를 들면 다음과 같습니다.

-C-IRC-LE
T-RI-CKLE

여기서의 LCS CIRCLETRICKLE, ICLE길이 (4)를 가지며, 편집 거리 참 .6+724=5

가장 긴 서브 시퀀스 증가

이 우회의 이유는 시퀀스 중 하나 이상에 고유 한 문자 만 포함 된 경우 LCS (및 삽입 / 삭제 편집 거리)를 계산하는 매우 효율적인 방법이 있기 때문입니다.이 경우 LCS 문제는 다음과 같이 변환 될 수 있습니다. 시간 에서 해결 될 수 있는 가장 긴 증가 하는 서브 시퀀스 를 찾는 문제 . 두 개의 문자열 와 가 주어 지고 문자열 에 고유 한 문자가 있다고 가정하십시오 . 의 첫 번째 문자 이름 을 1로, 두 번째에서 2 등으로 이름을 바꾸면 테이블의 각 문자에 할당 한 숫자를 추적 할 수 있습니다. 그런 다음A B A A B O ( n + m log m ) A B n mO(nlogn)ABAAB이 표를 사용하여 문자의 이름을 바꿉니다 (즉, 첫 문자가 발생한 모든 항목이 A1 등으로 변경됨). 마지막으로, 우리는에서 가장 긴 하위 시퀀스를 찾습니다 B. 사이 LCS이 대응 A하고 B,과에서 우리는 바로 삽입 / 삭제 편집 거리가 계산할 수 있습니다. 와 길이가 각각 과 인 경우 필요한 총 시간은 입니다.O(n+mlogm)ABnm

레 벤슈 테인 경계 편집 거리

삽입 / 삭제 거리는 Levenshtein 거리의 상한을 명확하게 제공합니다 (삽입 / 삭제 거리 아래의 유효한 편집 작업 순서도 Levenshtein 편집 작업의 올바른 순서이므로). 삽입 / 삭제 편집 거리를 2로 나누면 최악의 경우 Levenshtein 편집 작업을 2 개의 삽입 / 삭제 편집 작업으로 변경할 수 있기 때문에 하한값을 얻게됩니다.

일반화

1977 년에 Hunt와 Szymanski는 가장 오래 걸리는 서브 시퀀스 알고리즘의 일반화로 볼 수있는 알고리즘을 개발했습니다. 두 문자열 사이에서 일치하는 문자 위치 쌍이 적을 때마다 효율적입니다. 이러한 쌍이 이면 알고리즘은 시간이 걸립니다. ( 한 문자열의 모든 문자가 다른 경우 유의하십시오 .)이 알고리즘은 전체 텍스트 행을 개별 문자로 처리 한 원래 프로그램 의 기초였습니다 . 나중에 Myers의 -시간 알고리즘 을 사용하도록 전환했습니다 . 여기서O ( ( r + n ) log n ) r n O ( n d ) drO((r+n)logn)rndiffdiffO(nd)d 삽입 / 삭제 편집 거리입니다. 전체 차이가 작지만 일부 "문자"(텍스트 행)가 자주 나타날 때 (예 : C 프로그램 코드에서 여는 중괄호 만 포함하는 행).

헌트, J .; Szymanski, T. (1977), "가장 긴 공통 하위 시퀀스를 계산하는 빠른 알고리즘", ACM의 통신, 20 (5) : 350–353, doi : 10.1145 / 359581.359603

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.