離散数理工学 第 2回 数え上げの基礎:漸化式の立て方

Similar documents
離散数理工学 第 2回 数え上げの基礎:漸化式の立て方




01

2

2



2


離散数学 第 1回 論理 (1):命題論理

離散数学 第 4回 集合の記法 (1):外延的記法と内包的記法

Collatzの問題 (数学/数理科学セレクト1)

データ構造とアルゴリズム論

R R S S 6 S S D D S3 S3 R R S 6 S 6 S S D D w.o S3 S3 R5 3-0 R S 06 S 6 6 S S 6 D D 30 S3 w.o S3 R R8 7 3-

/

記号と準備

離散数学 第 2回 集合と論理 (2):集合と論理の対応

,,

( ) ( ) lex LL(1) LL(1)

教室案内.pptx

株主通信:第16期 中間報告書

P15 P211 1 P1 P4 P2 P3 P4 P17

untitled

untitled



H O S H I G E N E R

MultiWriter 5650F 活用マニュアル

シェアリングレター 第30号

() / (front end) (back end) (phase) (pass) 1 2

r2.dvi

r3.dvi

or a 3-1a (0 b ) : max: a b a > b result a result b ( ) result Python : def max(a, b): if a > b: result = a else: result = b ret

~~濱田のジイサンとの出会い~~

MultiWriter 5100F 活用マニュアル


MultiWriter 5650C 活用マニュアル


1. A0 A B A0 A : A1,...,A5 B : B1,...,B

, = = 7 6 = 42, =

橡多治見西高校、アンケート集計西高報告資料

Excel97関数編

1% 51% 4% 13% 31%

ERATO100913

untitled


橡計画0.PDF



A P18 P11 P P1 P4 P17 P3 P4 1

r3.dvi

apli_connection

untitled

Ruby Ruby ruby Ruby G: Ruby>ruby Ks sample1.rb G: Ruby> irb (interactive Ruby) G: Ruby>irb -Ks irb(main):001:0> print( ) 44=>

2 Seminario Print Exhibition


1 Ex Ex. 2 2

橡Taro9-生徒の活動.PDF

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

平成13年度日本分析センター年報

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

double 2 std::cin, std::cout 1.2 C fopen() fclose() C++ std::fstream 1-3 #include <fstream> std::fstream fout; int a = 123; fout.open( "data.t

取扱説明書 [F-01D]

離散最適化基礎論 第 11回 組合せ最適化と半正定値計画法


Microsoft PowerPoint - IntroAlgDs-05-4.ppt


ex01.dvi

Python Speed Learning

1-4 int a; std::cin >> a; std::cout << "a = " << a << std::endl; C++( 1-4 ) stdio.h iostream iostream.h C++ include.h 1-4 scanf() std::cin >>


, , B 305, ,

原発緊急講演

I 1 1 ( *) ( *) ex1-1.rb ) 2 CGI

yacc.dvi

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse


untitled

プリント

Cocos2d-x

haskell.gby


PDF

情報科学概論 第1回資料

11042 計算機言語7回目 サポートページ:

parser.y 3. node.rb 4. CD-ROM

1

untitled

exercise_text.dvi

CHO _CS3.indd

: : : TSTank 2

untitled


main

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

データ構造とアルゴリズム論

営業資料_EFO_LP

Transcription:

2 okamotoy@uec.ac.jp 2014 10 21 2014 10 29 10:48 ( ) (2) 2014 10 21 1 / 44

( ) 1 (10/7) ( ) (10/14) 2 (10/21) 3 ( ) (10/28) 4 ( ) (11/4) 5 (11/11) 6 (11/18) 7 (11/25) ( ) (2) 2014 10 21 2 / 44

( ) 8 (12/2) 9 (12/9) (12/16) 10 ( ) (1/6) 11 ( ) (1/13) 12 ( ) (1/20) ( ) (1/27) 13 ( ) (2/3) (2/17?) ( ) (2) 2014 10 21 3 / 44

( ) (2) 2014 10 21 4 / 44

1 2 3 ( ) (2) 2014 10 21 5 / 44

(V, E) V E 2 V V 2 V = {1, 2, 3, 4, 5} E = {{1, 2}, {1, 5}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {4, 5}} {2, 5} = {5, 2} ( ) ( ) (2) 2014 10 21 6 / 44

V = {1, 2, 3, 4, 5} E = {{1, 2}, {1, 5}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {4, 5}} 5 4 1 2 3 ( ) (2) 2014 10 21 7 / 44

G = (V, E) V G E G V G E G {u, v} E u, v v e v e u v u v V = {1, 2, 3, 4, 5} E = {{1, 2}, {1, 5}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {4, 5}} 2, 3 {2, 3} 1 5 4 2 {2, 3} 2 3 2 3 ( ) (2) 2014 10 21 8 / 44

1 1 1 3 5 6 2 2 4 6 5 3 4 1 2 3 4 5 6 ( ) (2) 2014 10 21 9 / 44

( ) (2) 2014 10 21 10 / 44

G = (V, E) G I V 2 u, v I {u, v} E ( ) (2) 2014 10 21 11 / 44

( ) 22 ( ) (2) 2014 10 21 12 / 44

22 ( ) (2) 2014 10 21 13 / 44

G = (V, E) v V σ v {0, 1} σ v = 0 v σv = 1 v σ v = 1 v V = ( ) (2) 2014 10 21 14 / 44

P 1 P 2 P 3 P 4 P 5 P n ( ) (2) 2014 10 21 15 / 44

n 1 2 3 4 5 2 3 5 8 13 ( ) (2) 2014 10 21 16 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

P 5 2 (A) = P 4 (B) = 2 P 3 + P 5 = P 4 + P 3 ( ) (2) 2014 10 21 17 / 44

( ) P n 2 ( n 3) (A) = P n 1 (B) = 2 P n 2 + n 3 P n = P n 1 + P n 2 ( ) (2) 2014 10 21 18 / 44

( ) P n 2 ( n 3) (A) = P n 1 (B) = 2 P n 2 + n 3 P n = P n 1 + P n 2 ( ) (2) 2014 10 21 18 / 44

( ) P n 2 ( n 3) (A) = P n 1 (B) = 2 P n 2 + n 3 P n = P n 1 + P n 2 ( ) (2) 2014 10 21 18 / 44

a n = P n 2 (n = 1 ) a n = 3 (n = 2 ) a n 1 + a n 2 (n 3 ) ( ) (2) 2014 10 21 19 / 44

P n P 2 (G n ) G 1 G 2 G 3 G 4 G 5 G n ( ) (2) 2014 10 21 20 / 44

P n P 2 G n 2 (A) = (B) = 3 +.... G k ( ) (2) 2014 10 21 21 / 44

P n P 2 G n 2 (A) = (B) = 3 +.... G k ( ) (2) 2014 10 21 21 / 44

P n P 2 G n 2 (A) = (B) = 3 +.... G k ( ) (2) 2014 10 21 21 / 44

P n P 2 (H n ) H 1 H 2 H 3 H 4 H 5 H n n 2 G n = H n + H n 1 ( ) (2) 2014 10 21 22 / 44

P n P 2 H n 2 (A) = (B) = 2 +.... n 2 H n = G n 1 + H n 1 ( ) (2) 2014 10 21 23 / 44

P n P 2 H n 2 (A) = (B) = 2 +.... n 2 H n = G n 1 + H n 1 ( ) (2) 2014 10 21 23 / 44

P n P 2 H n 2 (A) = (B) = 2 + G n 1.. H n 1.. n 2 H n = G n 1 + H n 1 ( ) (2) 2014 10 21 23 / 44

P n P 2 H n 2 (A) = (B) = 2 + G n 1.. H n 1.. n 2 H n = G n 1 + H n 1 ( ) (2) 2014 10 21 23 / 44

P n P 2 b n = G n c n = H n b n = c n = { 3 (n = 1 ) c n + c n 1 (n 2 ) { 2 (n = 1 ) b n 1 + c n 1 (n 2 ) ( ) (2) 2014 10 21 24 / 44

1 2 3 ( ) (2) 2014 10 21 25 / 44

A 1: def fnct(n) 2: print "a" 3: if n > 2 4: fnct(n-1) 5: fnct(n-2) 6: end 7: end fnct(n) a ( ) (2) 2014 10 21 26 / 44

n a n a n a n a 1 1 11 177 21 21891 31 2692537 2 1 12 287 22 35421 32 4356617 3 3 13 465 23 57313 33 7049155 4 5 14 753 24 92735 34 11405773 5 9 15 1219 25 150049 35 18454929 6 15 16 1973 26 242785 36 29860703 7 25 17 3193 27 392835 37 48315633 8 41 18 5167 28 635621 38 78176337 9 67 19 8361 29 1028457 39 126491971 10 109 20 13529 30 1664079 40 204668309 ( ) (2) 2014 10 21 27 / 44

A 1: def fnct(n) 2: print "a" 3: if n > 2 4: fnct(n-1) 5: fnct(n-2) 6: end 7: end f n = fnct(n) a ( ) (2) 2014 10 21 28 / 44

A 1: def fnct(n) 2: print "a" 3: if n > 2 4: fnct(n-1) 5: fnct(n-2) 6: end 7: end 2 n 1 a 4 5 ( ) (2) 2014 10 21 29 / 44

A 1: def fnct(n) 2: print "a" 3: if n > 2 4: fnct(n-1) 5: fnct(n-2) 6: end 7: end f n = { 1 (n 2 ) 1 + f n 1 + f n 2 (n 3 ) ( ) (2) 2014 10 21 30 / 44

Euclid Euclid 1: def gcd(a, b) # precondition: a >= b 2: print "G" 3: if b == 0 4: return a 5: else 6: gcd(b, a % b) 7: end 8: end a % b = a b gcd(a, b) G ( ) ( ) (2) 2014 10 21 31 / 44

Euclid (1) a b G 14 11 5 143 11 2 1432 11 4 14325 11 5 143259 11 5 1432591 11 5 14325910 11 4 143259106 11 3 1432591067 11 5 14325910676 11 2 143259106765 11 4 1432591067659 11 5 14325910676592 11 5 143259106765923 11 4 ( ) (2) 2014 10 21 32 / 44

Euclid (2) a b G 14 13 3 143 13 2 1432 13 4 14325 13 4 143259 13 4 1432591 13 4 14325910 13 3 143259106 13 4 1432591067 13 5 14325910676 13 4 143259106765 13 7 1432591067659 13 5 14325910676592 13 7 143259106765923 13 6 ( ) (2) 2014 10 21 33 / 44

Euclid Euclid 1: def gcd(a, b) # precondition: a >= b 2: print "G" 3: if b == 0 4: return a 5: else 6: gcd(b, a % b) 7: end 8: end g n = max {gcd(a, b) G } a 1,b n g n = b n g n ( ) (2) 2014 10 21 34 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid a, b 1 a b a a % b 2 a = bq + r ( 0 r < b) a % b = r a b q = a r b r = 1 r b b b > 0 q q 1 a a b r < b 2 2 a a b > r = a bq a b < a 2 2 a r 2 a = 2 ( ) n n n 2 = n 2 ( ) (2) 2014 10 21 35 / 44

Euclid Euclid 1: def gcd(a, b) # precondition: a >= b 2: print "G" 3: if b == 0 4: return a 5: else 6: gcd(b, a % b) 7: end 8: end g n = gcd(a, b) G a, b... ( b = n) ( ) (2) 2014 10 21 36 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (1) g n = gcd(a, b) G = 1 + gcd(b, a % b) G a % b = 0 g n = 2 ( gcd(b, a % b) ) a % b 0 ( ) (2) 2014 10 21 37 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Euclid (2) g n = gcd(a, b) G = 1 + gcd(b, a % b) G = 2 + 2 + gcd(a % b, b % (a % b)) G max a 1,b b/2 {gcd(a, b ) G } = 2 + g b/2 = 2 + g n/2 n 1 g n 2 + g n/2 { = 1 n = 0 g n 2 + g n/2 n 1 ( ) (2) 2014 10 21 38 / 44

Collatz 1: def collatz(n) 2: print n 3: if n % 2 == 0 4: collatz(n/2) 5: else 6: collatz(3*n+1) 7: end 8: end Collatz ( ) n collatz(n) 1 n 20 2 58 (Oliveira e Silva 10) ( ) (2) 2014 10 21 39 / 44

1 2 3 ( ) (2) 2014 10 21 40 / 44

3 3 1 2 3 ( ) (2) 2014 10 21 41 / 44

( ) (2) 2014 10 21 42 / 44

( ) TA OK OK ( ) (2) 2014 10 21 43 / 44

1 2 3 ( ) (2) 2014 10 21 44 / 44