SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
TAOCP
  1.2.1 수학적 귀납법
  mathematical induction




                     ohyecloudy
              http://ohyecloudy.com
                            아꿈사
http://cafe.naver.com/architect1.cafe


                        2011.01.22
수학적 귀납법
• 알고리즘적인 증명 절차algorithmic proof procedure

• 양수 n에 대해 P(n)이 참이다를 증명
  – Basis : P(1)이 참이다를 증명
  – Inductive Step :
    • 만일 P(1),P(2),...,P(n)이 모두 참이면
    • P(n+1)도 참이다를 증명
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   2




P(n)이 모든 양수 n에 대해 참임을 증명하라
• Basis : 1  12
• Inductive Step :
             1  3  ...  (2n  1)  n 2
  1  3  ...  (2n  1)  (2n  1)  n 2  (2n  1)  (n  1) 2
F0 , F1 , F2 ,...
     F0  0, F1  1, n  0
     Fn  2  Fn  Fn 1        피보나치 수열




       (1  5 ) / 2           황금비

                         P(n)

     Fn     n 1




P(n)이 모든 양수 n에 대해 참임을 증명하라
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
확장된 유클리드 알고리즘
• 두 양의 정수 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
모든 m과 n에 대해 증명

• P(n)을 “알고리즘 E는 모든 양수 n과 m에 대
  해 작동한다.”
 – 수학적 귀납법을 적용할 수도 있음
 – 수월하게 풀리지 않는다.
 – 몇 가지 추가적인 사실들도 증명해야 함
• a,b,a’,b’에 대한 증명 필요.

• E2를 수행할 때마다 항상 성립을 증명
  – a’m+b’n=c
  – am+bn=d


• 증명 방법
  – 처음 도달했을 때, 확실히 참
  – 단계 E4 역시 유효성을 변경하지 않는다
  – 연습문제 6
시작
                               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)
시작
                               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;
시작


      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;
시작


 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)
• 모든 알고리즘의 유효성을 증명하는 일반적인
  방법을 고안해낼 수 있다.

• 알고리즘 순서도를 작성
• 순서도와 순서도를 잇는 화살표마다
 – 거쳐 갈 당시의 주요 상태들에 대한 단언assertion
• 상자에 들어가는 화살표가 참이라면 나오는 화
  살표에 붙은 단언은 참이다.

• 모든 상자에 대해 증명했다면
 – 알고리즘 수행 전반에서 모든 단언들이 참

• 순서도 안에서 운행되는 화살표들의 개수를 가
  지고 계산 횟수에 대해 귀납을 사용
 – 첫째 화살표에 대한 단언은 옳다.
 – n번째 화살표에 대한 단언이 참이라면
 – (n+1)번째 화살표에 대한 단언도 참.
• 주어진 알고리즘이 유효함을 증명
 – 순서도에 집어넣을 적절한 단언들을 고안하는 문제


• 어려운 것 몇 개만 잘 해결한다면 나머지는 기
  계적으로 할 수 있다.

      어려운 부분




  가장 창조적인 부분
• 우리가 알고리즘을 이해하는 방식을 반영
 – 알고리즘의 정확성을 증명하는 방법의 더욱 중요한
   또 다른 측면

• 알고리즘이 왜 유효한지 진정으로 이해
 – 모든 단언들이 은연중에 머리 속에 채워지는 지점

• 핵심 단언들을 반드시 명시적으로 알려주어야
  함
 – 기계적인 방식으로 도출할 수 없는 단언
 – 어떠한 알고리즘을 다른 누군가에게 설명할 때
• 알고리즘이 종료한다는 점은 증명하지 않았음
 – 종료하지 않는 조건
  m  1, n  2


• 단지 만일 알고리즘이 종료한다면 정확한 답을
  낸다는 것을 증명했을 뿐

• 종료 증명은 유효성 증명과는 개별적으로 처리
  하는 게 일반적
[TAOCP] 1.2.1 수학적 귀납법

Mais conteúdo relacionado

Mais de 종빈 오

트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기종빈 오
 
적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0종빈 오
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기종빈 오
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜종빈 오
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해종빈 오
 
[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스종빈 오
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개종빈 오
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템종빈 오
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81종빈 오
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우종빈 오
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합종빈 오
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개종빈 오
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline종빈 오
 
[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당종빈 오
 
[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary종빈 오
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬종빈 오
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명종빈 오
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering종빈 오
 
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이종빈 오
 

Mais de 종빈 오 (20)

트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기
 
적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
 
[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline
 
[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당
 
[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering
 
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
 

[TAOCP] 1.2.1 수학적 귀납법

  • 1. TAOCP 1.2.1 수학적 귀납법 mathematical induction ohyecloudy http://ohyecloudy.com 아꿈사 http://cafe.naver.com/architect1.cafe 2011.01.22
  • 2. 수학적 귀납법 • 알고리즘적인 증명 절차algorithmic proof procedure • 양수 n에 대해 P(n)이 참이다를 증명 – Basis : P(1)이 참이다를 증명 – Inductive Step : • 만일 P(1),P(2),...,P(n)이 모두 참이면 • P(n+1)도 참이다를 증명
  • 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 2 P(n)이 모든 양수 n에 대해 참임을 증명하라
  • 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. F0 , F1 , F2 ,... F0  0, F1  1, n  0 Fn  2  Fn  Fn 1 피보나치 수열   (1  5 ) / 2 황금비 P(n) Fn   n 1 P(n)이 모든 양수 n에 대해 참임을 증명하라
  • 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. 확장된 유클리드 알고리즘 • 두 양의 정수 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. 모든 m과 n에 대해 증명 • P(n)을 “알고리즘 E는 모든 양수 n과 m에 대 해 작동한다.” – 수학적 귀납법을 적용할 수도 있음 – 수월하게 풀리지 않는다. – 몇 가지 추가적인 사실들도 증명해야 함
  • 9. • a,b,a’,b’에 대한 증명 필요. • E2를 수행할 때마다 항상 성립을 증명 – a’m+b’n=c – am+bn=d • 증명 방법 – 처음 도달했을 때, 확실히 참 – 단계 E4 역시 유효성을 변경하지 않는다 – 연습문제 6
  • 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. 시작 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. 시작 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. 시작 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. • 모든 알고리즘의 유효성을 증명하는 일반적인 방법을 고안해낼 수 있다. • 알고리즘 순서도를 작성 • 순서도와 순서도를 잇는 화살표마다 – 거쳐 갈 당시의 주요 상태들에 대한 단언assertion
  • 15. • 상자에 들어가는 화살표가 참이라면 나오는 화 살표에 붙은 단언은 참이다. • 모든 상자에 대해 증명했다면 – 알고리즘 수행 전반에서 모든 단언들이 참 • 순서도 안에서 운행되는 화살표들의 개수를 가 지고 계산 횟수에 대해 귀납을 사용 – 첫째 화살표에 대한 단언은 옳다. – n번째 화살표에 대한 단언이 참이라면 – (n+1)번째 화살표에 대한 단언도 참.
  • 16. • 주어진 알고리즘이 유효함을 증명 – 순서도에 집어넣을 적절한 단언들을 고안하는 문제 • 어려운 것 몇 개만 잘 해결한다면 나머지는 기 계적으로 할 수 있다. 어려운 부분 가장 창조적인 부분
  • 17. • 우리가 알고리즘을 이해하는 방식을 반영 – 알고리즘의 정확성을 증명하는 방법의 더욱 중요한 또 다른 측면 • 알고리즘이 왜 유효한지 진정으로 이해 – 모든 단언들이 은연중에 머리 속에 채워지는 지점 • 핵심 단언들을 반드시 명시적으로 알려주어야 함 – 기계적인 방식으로 도출할 수 없는 단언 – 어떠한 알고리즘을 다른 누군가에게 설명할 때
  • 18. • 알고리즘이 종료한다는 점은 증명하지 않았음 – 종료하지 않는 조건 m  1, n  2 • 단지 만일 알고리즘이 종료한다면 정확한 답을 낸다는 것을 증명했을 뿐 • 종료 증명은 유효성 증명과는 개별적으로 처리 하는 게 일반적