[TAOCP] 1.2.1 수학적 귀납법

2,318 views
1,989 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,318
On SlideShare
0
From Embeds
0
Number of Embeds
468
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[TAOCP] 1.2.1 수학적 귀납법

  1. 1. TAOCP 1.2.1 수학적 귀납법 mathematical induction ohyecloudy http://ohyecloudy.com 아꿈사http://cafe.naver.com/architect1.cafe
  2. 2. 수학적 귀납법• 알고리즘적인 증명 절차algorithmic proof procedure• 양수 n에 대해 P(n)이 참이다를 증명 – Basis : P(1)이 참이다를 증명 – Inductive Step : • 만일 P(1),P(2),...,P(n)이 모두 참이면 • P(n+1)도 참이다를 증명
  3. 3. 11 , 2 1  3  22 , 1  3  5  32 , 1  3  5  7  42 , 1  3  5  7  9  52 , ... P(n) 1  3  ...  (2n  1)  n 2P(n)이 모든 양수 n에 대해 참임을 증명하라
  4. 4. • Basis : 1  12• Inductive Step : 1  3  ...  (2n  1)  n 2 1  3  ...  (2n  1)  (2n  1)  n 2  (2n  1)  (n  1) 2
  5. 5. F0 , F1 , F2 ,... F0  0, F1  1, n  0 Fn  2  Fn  Fn 1 피보나치 수열   (1  5 ) / 2 황금비 P(n) Fn   n 1P(n)이 모든 양수 n에 대해 참임을 증명하라
  6. 6. n  1  F1  1   0   n 1 n=1일때 P(n+1)을 직접 증명 • n=2일때 값을 직접 계산했다는 말n  2  F2  1  1.6   1   21 n-1, n 으로부터 n+1을 증명하고 있음 n=2 값을 구할 때 귀납법을 사용하려면Fn 1  Fn 1  Fn   n2  n 1  n2 (1   ) • n=0, n=1일 때, 값이 필요. Fn 1   n • 양수 n이라는 조건이 있어 어긋남. 1     2
  7. 7. 확장된 유클리드 알고리즘• 두 양의 정수 m과 n이 주어졌을 때, – 그 수의 최대 공약수 d를 계산한다. – 또한 am+bn=d가 되는 두 정수 a, b를 계산 • a, b가 반드시 양수여야 하는 것은 아님• E1. [초기화] a’b1, ab’0, cm, dn• E2. [나누기] c를 d로 나눈 몫과 나머지를 각각 q와 r – c=qd+r,0≤r<d• E3. [나머지가 0?] r=0이면 종료. am+bn=d가 성립• E4. [순환] – cd,dr,ta’,a’a, – at-qa,tb’,b’b,bt-qb. – goto E2
  8. 8. 모든 m과 n에 대해 증명• P(n)을 “알고리즘 E는 모든 양수 n과 m에 대 해 작동한다.” – 수학적 귀납법을 적용할 수도 있음 – 수월하게 풀리지 않는다. – 몇 가지 추가적인 사실들도 증명해야 함
  9. 9. • a,b,a’,b’에 대한 증명 필요.• E2를 수행할 때마다 항상 성립을 증명 – a’m+b’n=c – am+bn=d• 증명 방법 – 처음 도달했을 때, 확실히 참 – 단계 E4 역시 유효성을 변경하지 않는다 – 연습문제 6
  10. 10. 시작 m  0, n  0 a0, a’1,cm b1,b’0,dn c  m  0, d  n  0 a  b  0, a  b  1 qc/d rc%d am  bn  d , a m  b n  c  qd  r 0  r  d , gcd( c, d )  gcd( m, n) Y r=0? 종료 am  bn  d  gcd( m, n) N cd, dr;ta’, a’a, at-qa;tb’,b’b,bt-qb; am  bn  d , a m  b n  c, d  0, gcd( c, d )  gcd( m, n)
  11. 11. 시작 m  0, n  0 시작 조건 a0, a’1,cm b1,b’0,dn c  m  0, d  n  0 단순 치환 a  b  0, a  b  1 qc/d rc%d Y r=0? 종료 N cd, dr;ta’, a’a, at-qa;tb’,b’b,bt-qb;
  12. 12. 시작 a0, a’1,cm b1,b’0,dn c  m  0, d  n  0 a  b  0, a  b  1 qc/d rc%d am  bn  d , a m  b n  c  qd  r 0  r  d , gcd( c, d )  gcd( m, n) 이 사이에 값을 바꾸는 치환이 없음 Y • r=0 인지 검사하는 분기만 있음 r=0? 종료 N 알고리즘 종료에서 성립하는E4 am+bn=d 가 성립해야 함 cd, dr; • a’m+b’n=c도 성립 ta’, a’a, at-qa; • 시작할 때 참. E4에서 유효성을 안 바꿈 tb’,b’b,bt-qb;
  13. 13. 시작 a0, a’1,cm b1,b’0,dn qc/d rc%d am  bn  d , a m  b n  c  qd  r 0  r  d , gcd( c, d )  gcd( m, n) Y r=0? 종료 c=qd+r gcd(m,n)=gcd(c,d)=gcd(d,r) N cd, dr cd, dr;ta’, a’a, at-qa;tb’,b’b,bt-qb; am  bn  d , a m  b n  c, d  0, gcd( c, d )  gcd( m, n)
  14. 14. • 모든 알고리즘의 유효성을 증명하는 일반적인 방법을 고안해낼 수 있다.• 알고리즘 순서도를 작성• 순서도와 순서도를 잇는 화살표마다 – 거쳐 갈 당시의 주요 상태들에 대한 단언assertion
  15. 15. • 상자에 들어가는 화살표가 참이라면 나오는 화 살표에 붙은 단언은 참이다.• 모든 상자에 대해 증명했다면 – 알고리즘 수행 전반에서 모든 단언들이 참• 순서도 안에서 운행되는 화살표들의 개수를 가 지고 계산 횟수에 대해 귀납을 사용 – 첫째 화살표에 대한 단언은 옳다. – n번째 화살표에 대한 단언이 참이라면 – (n+1)번째 화살표에 대한 단언도 참.
  16. 16. • 주어진 알고리즘이 유효함을 증명 – 순서도에 집어넣을 적절한 단언들을 고안하는 문제• 어려운 것 몇 개만 잘 해결한다면 나머지는 기 계적으로 할 수 있다. 어려운 부분 가장 창조적인 부분
  17. 17. • 우리가 알고리즘을 이해하는 방식을 반영 – 알고리즘의 정확성을 증명하는 방법의 더욱 중요한 또 다른 측면• 알고리즘이 왜 유효한지 진정으로 이해 – 모든 단언들이 은연중에 머리 속에 채워지는 지점• 핵심 단언들을 반드시 명시적으로 알려주어야 함 – 기계적인 방식으로 도출할 수 없는 단언 – 어떠한 알고리즘을 다른 누군가에게 설명할 때
  18. 18. • 알고리즘이 종료한다는 점은 증명하지 않았음 – 종료하지 않는 조건 m  1, n  2• 단지 만일 알고리즘이 종료한다면 정확한 답을 낸다는 것을 증명했을 뿐• 종료 증명은 유효성 증명과는 개별적으로 처리 하는 게 일반적

×