무작위 알고리즘(Randomized algorithm)
동전 던지기를 계산에 섞는 알고리즘(algorithm). 무작위 피벗(pivot)의 퀵정렬(quicksort), 밀러–라빈 소수 판정(Miller–Rabin primality test)처럼 평균(mean)이 빠르거나 틀릴 확률(probability)이 아주 작다.
무작위 알고리즘은 계산 도중에 동전을 던지는 알고리즘입니다. 같은 입력을 넣어도 실행할 때마다 다르게 움직이지만, 그 덕분에 평균적으로 빠르거나, 아주 작은 확률로만 틀리는 대신 훨씬 빠릅니다. 우연을 들이는 것은 확실함을 버리는 일처럼 보이지만, 실은 '늘 느린 나쁜 입력'이라는 것을 없애는 방법이기도 합니다.
퀵정렬을 보겠습니다. 늘 구간의 마지막 원소(element)를 피벗으로 쓰면 이미 정렬된 입력에서
이미 정렬된 목록
기댓값은 이렇게 셉니다. 크기로 i번째와 j번째인 두 원소는, 그 사이의 값들(둘을 포함해
이처럼 답은 늘 맞고 걸리는 시간만 운에 달린 것을 라스베이거스 알고리즘(Las Vegas algorithm), 시간은 정해져 있고 아주 작은 확률로 틀리는 것을 몬테카를로 알고리즘(Monte Carlo algorithm)이라 부릅니다. 후자의 대표가 밀러–라빈 소수 판정(primality test)입니다. 1976년 미국의 게리 밀러가 만든 판정법(일반화된 리만 가설(Riemann hypothesis)이 참이라면 늘 옳은 결정적 방법)을 1980년 마이클 라빈이 무작위 알고리즘으로 고친 것입니다. 수 n을 판정할 때 1과 n 사이의 수 a(밑)를 무작위로 골라, n이 두 조건을 만족하는지 확인합니다. 하나는 페르마의 소정리에서 나오는 거듭제곱 조건이고, 다른 하나는 소수(prime number)를 법으로 하면 1의 제곱근이 ±1뿐이라는 조건입니다. 첫째 조건만 보면 카마이클 수(Carmichael number)라는 합성수(composite number)가 (n과 서로소(coprime)인) 모든 밑을 통과해 버리기 때문에 둘째 조건이 필요합니다. 소수는 어떤 밑으로도 이 검사를 늘 통과합니다. 반면 홀수 합성수가 무작위로 고른 밑 하나의 검사를 통과할 확률은 1/4 이하입니다. 그러니
이어지는 곳. 해시 테이블(hash table)은 해시 함수(hash function)를 무작위로 골라 일부러 만든 충돌 공격을 막고, 무작위 대조 시험(randomized controlled trial)은 처치를 무작위로 배정해 교란, 곧 처치 말고 결과에 영향을 주는 다른 원인이 한쪽 무리에 몰리는 일을 끊습니다. 둘 다 상대(입력을 고르는 사람, 숨은 변수)가 우리의 선택을 미리 알 수 없게 만드는 전략입니다. 무작위로 고른 대상이 원하는 성질을 가질 확률이 0보다 크면 그런 대상이 있다는 확률적 방법(probabilistic method)은 같은 생각을 증명에 쓴 것입니다. 무작위성이 계산을 본질적으로 빠르게 하는지는 아직 열린 문제로, 많은 이들은 그렇지 않다고, 곧 무작위 알고리즘이 빠르게 푸는 문제는 동전 없이도 빠르게 풀린다고 추측합니다(BPP = P 추측). 2002년 인도 공과대학 칸푸르의 아그라왈, 카얄, 삭세나가 소수 판정을 무작위 없이 다항 시간(polynomial time), 곧 자릿수의 다항식(polynomial)만큼의 걸음에 하는 방법(AKS)을 찾아낸 것도 그 방향의 증거로 꼽힙니다. 이 물음은 P 대 NP 문제(P versus NP problem)와 나란히 계산 복잡도 이론(computational complexity theory)의 큰 물음입니다.
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 몬테카를로 방법
… 이깁니다. 바늘을 던져 π를 구하는 뷔퐁의 바늘도 같은 발상입니다. 계산에 무작위를 섞는 방법을 넓게무작위 알고리즘이라 부르는데, 그중 시간은 정해져 있고 답이 작은 확률로 틀릴 수 있는 것을 이 방법의 이름을 따 …
- 조화급수
… 서로 비교될 확률이 2/(j-i+1) 이라, 이를 모든 쌍에 대해 더하면 조화급수가 나오기 때문입니다(무작위 알고리즘). 1962년 데이비드 게일과 로이드 섀플리가 발표한 짝짓기 절차에서는 한쪽이 선호 순서대로 …
- 소수 판정
… 10^{-12} 이하입니다. 이처럼 동전 던지기를 계산에 섞고, 되풀이할수록 틀릴 확률이 줄어드는 방법을무작위 알고리즘이라 합니다. 이어지는 곳. 큰 소수를 찾을 때는 무작위 홀수를 골라 시험하기를 되풀이합니다. 몇 번 …
- 확률적 방법
… 개수로 한 같은 논법, 곧 비둘기집 원리입니다. 이어지는 곳. 존재 증명에 쓰던 무작위성을 계산에 쓰면무작위 알고리즘이 됩니다. 위에서 500번 칠해 평균을 낸 실험은 몬테카를로 방법이고, 칠한 횟수가 늘수록 그 평균이 …
- 알고리즘
… 동적 계획법, 매 순간 가장 좋아 보이는 것을 고르는 욕심쟁이 알고리즘, 계산 도중 동전을 던지는무작위 알고리즘입니다. 가장 많이 연구된 과제는 목록을 크기순으로 늘어놓는 정렬과 목록에서 원하는 것을 찾는 …
- 정렬 알고리즘
… 비교 횟수의 기댓값이 무작위 입력의 평균과 같아집니다. 느린 실행은 운이 아주 나쁠 때만 남습니다(무작위 알고리즘). 입력 크기 n에 따른 비교 횟수(무작위 입력은 몇 번의 평균). 회색 점선은 n²/4와 n log₂ …
- 해시 테이블
… 약하다는 것이 알려졌고, 그 뒤로 많은 언어가 프로그램을 시작할 때마다 해시 함수에 무작위 값을 섞습니다(무작위 알고리즘). 이어지는 곳. 해시 테이블은 프로그래밍 언어가 제공하는 집합과 사전 자료 구조의 바탕입니다. 해시 …
- 콜모고로프 복잡도
… '무작위' 수도 씨앗(난수 생성기에 처음 넣는 수) 하나에서 정해진 계산으로 나오니 K가 작습니다(무작위 알고리즘, 몬테카를로 방법). '모형을 적는 길이 + 그 모형으로 데이터를 적는 길이'가 가장 짧은 모형을 …