Transcript Document
확률적 분석,
랜덤화된 알고리즘 -2
Randomize-In-Place 증명
• Randomize-In-Place
1. N <- length[A]
2. For I <- 1 to n
3. Do A[i] <-> A[Random(I,n)]
(i-1) –순열들 중 특정한 하나
배열 A[1..i-1]
i-1, 1, 3, 7, 9, ……
1, 6, 4, 5, 8, ……
i-1, 11, 6, 8, 3, ……
포함될 확률 (n-i+1)!/n!
Randomize-In-Place 증명
(i-1) –순열들 중 특정한 하나
배열 A[1..i-1]
i-1, 1, 3, 7, 9, ……
1, 6, 4, 5, 8, ……
포함될 확률 (n-i+1)!/n!
i-1, 11, 6, 8, 3, ……
i 번째 원소가 A[1..i]에 포함되는 사건이 일어날 확률
1/(n-i+1)
∴
1
(n i 1)!
(n i )!
n i 1
n!
n!
Randomize-In-Place 증명
• 종료 조건 i = n+1 일 때,
(n-n)!/n! = 0!/n! = 1/n!
= A[1..n]배열에 임의 n-순열이 존재할 확률
∴ A[1..n]은 균등 임의 순열이고 이 알고리즘
은 균등 임의 순열을 생산한다.
생일 문제
• 최소 몇 명이 있어야 그들 중 두 명의 생일
이 같을 확률이 50% 이상이겠는가?
• 확률적 분석
• 지표 확률 변수를 통한 분석
확률적 분석
• 인원수를 k, 일년의 날짜수를 n 이라 하면
생일이 겹치지 않는 사건 Bk 에 대하여
k 1
Pr{Bk } Pr{Bk 1} Pr{ Ak | Bk 1}
Pr{Bk } e
Pr{Bk 2 } Pr{ Ak 1 | Bk 2 } Pr{ Ak | Bk 1}
e
e
( k 1) n
e
i 1 i / n
e k ( k 1) / 2 n 1 / 2
Pr{B1} Pr{ A2 | B1} Pr{ A3 | B2 } Pr{ Ak | Bk 1}
n 1 n 2 n k 1
1
n
n n
1 2 k 1
1 1 1 1
n
n n
1 / n 2 / n
∵생일이 겹치지 않을 확률이 높
아야 하므로 마지막 부등식 성립
k (k 1) / 2n ln( 1 / 2)
1 x ex
k (k 1)
2n ln 2
k
(1 1 (8 ln 2)n ) / 2
n 365 일때 k 23 (명)
지표 확률 변수를 통한 분석
k명 중 1≤i≤j≤k인 임의의 사람 i, j 에 대하여
• Xij = I{i 와 j 가 같은 생일을 갖는다.}
1
0
i와 j가 같은 생일을 갖는 경우
그렇지 않은 경우
Pr{Xij}= 1/n
k
k
i
j i 1
전체 확률 변수 X X ij
지표 확률 변수를 통한 분석
E[ X ]
k k
E X ij
i 1 j i 1
k
k
E[ X
i 1 j i 1
ij
]
k 1
2 n
k (k 1)
2n
같은 생일을 갖는 사람들 쌍에 대한 기대값
k (k 1)
2n
일때
기대값이 1 이상이 된다.
즉, 생일이 같은 사람이 나오길
기대할 수 있다.
∴ n = 365일 때 식을 만족하는
최소의 정수 k = 28 (명)
공과 주머니
• 모든 주머니에 적어도 한 개의 공을 넣으
려면 몇 개의 공을 던져야 하는가?
• ni = i번째 주머니에 공을 넣기 위해 던진
횟수 라 할 때
b
총 횟수 n = i 1 ni
Pr{ni} = (b – i + 1) / b
공과 주머니
E[n]
b
E ni
i 1
E ni
b
i 1
b
b
i 1 b i 1
b
1
( i b 부터 1까지 역으로 더해서)
i 1 i
b(ln b O(1))
b
연속 발생
동전을 던져 계속 앞면이 나오는 연속 발생
중 기대값으로 가장 큰 것은?
n 2 lg n 1
Pr Ai , 2 lg n
i 1
n 2 lg n 1
2
1
/
n
i 1
n
2
1
/
n
i 1
1/ n
상한 구하기
E[ L]
n
j Pr{L j }
j 0
2 lg n 1
n
j Pr{L j }
j 2 lg n
j 0
2 lg n 1
n
(2lg n) Pr{L j }
j 2 lg n
j 0
j Pr{L j }
2 lg n 1
2 lg n
Pr{L j }
j 0
2 lg n 1 n (1 / n)
O (lg n)
n Pr{L j }
n
n
j 2 lg n
Pr{L j }
하한 구하기
E[ L]
n
j Pr{L j }
j 0
(lg n ) / 2
j Pr{L j }
j 0
(lg n ) / 2
0 Pr{L j }
j 0
(lg n) / 2
n
j (lg n ) / 2
n
j (lg n ) / 2
n
j 2 lg n
j Pr{L j }
Pr{L j }
(lg n) / 2 (1 O(1 / n))
(lg n)
(lg n) / 2 Pr{L j }
온라인 고용 문제
• 전체를 보지 않고 단 한 번 고용하고 취소 없는
• 기존 고용 문제의 변형판
On-Line-Maximum(k,n)
1. bestscore <- -∞
2. For I <- 1 to k
3.
do if score(i) > bestscore
4.
then bestscore <- score(i)
5. For I <- k+1 to n
6.
do if score(i) > bestscore
7.
then return I
8. return n
온라인 고용 문제
Pr{S}
성공적 고용 확률
n
k
1
dx
x
n 1
1
i k i
n
Pr{Si }
i k 1
n
k
i k 1 n(i 1)
k n 1
n i k 1 i 1
k n 1 1
n i k i
n 1
1
k 1 x dx
k
k
(ln n ln k ) PS{S} (ln( n 1) ln( k 1))
n
n
1
(하한을 최대화할 수 있는 k를 계산) (ln n ln k 1)
n