기타 업적

래빈-카프 알고리듬

카프가 만든 알고리듬 중에는 문자열 찾기 알고리듬도 유명하다. 프로그래밍 작업뿐만 아니라 일반 문서 작업에서도 단어 찾기는 자주 사용된다.

어떤 글에서 단어를 찾는 가장 단순무식한brute-force 방법은 처음부터 계속 한 글자씩 뒤져나가는 것이다. 다음의 예를 보자.

우리의 소원은 통일. 꿈에도 소원은 통일. 이 정성 다해서 통일. 통일을 이루자. 이 겨레 살리는 통일. 이 나라 살리는 통일. 통일이여 어서오라. 통일이여 오라. 

위와 같은 글에서 ‘통일’이라는 단어를 찾아야 한다고 해보자. 그러면 맨 처음 글자 ‘우’에서부터 시작해서 두 글자씩 뽑아 비교해보면 된다. 만약 ‘통일이여 오라’를 찾아야 한다고 하면 역시 맨 처음 글자 ‘우’에서부터 시작해서 일곱 글자씩 뽑아 비교해보면 된다.

위의 글이 총 91글자로 이루어져 있으므로, ‘통일’을 찾을 때는 90번 비교가 이루어져야 하고 ‘통일이여 오라’를 찾을 때는 84번 비교가 이루어져야 한다. 글자 단위의 비교 회수를 따져 본다면 ‘통일’일 때는 90 x 2 번, ‘통일이여 오라’일 때는 84 x 7 번 비교가 발생한다. 결국 글자 단위의 비교 회수는 글의 길이와 찾으려는 단어의 길이에 함께 비례하는 것을 볼 수 있다. 짧은 글이라면 모르겠으나 백과사전처럼 글의 양이 많다면 단어 하나를 찾는 시간이 엄청나게 길 수 있다.


마이클 래빈과 리처드 카프는 지문fingerprint 이라는 개념을 도입했다. 비교해야 할 데이터의 크기를 줄이는 것이다. 지문 함수fingerprinting function라는 것을 만들어서 원문과 찾는 단어의 크기를 줄인다. 예를 들어 일곱 글자를 네 글자로 줄이는 지문 함수를 만들었다고 해보자. 이것을 위의 예에 적용한다면 ‘통일이여 오라’를 찾을 때 ‘갺녂됶듂’이라는 지문 값으로 바뀌어 사용되고 글 내에서도 ‘우리의 소원은 ‘, ‘리의 소원은 통’, ‘의 소원은 통일’ 등이 모두 네 자리의 지문 값으로 바뀐 후에 비교가 이루어진다.

지문 함수는 데이터의 크기를 줄이는 것이기 때문에, 서로 다른 데이터가 같은 지문을 가질 가능성이 발생한다. 그래서 지문의 비교는, 일종의 필터링 용도로 사용된다. 즉 지문이 다르면, 확실하게 다른 단어라고 보고 무시해 버리지만, 지문이 같다면 확실하게 판별하기 위해서 지문이 아니라 원래의 데이터로 다시 비교를 진행한다.

생명공학

1994년에 버클리의 교수직에서 물러난 그는 워싱턴 대학교에 자리를 구하면서 생명공학이라는 새로운 분야에 도전했다.

내가 워싱턴 대학교를 선택한 이유는 계산생물학computational biology에 관심이 생겼기 때문이었습니다. 1990년대 초에 인간 게놈 프로젝트가 박차를 가하고 있었고 생물학이 다음 세대의 가장 중요한 과학이 되리라는 분위기가 형성되고 있었습니다. 그리고 나는 생물학과 관련된 조합 알고리듬에 큰 기회가 숨어 있다는 느낌이 들었습니다.​3​

안타깝게도 카프는 계산생물학에서 의미 있는 성과를 내지 못했다. 하지만 그와 함께 연구했던 많은 후배 연구자들이 이 분야에서 중요한 역할을 하고 있다.​2​


  1. ​*​
    출처: https://en.wikipedia.org/wiki/Richard_M._Karp, CC BY-SA 2.0 fr
  2. ​†​
    출처: https://www.simonsfoundation.org/2013/12/13/richard-karp/
  3. ​‡​
    그는 딕(Dick)이라는 애칭으로 더 많이 알려져 있다.
  4. ​§​
    하버드 계산 연구실은 하워드 에이컨 교수가 1944년에 만든 연구실로 초창기 컴퓨터 연구의 주요 거점이었다.
  5. ​¶​
    1999년에 튜링상을 수상했다.
  6. ​#​
    조합 최적화 문제의 정확한 정의는, ‘가능성 있는 답들이 이산(discrete)적인 문제’이다.
  7. ​**​
    이를 최단 거리 구하기 알고리듬과 혼동하지 말자. 최단 거리 구하기 알고리듬은 특정 두 지점 사이를 연결해주는 최단 거리를 구하는 알고리듬으로써 다익스트라에 의해서 최적화된 알고리듬이 고안되었다.
  8. ​††​
    후에 벨 연구소의 센 린과 브라이언 커니건이 이 방법으로 훨씬 좋은 결과를 만들어냈다.

참고문헌

  1. 1.
    Karp Richard M. Combinatorics, complexity, and randomness. ACM Turing Award Lectures.:1985. doi:10.1145/1283920.1283942
  2. 2.
    Oral History: Russell Impagliazzo in Conversation with Dick Karp. YouTube. Published December 22, 2017. Accessed February 21, 2023. https://www.youtube.com/watch?v=UQfmXbbWlMs
  3. 3.
    A.M. Turing Award Oral History Interview with Richard Karp by Christos Papadimitriou. ACM; 2012:33.
  4. 4.
    Berkeley ACM A.M. Turing Laureate Interviews: Richard M. Karp. YouTube. Published October 24, 2018. Accessed February 22, 2023. https://www.youtube.com/watch?v=EkliP49bx_I
  5. 5.
  6. 6.
    Cook Stephen A. The complexity of theorem-proving procedures. Proceedings of the third annual ACM symposium on Theory of computing  – STOC ’71. Published online 1971. doi:10.1145/800157.805047
  7. 7.
    Karp Richard M. Reducibility among Combinatorial Problems. Complexity of Computer Computations. Published online 1972:85-103. doi:10.1007/978-1-4684-2001-2_9
  8. 8.
    Richard Karp. A.M. Turing Award Laureate. Accessed February 21, 2023. https://amturing.acm.org/award_winners/karp_3256708.cfm

1 2 3 4