재미있는 아나그램 찾기


31

말 그 및 같은 길이의 두 개의 문자열입니다. anagramming 개의 스트링은 전단 사 사상이다 되도록 각각 .b 1 b 2b n에이1에이2에이12a i = b p ( i ) i:[1][1]에이나는=(나는)나는

동일한 문자열 쌍에 대해 둘 이상의 분석이있을 수 있습니다. 예를 들어, 'abcab` 및 우리가 및 등.b = p 1 [ 1 , 2 , 3 , 4 , 5 ] [ 4 , 5 , 1 , 2 , 3 ] p 2 [ 1 , 2 , 3 , 4 , 5 ] [ 2 , 5 , 1 , 4 , 3 ]에이==cabab1[1,2,,4,5][4,5,1,2,]2[1,2,,4,5][2,5,1,4,]

우리는 말할 것이다 무게 anagramming의의 하나가 두 번째 문자열을 얻기 위해 재 배열 할 수 있습니다 덩어리를 얻기 위해 첫 번째 문자열에해야 컷의 수입니다. 공식적으로 이것은 인 의 값 수입니다 . 즉되는 점의 개수이며, 않는다 하지 정확히 1. 플로우 예 증가 및 로 인해, 삭감 청크에 한번 과 및 삭감 네 시간, 다섯 덩어리로.()나는[11](나는)+1(나는+1)w ( P 2 ) = 4 P 1 P 2(1)=1(2)=411234512345212345

두 개의 문자열 에이 대한 분석이 있다고 가정합니다 . 그런 다음 최소 하나의 분석에 최소 가중치가 있어야합니다. 이것이 가장 가볍다 고 가정 해 봅시다 . (가장 가벼운 분석이 여러 개있을 수 있습니다. 무게에만 관심이 있기 때문에 신경 쓰지 않습니다.)

의문

분석이 존재하는 두 개의 문자열이 주어지면 두 문자열 의 가장 가벼운 분석정확한 가중치를 효율적으로 산출 하는 알고리즘을 원합니다 . 알고리즘이 가장 가벼운 분석을 생성하는 것이 좋습니다. 그러나 반드시 그럴 필요는 없습니다.

모든 분석을 생성하고 무게를 측정하는 것은 매우 간단한 문제이지만 많은 것이있을 수 있으므로 가벼운 분석을 직접 찾는 방법을 선호합니다.


자극

이 문제가 중요한 이유는 다음과 같습니다. 컴퓨터가 사전을 검색하고 정확히 동일한 문자를 포함하는 단어 쌍인 아나그램을 찾는 것이 매우 쉽습니다. 그러나 생산 된 많은 아나그램은 흥미롭지 않습니다. 예를 들어, Webster 's Second International Dictionary에서 가장 긴 예는 다음과 같습니다.

cholecystoduodenostomy의
duodenocholecystostomy

문제는 명확해야한다 : 그들은 매우 가벼운 anagramming을 인정하기 때문에 이러한 재미이다 단순히 교류 cholecysto, duedenostomy섹션, 한편 2의 무게를 들어,이 훨씬 짧은 예를 훨씬 더 놀랍고 재미있다 :

해안선
단면

여기에서 가장 가벼운 분석의 가중치는 8입니다.

이 방법을 사용하여 흥미로운 아나그램, 즉 모든 아나그램의 무게가 큰 프로그램을 찾습니다. 그러나 가능한 모든 분석을 생성하고 칭량하여이를 수행합니다.


호기심에서 아나그램 쌍을 어떻게 찾을 수 있습니까? 같은 길이의 모든 단어 내 에서 무차별 대입 검색을 수행합니까? 영형(2)
Pedro

4
물론 아닙니다. 각 단어를 알파벳 순서로 동일한 문자를 갖는 정식 형식으로 변환합니다. 예를 들어, 정식 형식은 cholecystoduodenostomy입니다 ccddeehlmnooooossttuyy. 두 단어는 정식 형식이 동일한 경우에만 아나그램입니다. 정규 형식의 키를 사용하여 해시 테이블에 단어를 저장하고 충돌을 발견 할 때마다 아나그램이 있습니다.
Mark Dominus 2016 년

나는 내 블로그에 이것에 관한 많은 양의 관련 정보를 가지고있다 : (α) (β) (γ) (δ)
Mark Dominus

답변:


21

이 문제를 "최소 공통 문자열 파티션 문제"라고합니다 (더 정확하게 말하면 최소 공통 문자열 파티션 문제의 답은 문제의 답에 1을 더한 것과 같습니다). 불행히도, 그것은 각 문자는 Goldstein, Kilman 및 Zheng [GKZ05]에 의해 입증 된 것처럼 각 입력 문자열에서 최대 두 번 발생합니다. 이는 P = NP가 아닌 한 다항식 시간 알고리즘이 존재하지 않음을 의미합니다. (물론, 각 문자가 최대 한 번 발생하면 하나의 분석 만 있기 때문에 문제는 사소합니다.)

긍정적 인 측면에서, 동일한 저자 [GKZ05]는 동일한 제한 하에서 다항식 시간 1.1037- 근사 알고리즘을 제공합니다. (A "1.1037- 근사 알고리즘 "은 정답 A를 출력하지 않을 수도 있지만 AB ≤ 1.1037 A 와 같이 값 B 를 출력하도록 보장 되는 알고리즘을 의미합니다 .) 각 문자가 각 입력 문자열에서 최대 3 번 발생한다는 약한 제한.

[GKZ05] Avraham Goldstein, Petr Kolman 및 Jie Zheng. 최소 공통 문자열 파티션 문제 : 경도 및 근사치. Electronic Journal of Combinatorics , 12, 기사 R50, 2005. http://www.combinatorics.org/ojs/index.php/eljc/article/view/v12i1r50



9

이것은 그가 인용 한 GKZ05 논문 의 가장 관련성이 높은 부분을 요약 한 위의 Tsuyoshi Ito의 답변에 대한 후속 조치 입니다.

이 논문은 MIS (Maximal Independent Set ) 문제 의 축소를 증명합니다 . 그래프 구조 그 꼭지점 쌍 ( I , J ) 되도록 = B JI + 1 = B J + 1 . 분석이 모든 i를 매핑 할 수없는 경우 항상 꼭지점 ( i , j )( k , ) (여기서 i k )을 모서리와 연결하십시오.(나는,j)에이나는=j에이나는+1=j+1(나는,j)(k,)ik i + 1 j + 1 k k + 1 + 1 . 이것은 쉽게 감지 할 수 있습니다. 다음 중 하나에 해당하는 경우 이러한 매핑이 불가능합니다.iji+1j+1kk+1+1

  1. j i=kj
  2. j + 1 i+1=kj+1
  3. { j , j + 1 } { , + 1 } 에서 분리되었습니다i+1<k{j,j+1}{,+1}

얻어진 그래프 말해 크기의 최대 설정 한 독립적 . 그런 다음 최소 분석 가중치는 정확히 n - s - 1입니다 . 여기서 n 은 문자열 ab 의 길이입니다 . (대화는 다음과 같은 내용도 포함합니다. 저중량 분석은 G의 경우 큰 MIS로 직접 변환됩니다 . 자세한 내용은 논문의 4-5 페이지를 참조하십시오.)Gsns1nabG

예를 들어, 두 문자열 yttrious및을 고려하십시오 touristy. 해당 그래프에는 공유 ou쌍과 공유 쌍에 대한 두 개의 정점이 ri있습니다. 이 모두 매핑하는 anagramming 가질 수 있기 때문에 정점 사이에 가장자리가 없습니다 ououri에를 ri; 또는 위의 세 가지 조건이 모두 실패했는지 확인할 수 있습니다. 따라서 그래프는 분명히 크기 MIS를 가지며 최소 분석 무게는 실제로 분석 ↔에 해당하는 8-2-1 = 5 입니다. 's=2y|t|t|ri|ou|st|ou|ri|s|t|y

반면에, 고려 deratertreader. 이번에는 그래프에 세 개의 정점이 있습니다.

  1. DErater + treaDEr
  2. dERater + treadER
  3. deratER + treadER

2와 3은 호환되지 않으며 1과 3은 호환되지 않지만 1과 2는 호환됩니다. 따라서 고유 한 MIS의 크기는 이고 정점 1과 2 를 포함합니다. 가중치 7-2-1 = 4의 해당 분석은 ↔ 입니다.s=2der|a|t|e|rt|r|e|a|der


2
후속 게시물에 감사하지만 문제의 NP- 완전성에 대한 증거는 아닙니다. 문제의 NP- 완전성을 증명하려면 문제에 대한 알려진 NP- 완전 문제를 줄여야합니다. 이는 [GKZ05]의 정리 2.2입니다. 여기에 제시 한 내용 ([GKZ05]의 레마 1.1)은 반대 방향으로 축소됩니다.
Ito Tsuyoshi

이것은 좋은 개혁입니다. 호환되지 않는 쌍들 사이에 가장자리를 그리고 최대 독립 세트를 요구하는 대신에, 우리는 호환되는 쌍들 사이에 가장자리를 그리고 최대의 클릭을 요구할 수 있습니다. (저는 "우리가 함께 유지할 수있는 최대 쌍 수"에 대해 생각하기가 더 쉽다는 것을 알게되었습니다.)
ShreevatsaR

2

그것은 당신이 생각했던 정확한 알고리즘을 다루지 않지만 ( Ito Tsuyoshi의 대답이하는 것 ), "흥미로운"아나그램을 찾는 근본적인 문제를 찾으려고 노력합니다 ...

나의 첫 번째 생각은 원자력 변화가 일반적인 "어려움"또는 "혼란성"가중치보다는 "흥미"에 따라 가중치를 부여하는 편집 거리에 대한 변형을 사용하는 것이었다. 물론 실제로는 비 현상적일 수 있으므로 MIS의 NP- 완전 문제에 부딪 힐 수 있기 때문에 이러한 방식으로 실제로 흥미로운 변환을 효율적으로 인코딩 할 수 없을 것 같습니다.

따라서 두 번째 생각은 단어 사이의 문자 대 문자 정렬을 구성한 다음 (예 : 기계 번역 정렬) "관심"에 대한 정렬 자체의 점수를 매기는 것입니다 (예 : 인접 문자를 인접한 문자 또는 각 정렬이 교차하는 정렬 수 등을 로그 라인 모델 등을 통해 모두 결합합니다.

세 번째 아이디어는 아나 그래밍 자체의 구조를 완전히 버리고 단어의 의미를 보는 것입니다. 아나그램을 "흥미로운"것으로 만드는 것은 종종 관련된 단어의 의미 사이의 불일치입니다. 따라서 WordNet에서 거리를 계산하는 것과 같은 것을 시도하십시오.


0

순열 그룹으로 문제를 표현할 수 있습니다 .

이제 순열 그룹에는 기본 (두 글자를 서로 바)) 및 기본 이동 순서의 복합으로 구성된 모든 "anagram move"가 포함됩니다. 가능한 순열의 일부에만 관심이있는 것 같습니다. 나는 이것을 정의하려고 시도 할 것이다.

먼저 순열 표기법, 즉 소위 주기 표기법을 기억하십시오 .

  • 는 순열이 없음을 의미합니다.()
  • 은 1이 1과 교체되었음을 의미하며 순열도 없습니다.(1)
  • 는 1과 2가 교환됨을 의미합니다.(12)
  • 은 1이 2를 대체하고, 1을 교체하는 3을 교체한다는 것을 의미한다 (회전).(123)
  • 그리고 또 다른 한사람도

이 간단한 '순환'은 더 복잡한 순열을 설명하기 위해 구성됩니다.

n

  • 단일 문자 쌍의 스왑 : 와 같은 스왑(12)
  • (a b)(a+1 b+1)a>0b<a+1b+1n
  • ...
  • (a b)(a+1 b+1)(a+i1 b+i1)a>0에이+나는1+나는1

이러한 움직임은 알고리즘의 기초를 형성합니다. 관심있는 것은 한 단어에서 다음 단어로 이동할 수있는 가장 작은 순서의 움직임을 찾는 것입니다.

나는 무차별 대입 검색을 제외하고는 이것을 계산하기위한 알고리즘을 모르지만, 적어도 지금은 원시적 움직임이 무엇인지에 대한 명확한 설명이 있습니다. (그리고 아마도 우리 중 일부 그룹 이론가는 적절한 알고리즘을 가리킬 수 있습니다.)


1
감사. 어쩌면 나는 비관적이지만,이 접근법은 어려울 것 같습니다. 나는 우리가 어떤 순열 그룹이 관심 있는지를 먼저 발견하지 않으면 그룹 이론적 접근법이 결실을 맺을 것이라고 생각하지 않으며 입력 문자열에 따라 다릅니다. 유한 그룹의 효율적인 표현은 매우 깊고 풍부한 문제라고 생각합니다. 그러나 나는 착각하고 싶다.
Mark Dominus

1
“당신이 관심있는 것은 한 단어에서 다음 단어로 이동할 수있는 가장 작은 동작의 순서를 찾는 것입니다.”나는 이것이 맞다고 생각하지 않습니다. 예를 들어, n = 4 인 경우 스왑 (1 2)의 가중치는 2이지만 스왑 (2 3)의 가중치는 3입니다. 계산 방법은이 두 가지를 구분하지 않습니다.
Ito Tsuyoshi

나는 늦은 밤에 대답했다. 체중 측정을 제대로 이해하지 못했습니다. 사실, 나는 그것을 이해하지 못한다. 나는 당신이 문자 블록의 움직임을 허용하고 싶었 기 때문에, 나는이 프리미티브를 정의하는 모든 어려움에갔습니다. 내 대답은 영감을 줄 수 있으므로 잘못 되었더라도 그대로 두겠습니다.
Dave Clarke

0

cholecystoduodenostomy / duodenocholecystostome의 경우, 델타로 얼마나 많이 이동했는지 설명하는 각 문자에 숫자를 할당하면 7 7, 8 -7, 6 0과 같은 것이 있습니다. 일부 문자가 반복되었을 수 있기 때문에 (올바르지 않은 두 번째 c는 7이 아니라 2로만 이동했습니다) 등이 있기 때문에 옳지 않습니다.

해안선 / 단면과 비교하면 (+2) (+ 5) (+ 5) (-3) (-1) (+ 3) .... "런 길이 인코딩 가능"이 훨씬 적습니다.

델타의 임의성은 아마도 아나그램이 얼마나 흥미로운 지에 대한 "점수"를 줄 수 있습니까?

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