본문 바로가기

Bioinformatics61

두 양수를 유일한 양수키로 변경하기(캔터 쌍짓기 함수) 해시함수를 정의할 때, 두 양의 정수를 하나의 유일한 양의 정수로 변경하여 키값으로 사용을 하려고 할 때가 있다. 이 때 사용할 수 있는 것이 캔터 쌍짓기 함수(Cantor Pairing Function)이다. 이것은 다음과 같이 정의된다. 두 정수값 k1, k2를 입력하면 유일한 값이 결과로 나온다. public int cantorPairing(int k1, int k2) {return 1/2*(k1 + k2)*(k1 + k2 + 1) + k2;} 위와 같이 정의할 수 있을 것이다. 2013. 1. 8.
문자열 차이점 발견 전략(Diff Strategies) 본 문서는 http://neil.fraser.name/writing/diff/의 내용을 번역한 것입니다. 2006년 4월에 네일 프레서(Neil Fraser)에 의해서 두 문자열 간의 차이점을 계산하는 것은 많은 응용 프로그램의 중요 연산이다. 아래는 두 문자열 간의 차이점에 대한 간단한 예제이다. Text 1: Apples are a fruit.Text 2: Bananas are also fruit.Diff: AppleBananas are also fruit. 이 글은 차이 발견 알고리즘에 대한 문헌들을 조사하고, 그것들을 비교하고, 실제 활용엣 그들의 유용성을 증대시키기 위한 여러 기술들을 설명한다. 특별히, 우리는 선행 처리 최적화, 특정 작업을 위한 최적의 차이 발견 알고리즘의 선택, 그리고 사후.. 2012. 12. 29.
쉬프트-OR 문자열 검색 알고리즘의 설명(Shift OR Algorithm) 본 문서는 러시아어로 쓰인 http://habrahabr.ru/post/132128/의 내용의 구글 번역한 후 내용을 이해할 수 있도록 편역한 것이다. 1. 개요 최근에 나는 쉬프트-OR(http://en.wikipedia.org/wiki/Bitap_algorithm) 알고리즘을 이해해야만 했다. 이 알고리즘은 문자열의 부분 문자열을 찾도록 해준다. 이 알고리즘에 대한 분석 결과에 따라서, 나는 이 알고리즘이 어떻게 나의 알고리즘보다 빠르게 동작하는 지 누군가 이해하는데 도움을 줄거라는 기대하에 이 알고리즘에 대해서 쓰려고 마음먹었다. 실제로, "평범한 비교"와 비교하여 이 알고리즘의 주요한 차이점은, 이 알고리즘이 논리 연산에 기반을 두고 있다는 점이다. 소위 말하는 논리 곱(http://en.wiki.. 2012. 12. 29.
퍼지 문자열 검색(Fuzzy string search) 본 문서는 http://ntz-develop.blogspot.de/2011/03/fuzzy-string-search.html의 내용을 번역한 글이다. 원본 문서는 http://habrahabr.ru/post/114997/인 듯 하다. 관련 소스 코드는 https://github.com/polovik/Algorithms/blob/master/bitap.py에 있다. 소개 퍼지 검색 알고리즘(또한, 유사성 검색 알고리즘으로 알려짐)들은 철자 검사기와 구글(Google)과 얀덱스(Yandex) 완성된 검색 엔진의 근본을 이루고 있다. 예를 들어, 이 알고리즘들은 "당신은 ...을 말하려고 하는가요?" 함수를 제공하는데 이용되어져 왔다. 이 글에서, 나는 다음 개념, 방법, 그리고 알고리즘들을 설명할 것이다.:.. 2012. 12. 28.