2013-07-11 2 views
5

Boyer and Moore pattern matching algorithm에서 사용하기 위해 "anabanana"라는 검색어에 대한 간단한 이동 표를 계산하는 데 전날 밤 실패했습니다. enter image description hereBoyer and Moore algorithm, shift table calculation

아무도 나를 이해하고 시프트 테이블을 찾기 위해 이미지의 방법을 설명 할 수 있습니다 :

나는 어떤 설명없이 다음의 예를 발견?

+2

질문에 대한 배경 지식을 제공해 주시겠습니까? 더 구체적으로 [무엇을 시도해 봤습니까?] (http://whathaveyoutried.com)이 예제에서 검색중인 텍스트를 알고 있습니까? –

+0

아니요 내 예제에서는 검색중인 텍스트가 제공되지 않습니다. 작업은 anabanana라는 단어에 대해이 메서드를 사용하여 shifttable을 계산하는 것입니다. 내가 게시 한 그림은 솔루션 제안입니다. 다른 간단한 방법으로 시프트 테이블을 계산하려면이 방법도 사용합니다. 그래서 내 질문은 : "간단한 방법으로 컴퓨터를 사용하지 않고 boyer와 무어와 함께 사용하기위한 이동 테이블을 계산하는 방법"thx –

+0

그 예제를 어디에서 발견 했습니까? 나에게 링크를 줘, 아마도 너를 도울 수있어. – Sayakiss

답변

3

나는 여기서 무슨 일이 일어나는지 이해한다고 생각하니, 나는 설명하려고 노력할 것이다.

"Wort"라는 줄은 분석 할 패턴입니다. 제 생각에는 위의 "Text"행을 고려할 필요가 없습니다. 대신 패턴 내에서 왼쪽에서 오른쪽으로 문자의 0부터 시작하는 위치를 포함하는 추가 행을 가정합니다. 도시 패턴 p[] 길이 m 9. 내가 2에 기초 오른쪽

추가적인 설명에 인덱스 각 행 I가 p_i[] 이름 아래 :

패턴 마크 아래 하단 행에서 위의 패턴에서 문자와 일치하는 모든 문자.

for i=1 to m do 
    search in the rows below for a subpattern where p[m-i]<>p_j[m-1] (*) 
    and p[m-i+1, ..., m-1]=p_j[m-i+1, ..., m-1] 
    index j is your shift value for shift[i] 
od 

(*) 주 (교체 아웃 건너 여기 완료) : 이동 된 패턴 p_j 너무 멀리 오른쪽으로 이동 왔을 때, 비교하기 빈 문자가있을 것입니다. 이 경우 필요에 따라 항상 == 또는 <>으로 가정 할 수 있습니다. 항상 가능한 한 모든 최소 j을 사용하십시오.

example of assorted steps

나는이 늦게 조금이라도 도움이되기를 바랍니다.

+0

안녕하세요, 이미 내 시험에 합격했지만 훌륭하고 광범위한 설명입니다. 매우 감사합니다. 노력해 주셔서 감사합니다 . –

+1

나는이 시험을 직접해야만했다. 시간과 귀하의 질문은 내가 이해할 수없는 강의 노트에서 벗어날 수있는 최선의 정보였습니다. 이것은 쉽게 가르 칠 수있는 알고리즘이 아닌 것 같습니다. 실제로 당신에게 감사해야합니다. 그 시험은 아주 잘 풀렸다. – marc