int preSo(char *x, int m, usinged int s[]){
usigned int j, lim;
int i;
for(i =0 ; i<ASIZE; ++i)
{
S[i] = ~0;
}
for(lim = i =0 , j=1; j<m; ++i, j<<=1)
{
S[x[i]] &= ~j;
lim |= j;
}
lim = ~(lim >> 1);
return(lim);
}
S['h'] &= ~J 값에다가 구멍을 내라는 의미임
비트연산 구멍 뚫기.
패턴의 위치. 메모리를 아끼기 위해서 bit field를 사용함.
lookup table을 사용해서 메모리를 더욱 쓰였으나, m+n 이므로 시간은 줄어듦.
확장 비트맵을 만드는 방법에 대해서도 풀어쓰면 좋겠음.
아직은 n 회전을 돌아야 하므로.. 더 나은 알고리즘을 다음 시간에 해보겠음
'Computer Science' 카테고리의 다른 글
Knuth-Morris-Pratt Pattern Matching (KMP) (0) | 2021.04.24 |
---|---|
Morris-Pratt Pattern Matching (0) | 2021.04.24 |
CRC 개념 (0) | 2021.04.24 |
State Pattern (0) | 2021.04.19 |
TS 서점 (0) | 2021.03.31 |
댓글