240 likes | 460 Views
8 장 . 재귀 (1). 이산수학 및 응용 하병현 bhha@pusan.ac.kr. 목차. 8.1 재귀적으로 정의된 수열 8.2 반복을 사용한 재귀식 풀이 8.3 상수 계수를 갖는 2 계 선형동차 재귀식 8.4 일반적인 재귀적 정의. 8.1 재귀적으로 정의된 수열.
E N D
8장. 재귀(1) 이산수학 및 응용 하병현 bhha@pusan.ac.kr
목차 8.1 재귀적으로 정의된 수열 8.2 반복을 사용한 재귀식 풀이 8.3 상수 계수를 갖는 2계 선형동차 재귀식 8.4 일반적인 재귀적 정의
8.1 재귀적으로 정의된 수열 So, Nat’ralists observe, a Flea / Hath smaller Fleas that on him prey, / And these have smaller Fleas to bite ’em, / And so proceed ad infinitum. Jonathan Swift, 1733
재귀(Recursion) • 수열의 정의 방법 • 처음 몇 항을 열거 • 3, 5, 7, … • 다음은 무엇? • n번째 항에 대한 공식을 기술 • an (–1)n/(n + 1), n은 음이 아닌 정수 • 초기 조건과 항들의 관계를 재귀적으로 기술 • b0 1, b1 3 • bk bk–1 + bk–2 재귀적으로 정의할 수 있다는 것은 수학적 귀납법으로 증명할 수 있다는 것과 동치
수열의 재귀적 정의 • 정의 • 수열 a0, a1, a2, …의 재귀식(recurrence relation)은 정수 i와 k에 대하여(k i) 수열의 항 ak와 그에 선행하는 항 ak–1, ak–2, …, ak–i사이의 관계를 정의한 식이다. 재귀식에 대한 초기조건(initial condition)은 처음 몇 개의 항을 기술한 식으로, i가 고정된 값이면 a0, a1, … ai–1의 값을 기술하고, i가 k에 종속적이면 a0, a1, …, am의 값을 기술한다(m은 음이 아닌 정수).
수열의 재귀적 정의 • 예제 • ck ck–1 + kck–2 + 1 • c0 1, c1 2 • c2, c3, c4? • 예제: 같은가? • 정수 k 1에 대하여, sk 3sk–1 – 1 • 정수 k 0에 대하여, sk+1 3sk – 1
수열의 재귀적 정의 • 예제: 재귀식을 만족하는가? • 1, –1!, 2!, –3!, …, (–1)nn!, … (모든 정수 n 0) • sk (–k)sk–1 (각각의 정수 k 1) • 풀이 • 주어진 수열의 일반항을 sn이라 하면, sn (–1)nn! • 일반항의 공식에 k, k– 1을 대입하면, • sk (–1)kk!, sk–1 (–1)k–1(k–1)! • 따라서, (–k)sk–1 (–k)(–1)k–1(k–1)! (–1)k(–1)k–1(k–1)! (–1)kk! sk
재귀적으로 정의된 수열 • 재귀적으로 문제의 해결 • 원래 문제를 동일한 형태의 작은 문제로 분할 • 문제가 쉽게 해결될 수 있을 만큼 작아질 때까지 • 최하위의 문제에 대한 답을 구하고, 그것을 사용하여 상위의 문제에 대한 답을 구하고, … • 재귀적 패러다임 또는 재귀적 믿음 • 작은 문제에 대한 답을 이미 알고 있다고 가정
하노이의 탑 • 예제: 몇 번이 필요한가? • 64개의 디스크를 C로 옮겨야 함. 하나씩 옮기되 작은 디스크가 큰 디스크 아래로 갈 수 없음.
하노이의 탑 • 예제: 4개를 옮긴다면, …
하노이의 탑 • 예제(계속): 재귀적 해법
하노이의 탑 • 예제(계속): 재귀적 해법 • mk(ab)를 k개의 디스크를 a에서 b로 옮기는 필요한 최소 이동 회수라 정의하면, • mk(AC) mk–1(AB) + 1 + mk–1(BC) • 그런데, 개수는 옮기는 위치와 관련 없음 • 따라서, mk를 k개의 디스크를 옮기는 필요한 최소 이동 회수라 정의하면, • mk mk–1 + 1 + mk–1 2mk–1 + 1 • m1 1
하노이의 탑 • 예제(계속) • 64개의 디스크를 옮기려면 몇 번이 필요할까? • m64 1.844674 1019 • 1초에 하나씩 옮긴다면 대략 얼마나 걸릴까? • 약 5845억 년
피보나치 수 • 예제 • 남녀 토끼 한 쌍이 연초에 태어났다. • 태어난 첫 달에는 불임이나 다음 달부터 매 달 말에 한 쌍의 남녀 토끼를 낳는다. • 1년 동안 토끼는 죽지 않는다. • 연말에는 토끼가 몇 마리나 있을까?
피보나치 수 • 예제(계속) • 생각해보면, • 따라서, • k달 말의 토끼 쌍의 수 k– 1 달 말의 토끼 쌍의 수 + k– 2 달 말의 토끼 쌍의 수 1 달 말 2 달 말 3 달 말 4 달 말 5 달 말 6 달 말 1쌍 1쌍 2쌍 3쌍 5쌍 8쌍 13쌍
피보나치 수 • 예제(계속) • Fn을 n달 말의 토끼 쌍의 수라 하면, • Fn Fn–1 + Fn–2 http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/fibnat.html
비트열의 수 • 예제 • 비트열은 0과 1로 구성된 문자열이며, 빈 문자열은 으로 표시한다. • ‘11’을 포함하지 않는 비트열 중에서 길이가 0, 1, 2, 3인 것을 각각 열거하면? • 길이 0: • 길이 1: 0, 1 • 길이 2: 00, 01, 10, 11 • 길이 3: 000, 001, 010, 011, 100, 101, 110, 111
비트열의 수 • 예제(계속) • sn을 nZnonneg에 대하여 길이가 n이고 ‘11’을 포함하지 않는 비트열의 개수로 정의하면, s0, s1, s2, s3는? • 각각, 1, 2, 3, 5. • 그렇다면, ‘11’을 포함하지 않는 비트열 중 길이가 10인 것의 개수는? 즉, s10은? • 어떻게 더 작은 같은 문제로 쪼갤 수 있을까?
비트열의 수 • 예제(계속) • 길이가 n이고 ‘11’을 포함하지 않는 비트열의 집합은 아래의 두 집합으로 분할 될 수 있음 i) 0으로 시작하고 ‘11’을 포함하지 않는 비트열의 집합 ii) 1로 시작하고 ‘11’을 포함하지 않는 비트열의 집합 • i)은 sn–1개 • ii)는 ‘10’으로 시작해야 하므로 sn–2개 • 따라서, sn sn–1 + sn–2.
부분집합으로 분할하는 방법의 수 • 예제 • {1, 2, 3}을 2개의 부분집합으로 분할하는 방법의 수는? • {1, 2}{3} {1, 3}{2} {2, 3}{1} • 그렇다면, 크기 n인 집합을 r개의 부분집합으로 분할하는 방법의 수는? • 2계 Stirling 수(Stirling number of the second kind) • Sn,r로 표기
부분집합으로 분할하는 방법의 수 • 예제(계속) • S4,1? • {1, 2, 3, 4} • S4,4? • {1}{2}{3}{4} • S4,2? • 부분집합이 i) 모두 2개의 원소를 갖는 경우와 ii) 하나는 1개 다른 하나는 3개를 갖는 경우로 분리 • {1, 2}{3, 4} {1, 3}{2, 4} {1, 4}{2, 3} • {1}{2, 3, 4} {2}{1, 3, 4} {3}{1, 2, 4} {4}{1, 2, 3}
부분집합으로 분할하는 방법의 수 • 예제(계속) • S4,3? • 각 부분집합이 1 개, 1 개, 2개를 가짐 • 오름차순으로 나열하면, • {1}{2}{3, 4} • {1}{3}{2, 4} • {1}{4}{2, 3} • {2}{3}{1, 4} • {2}{4}{1, 3} • {3}{4}{1, 2}
부분집합으로 분할하는 방법의 수 • 예제(계속) • 위와 같은 방식으로 센다면, • Sn,r은 i) n개를 r개로 나누는 각각의 방법에 대해 ii) 원소를 배치하는 방법의 수를 세면 됨 • 물론 셀 수는 있겠지만 하나의 수식으로 도출되지 않는 문제를 지님
부분집합으로 분할하는 방법의 수 • 예제(계속) • 재귀식을 사용한 해법 • {n}을 포함하는 것과 {n}을 포함하지 않는 경우로 구분할 수 있음 • S4,3의 예에서 {4}를 포함하는 것 • {1}{4}{2, 3} {2}{4}{1, 3} {3}{4}{1, 2} • S3,2와 동일 • S4,3의 예에서 {4}를 포함하지 않는 것 • {1}{2}{3, 4} {1}{3}{2, 4} {2}{3}{1, 4} • 3S3,3과 동일 • 따라서, Sn,r Sn–1,r–1 + rSn–1,r