Burrows-Wheeler transform (BWT)
Transform
LF mapping
Reversing with BWT
Searching with table occurrence and count
BWT (Burrows-Wheeler transform)
-
블록 정렬 알고리즘으로 변환 결과에 Index 정보가 포함되어 있어, 다른 정보가 없더라도 변환된 문자열의 경우 유사한 문자열들끼리 뭉쳐진 형태로 나타나는 경우가 많아 압축을 위한 전처리 알고리즘
-
동일한 문자를 조합(block-sorting compression)
-
데이터 압축에 사용(예: bzip2)
-
압축성을 항상 향상하는 것은 아니다.
-
변환은 되돌릴 수 있다.
-
패턴의 위치를 효율적으로 찾다(O|pattern|)
변환(Transform) - ex) Text = banana
-
매우 긴 서열을 변환한다면, BWT는 유사한 문자들을 모이게 하고, 압축을 할 수 있도록 해준다.
1. 변환하고자 하는 텍스트의 맨 마지막에 단어의 끝을 알리는 토큰(token : $)을 넣는다.
2. 토큰을 넣은 문자열을 왼쪽으로 한 칸씩 이동(Shift)을 수행하며 행렬을 생성한다.
3. 생성된 행렬을 첫 번째 열을 기준으로 사전 순 정렬을 한다.
4. 정렬된 행렬의 맨 마지막 열의 문자들로 생성된 문자열이 변환된 결과이다.
후-전 사상(LF mapping)
-
첫 번째 열은 두 번째 열 별로 정렬한다. -> BWT(abaaba)
-
정렬된 행렬에서 첫 번째(First) 열과 마지막(Last) 열을 제외하고 가운데 있는 모든 문자열을 삭제를 한다.
-
특징 : 첫 번째 열의 원소의 순서와 마지막 열의 원소의 순서는 동일한 순서로 정렬된다. ->BWT는 결과적으로 정렬(sort)이 되었기 때문에 첫 번째와 마지막 열의 순서는 같을 수밖에 없다.
-
LF mapping 특징 덕분에 연속된 데이터에서 원하는 데이터를 효율적으로 탐색이 가능해진다.
BWT의 역변환(reversing with BWT)
-
$을 기준으로 a0이 문자열의 맨 끝을 시작의 의미하면 a0으로 이동하면 b0과 대칭되어 있는데 이것은 a0 앞에 b0의 문자가 있다는 것을 의미한다. 이런 식으로 해당 문자를 타고 역순으로 이동하면 원래 문자열이 복구가 된다.
테이블을 이용한 탐색 방법(Searching with table occurrence and count)
"ana" 패턴 찾기
-
table occ를 만드는 방법은 마지막 열(last column)의 값으로 테이블을 완성한다. 첫 번째 열에 A가 나타났기 때문에 a 값을 1 증가시킨다. 두 번째 열에서 N이 나타났기 때문에 n의 값을 증가시킨다. a의 값은 증가된 값으로 계속 가져간다.
-
table c는 각 변수가 발생한 열의 위치이다 a의 값은 첫 번째 열에서 발생하였기 때문에 값이 1이고 b의 값은 4번째에서 발생했기 때문에 4이다.
'AI > Machine Learning' 카테고리의 다른 글
[머신러닝] 선형회귀(linear regression) - 컴도리돌이 (0) | 2021.09.03 |
---|---|
[머신러닝] 접미사 트라이(Suffix trie), 접미사 트리(Suffix tree) ,나이브 베이즈(Naive Bayes)- 컴도리돌이 (0) | 2020.12.20 |
[머신러닝] 마코프 체인 모델(Markov Chain Model)-MC,HMM - 컴도리돌이 (0) | 2020.12.18 |
[머신러닝]베이지안 네트워크(Bayesian Network)- 컴도리돌이 (3) | 2020.12.17 |
[머신 러닝] Agglomerative(bottom-up) , top-down(divisive) - 컴도리돌이 (0) | 2020.10.30 |