말 그 및 같은 길이의 두 개의 문자열입니다. anagramming 개의 스트링은 전단 사 사상이다 되도록 각각 .b 1 b 2 … b na i = b p ( i ) i
동일한 문자열 쌍에 대해 둘 이상의 분석이있을 수 있습니다. 예를 들어, '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 ]cabab
우리는 말할 것이다 무게 anagramming의의 하나가 두 번째 문자열을 얻기 위해 재 배열 할 수 있습니다 덩어리를 얻기 위해 첫 번째 문자열에해야 컷의 수입니다. 공식적으로 이것은 인 의 값 수입니다 . 즉되는 점의 개수이며, 않는다 하지 정확히 1. 플로우 예 증가 및 로 인해, 삭감 청크에 한번 과 및 삭감 네 시간, 다섯 덩어리로.w ( P 2 ) = 4 P 1 P 212345
123
45
12345
두 개의 문자열 와 대한 분석이 있다고 가정합니다 . 그런 다음 최소 하나의 분석에 최소 가중치가 있어야합니다. 이것이 가장 가볍다 고 가정 해 봅시다 . (가장 가벼운 분석이 여러 개있을 수 있습니다. 무게에만 관심이 있기 때문에 신경 쓰지 않습니다.)
의문
분석이 존재하는 두 개의 문자열이 주어지면 두 문자열 의 가장 가벼운 분석 의 정확한 가중치를 효율적으로 산출 하는 알고리즘을 원합니다 . 알고리즘이 가장 가벼운 분석을 생성하는 것이 좋습니다. 그러나 반드시 그럴 필요는 없습니다.
모든 분석을 생성하고 무게를 측정하는 것은 매우 간단한 문제이지만 많은 것이있을 수 있으므로 가벼운 분석을 직접 찾는 방법을 선호합니다.
자극
이 문제가 중요한 이유는 다음과 같습니다. 컴퓨터가 사전을 검색하고 정확히 동일한 문자를 포함하는 단어 쌍인 아나그램을 찾는 것이 매우 쉽습니다. 그러나 생산 된 많은 아나그램은 흥미롭지 않습니다. 예를 들어, Webster 's Second International Dictionary에서 가장 긴 예는 다음과 같습니다.
cholecystoduodenostomy의
duodenocholecystostomy
문제는 명확해야한다 : 그들은 매우 가벼운 anagramming을 인정하기 때문에 이러한 재미이다 단순히 교류 cholecysto
, duedeno
및 stomy
섹션, 한편 2의 무게를 들어,이 훨씬 짧은 예를 훨씬 더 놀랍고 재미있다 :
해안선
단면
여기에서 가장 가벼운 분석의 가중치는 8입니다.
이 방법을 사용하여 흥미로운 아나그램, 즉 모든 아나그램의 무게가 큰 프로그램을 찾습니다. 그러나 가능한 모든 분석을 생성하고 칭량하여이를 수행합니다.
cholecystoduodenostomy
입니다 ccddeehlmnooooossttuyy
. 두 단어는 정식 형식이 동일한 경우에만 아나그램입니다. 정규 형식의 키를 사용하여 해시 테이블에 단어를 저장하고 충돌을 발견 할 때마다 아나그램이 있습니다.