일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재택커피
- 루스틱
- 잘쉬어야지
- 달리기
- 오운완
- Zone2
- 런데이애플워치
- schema-registry
- 강릉여행
- 플라스틱은 어떻게 브랜드의 무기가 되는가
- sky빛의아이들
- 런데이
- 가람집옹심이
- 송고버섯피자
- sparksql
- apollo-sandbox
- 집커피
- apollo-server-v3
- 이코노미스트한국구독센터
- 여니브레드
- 중사랑
- 마이더치콜드브루
- 티지아이포럼
- parquet
- 저동하녹
- 여행
- 콜드브루메이커
- 스타벅스리저브콜드브루
- neovim
- kafka-connect
- Today
- Total
해뜨기전에자자
문자열 유사도 알고리즘 Needleman-Wunch, Smith-Waterman 본문
fzf에서 문자열 서치 알고리즘으로 뭘 사용하는지 찾아보다가 정리해둔다.
차이점 위주로
Needleman-Wunch
두 문자열의 전체 유사도
https://en.wikipedia.org/wiki/Needleman–Wunsch_algorithm
padding 전략: 맨 왼쪽 위 값을 0으로 주고 indel 이 발생했다고 가정한다. gap으로 채워지게 됨.
점화식:H[i][j] = max(H[i-1][j-1] + match or mismatch, H[i-1][j] + gap, H[i][j-1] + gap)
trace back 시작점: H[str1.length][str2.length] 그러니까 .. 테이블 오른쪽 맨 아래 셀
Smith-Waterman
두 문자열의 지역 유사도
https://en.wikipedia.org/wiki/Smith–Waterman_algorithm
padding 전략: 모두 0으로 채움
점화식:H[i][j] = max(H[i-1][j-1] + match or mismatch, H[i-1][j] + gap, H[i][j-1] + gap, 0)
trace back 시작점: high score인 셀
이때 0을 줌으로써 테이블에 음수가 들어가지 않게되고, 이로 인해 지역적으로 high score인 곳이 best match이게 된다.
그래서 smith waterman 에서 high score 값을 구하면 문자열이 얼마나 유사한지 점수화 할 수 있다.
더 생각해볼만한것
gap, 즉 indel 가중치가 서로 달라질수있다. 이 경우는 가중치를 크게준 쪽이 traceback으로 채택될 가능성이 낮아진다.
'개발 > algorithm' 카테고리의 다른 글
Log Structured Merged Tree - LSMTree (0) | 2020.06.21 |
---|---|
Cassandra: CRDT (0) | 2018.10.28 |
bloom filter (0) | 2018.08.18 |