Bitap 알고리즘으로 머리를 감싸고 있지만 알고리즘의 단계에 대한 이유를 이해하는 데 문제가 있습니다. 이전 문자열 PATTERN.substring(0, i-1)
이 성공적으로 일치하는 경우문자열 유사성 : Bitap은 정확히 어떻게 작동합니까?
Two strings: PATTERN (the desired string)
TEXT (the String to be perused for the presence of PATTERN)
Two indices: i (currently processing index in PATTERN), 1 <= i < PATTERN.SIZE
j (arbitrary index in TEXT)
Match state S(x): S(PATTERN(i)) = S(PATTERN(i-1)) && PATTERN[i] == TEXT[j], S(0) = 1
, PATTERN.substring(0,i)
의 텍스트 문자열을 일치 :
PATTERN[i]
에있는 문자는
TEXT[j]
에있는 문자와 같습니다.
내가 이해할 수없는 것은 이것의 비트 이동 구현입니다. The official paper detailing this algorithm basically lays it out,하지만 계속 진행해야 할 부분을 시각화 할 수는 없습니다. 알고리즘 사양은 종이의 첫 번째 2 페이지,하지만 난 중요한 부분 강조합니다 : 다음은
: 여기
이 개념의 비트 이동 버전을 샘플 검색 문자열에 대한 T [텍스트] : 여기그리고 알고리즘의 흔적이다.
특히, 나는 OR
뒤에 T 테이블의 의미, 그리고 이유는 현재 상태와 그것의 항목을 보내고 무엇을 이해하지 않습니다. 누군가가 나를 정확하게 다른 사람이 답변을 허용하지에 대한
그런 오래된 질문에 부딪히지 않아서 죄송합니다. 그러나 오류로 검색을 처리 할 수 있도록이 알고리즘을 어떻게 확장 하시겠습니까? –