tümevarım ve Özyineleme...1 tümevarım ve Özyineleme csc-2259 ayrık yapılar konstantin busch...

Post on 29-Nov-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Tümevarım ve Özyineleme

CSC-2259 Ayrık Yapılar

Konstantin Busch - LSU 1

Tümevarım

Konstantin Busch - LSU 2

Tümevarım çok kullanışlı bir ispat tekniğidir.

Bilgisayar bilimlerinde, tümevarım algoritmalarının özelliklerini kanıtlamak için kullanılır.

Tümevarım ve öz yineleme bir biri ile ilişkilidir.•Özyineleme algoritmalar için bir tanımlama metotdor.•Tümevarım öz yineleme algoritmalrı için uygun bir ispat metodudur.

2

Konstantin Busch - LSU 3

önermesinin doğru olduğunu ispat etmek içintümevarım yöntemini kullanınız:

)(nP

Temel tümevarım:

Tümevarım hipotezi:

Tümevarım basamğı:

doğru olduğunu ispatlayınız

doğru olduğunu varsayınız.

)1(P

)(kP

)1( kP

(her hangi bir k pozitif tam sayısı için)

doğru olduğunu varsayınız.

Konstantin Busch - LSU 4

)1( kP

)(kP

)1()( kPkP

Tümevarım basamaklarını diğer bir ifade ile ispatlarsak:

k her pozitif tam sayı için

Tümevarım hipotezi: doğru olduğunu varsayınız.

(her hangi bir k pozitif tam sayısı için)

Tümevarım basamğı:doğru olduğunu varsayınız.

3

Konstantin Busch - LSU 5

)1()( kPkP)1(PDoğru Doğru

)4()3()2()1( PPPP

Temel tümevarım Tümevarım basamağı

Bütün pozitif tamsayılar için önerme doğrudur

Konstantin Busch - LSU 6

Çıkarım kuralı olarak tümevarım:

)())]1()(()1([ nnPkPkPkP

4

7

2

)1(321:)(

nnnnP

2

)11(11:)1(

P

2

)1(21:)(

kkkkP

K. Busch - LSU

Teorem:

İspat:

2

)1)1)((1()1(21:)1(

kkkkkP

İspatlarsak

olduğunu varsayalım

Temel tümevarım:

Tümevarım hipotezi:

Tümevarım basamğı:

Konstantin Busch - LSU 8

2

)1)1)((1(

2

)1(2)1(

)1(2

)1(

)1(21:)1(

kk

kkk

kkk

kkkP (tümevarım hipotezi)

İspat sonu

Tümevarım basamğı:

5

Konstantin Busch - LSU 9

Harmonik sayılar

jH j

1

4

1

3

1

2

11

12

25

4

1

3

1

2

114 HÖrnek:

,3,2,1j

Konstantin Busch - LSU 10

Teorem:2

12

nH n

İspat:

0n

Temel tümevarım:

21

2

011122 0

nHHH n

0n

6

Konstantin Busch - LSU 11

Tümevarım hipotezi: kn

21

2

kH k Beklendiğini varsayalım:

Tümevarım basamağı: 1 kn

2

1112

kH kGöstereceğiz:

2

11

2

1

21

2

12

21

2

1

12

1

21

2

1

12

1

2

1

12

1

2

1

3

1

2

11

1

1

12

12 1

k

k

k

k

H

H

kk

kk

kk

kkk

k

k

Konstantin Busch - LSU 12

İspat sonu

Tümevarım hipotezinden

7

Konstantin Busch - LSU 13

Teorem: nH n 12

İspat:

0n

Temel tümevarım:

nHHH n 1011122 0

0n

Konstantin Busch - LSU 14

Tümevarım hipotezi: kn

kH k 12

Beklendiğini varsayalım:

Tümevarım hipotezi: 1 kn

)1(112 kH kGöstereceğiz:

8

Konstantin Busch - LSU 15

)1(1

11 12

121

2

1

12

11

2

1

12

1

2

1

12

1

2

1

3

1

2

11

1

12

12 1

k

k

k

k

H

H

kk

kk

kk

kkk

k

k

İspat

Tümevarım hipotezinden

Konstantin Busch - LSU 16

nHn

n 12

12

Gördüğümüz gibi:

Beklendiği gibi: kk HHH k loglog 22

kHk

k log12

log1

)(log kHk

9

Konstantin Busch - LSU 17

boşlukboşluk

boşluk

2222 22

33 22

Triominos

Konstantin Busch - LSU 18

Teorem: Her dama tahtasında Triominoes’in kuyruğu bir kare hareket edebilir.

1,22 nnn

İspat: Temel tümevarım: 1n

boşluk

11 22

10

Konstantin Busch - LSU 19

Tümevarım hipotezi: kn

kk 22

Boşluk her hangi bir yerde

dama tahtasında boşluğun her hangi bir yere yerleştiğini varsayalım

kk 22

Konstantin Busch - LSU 20

Tümevarım basamağı: 1 kn

11 22 kk

11

Konstantin Busch - LSU 21

kk 22 kk 22

Tümevarım hipoteziyle karede boşluğun döşendiğini düşünelim.

kk 22

Üç yapay delikler eklendi

Konstantin Busch - LSU 22

23 x 23 durumda:

12

Konstantin Busch - LSU 23

kk 22 kk 22

Triomine ile üç boşluğu yer değiştirelim. Şimdi bütün alanlar döşenmiş olur.

Konstantin Busch - LSU 24

İspat sonu

23 x 23 durum için:

13

Güçlü Tümevarım

Konstantin Busch - LSU 25

Temel tümevarım:

Tümevarım hipotezi:

Tümevarım basamağı:

doğru olduğunu ispatlayalım

doğru olduğunu varsayalım

doğru oldğunu varsayalım

)1(P

)()2()1( kPPP

)1( kP

)(nP Önermesi için:

Konstantin Busch - LSU 26

Teorem: her tamsayı, asal sayıların sonucudur.(sonuçlarından en az biri asal sayıdır)

2n

İspat:

Temel tümevarım: 2n

2 sayısı bir asal sayıdır.

Tümevarım hipotezi: kn 2

ve arasındaki her tamsayı asal sayıların bir sonucudur diye söylenebilir.2 k

(Güçlü tümevarım)

14

Konstantin Busch - LSU 27

Tümevarım basamakları: 1 kn

Eğer asal sayı ise ispat bitmiştir.1k

Eğer asal sayı değilse, o biileşiktir.1k

bak 1 kba ,2

Konstantin Busch - LSU 28

bak 1 kba ,2

Tümevarım hipotezine göre;

ipppa 21

jqqqb 21

1, ji

ji qqppbak 111

Asal sayıAsal sayı

İspat sonu

15

Konstantin Busch - LSU 29

Teorem:

için her posta gönderim bedeli 4 ve 5 sentlik posta pulları kullanılarak ayarlanabilir.

12n

İspat:Tümevarım temelleri:

44412 n

Dört durumu inceleyelim.(tüme varım basamakları için)

54413 n

45514 n

55515 n

(Güçlü tüme varım)

Konstantin Busch - LSU 30

Tümevarım hipotezi:

ile arasındaki her posta bedelinin 4 sent ve 5 sentlik pullar kullanarak üretilebileceğini varsayalım

kn 12

12 k

Tümevarım basamağı: 1 kn

Eğer ise tümevarım basamağı tümevarım temelinden direkt olarak takip eder

1412 k

54 ban

16

Varsayım olarak:

Konstantin Busch - LSU 31

15k 4)3(1 kk

kk )3(12

Tümevarım hipotezi

54)3( bak

54)1(4)3(1 bakk

İspat sonu

Faktoriyal fonksiyon !)( nnf

Özyineleme

Konstantin Busch - LSU 32

Özyineleme; fonksiyonların, kümelerin, algoritmaların tanımlanmasında kullanılır.

Örnek:

1)0( f

)()1()1( nfnnf Özyineleme basamak:

Özyineleme temel

17

Konstantin Busch - LSU 33

factorial( ) {if then

return else

return }

n1n

1

)1factorial(n-n

//özyineleme temel

//özyineleme basamak

Faktoriyel için özyineleme algoritması

Konstantin Busch - LSU 34

Fibonacci sayıları

21 nnn fff

1,0 10 ffÖzyineleme temel:

Özyineleme basamak:

,,,, 3210 ffff

,4,3,2n

18

Konstantin Busch - LSU 35

1358

835

523

312

211

101

1

0

567

456

345

234

123

012

1

0

fff

fff

fff

fff

fff

fff

f

f

Konstantin Busch - LSU 36

fibonacci( ) {if then

return else

return }

n}1,0{nn

)2fibonacci()1fibonacci( n-n-

//özyineleme temel

//özyineleme basamak

Fibonacci fonksiyonu için özyineleme algoritması

19

Konstantin Busch - LSU 37

fibonacci( ) {if thenelse {

for to do {

}return

}

n0n

Fibonacci fonksiyonu için iterasyon algoritması

0y

0x1y

1i 1nyxz

yx zy

y

Konstantin Busch - LSU 38

Teorem: 2 nnf

2

51

3n

(altın oran)

için

İspat: Tümevarım (güçlü) ile ispat

Tümevarım temel: 3n 4n

23f

24 3 f

20

için olduğunu ispatlayalım

Konstantin Busch - LSU 39

Tüme varım hipotez:

2 nnf

kn 3

Tümevarım basamak: 1 kn

Olduğunu varsayalım

)1(1

k

kf k4

Konstantin Busch - LSU 40

13211

kkk

kkk fff

12

için denklemini çözelim012 xx

323321 )1( kkkkk

İspat sonuTümevarım hipotezi

21

Konstantin Busch - LSU 41

En büyük ortaka bölen

aa )0,gcd(

)mod,gcd(),gcd( babba

Özyinelemeli basamak:

Özyinelemeli temel:

ba

Konstantin Busch - LSU 42

gcd( ) {if then

return else

return }

ba,0b

a

)mod gcd(b, ba

//özyineleme temel

//özyineleme basamak

En büyük ortak bölen içinözyinelemeli algoritma

//a>b olduğunu varsayalım

22

Konstantin Busch - LSU 43

Lames Teoremi:, için Euclidian algoritması

en çok bölerek (iterasyon) kullanılır.),gcd( ba

b10log5 ba

İspat:

Algoritmanın bölümünde Fibonacciilişkilerinde göstermiştik.

Konstantin Busch - LSU 44

0

0

0

0

1

1112

233221

122110

nnn

nnnnnn

qrr

rrrqrr

rrrqrr

rrrqrr

0ra 1rb

nnnnnn rrrrrr

rrrrrrba

)0,gcd(),gcd(),gcd(

),gcd(),gcd(),gcd(),gcd(

112

322110

İlk sıfır sonuç

10 / rr

21 / rr

12 / nn rr

nn rr /1

Bölümler kalanlar

23

Konstantin Busch - LSU 45

nnnnn

nnnnnnn

rrqrr

rrrrqrr

rrrrqrr

rrrrqrr

20 11

12112

3213221

2102110

ve tam sayı olduğu için burada sonlanır.

1 nn rr nq

Konstantin Busch - LSU 46

321

432

123

12

1 2

1

rrr

rrr

rrr

rrr

rr

r

nnn

nnn

nn

n

11211

21432

534123

42312

321

2

222

1

nnn

nnn

nnn

nnn

nn

n

fffrrr

fffrrr

fffrrr

fffrrr

ffrr

fr

olduğu için burada kalır.1),gcd( barn

24

Konstantin Busch - LSU 47

11 nfrb

11

n

nf

2

51

1 nb

1010 log)1(log nb

1log51log

log10

10

10 bb

n

bn 10log5

İspat sonu

Konstantin Busch - LSU 48

Mergesort (Birleştirme sıralı) algoritma

8 2 4 6 9 7 10 1 5 3

8 2 4 6 9 7 10 1 5 3

2 4 6 8 9 1 3 5 7 10

1 2 3 4 5 6 7 8 9 10

Böl

sırala sırala

birleştir

25

Konstantin Busch - LSU 49

sort( ) {if then {

return }else return

}

naaa ,,, 21 1n 2/nm

),,,sort( 21 maaaA ),,,sort( 1 nmm aaaB

),merge( BA

1a

Konstantin Busch - LSU 50

8 2 4 6 9 7 10 1 5 3Özyinelemeli çağrıların giriş değerleri

8 2 4 6 9 7 10 1 5 3

8 2 4 6 9 7 10 1 5 3

48 2 6 9

8 2

7 10 1

7 10

5 3

26

Konstantin Busch - LSU 51

1 2 3 4 5 6 7 8 9 10

Birleştirmenin giriş ve çıkış değerleri

2 4 6 8 9 1 3 5 7 10

2 4 8 6 9 7 10 1 5 3

42 8 6 9

8 2

7 10 1

7 10

5 3

Konstantin Busch - LSU 52

merge( ) {

while do {Listeden en küçük eleman çıkartılır ve eklenir

}if then {

kalan elemanlar eklenir}return

}

LBA, //iki sıralanmış liste

BA and BA,

L

BA or L

L

27

Konstantin Busch - LSU 53

2 4 6 8 9

2 4 8 6 9

Birleştirme

A B L Karşılaştırma2 4 8

4 888

6 96 96 9

99

22 42 4 62 4 6 82 4 6 8 9

2<64<66<88<9

Konstantin Busch - LSU 54

İki listeyi birleştirmek için karşılaştırılan toplam en çok sayı;

BA,

|||| scomparison# BA

A’nın uzunluğu B’nin uzunluğu

Birleştirme büyüklüğü

28

Konstantin Busch - LSU 55

Özyinelemeli çağırma ağacınaaa ,,, 21

2

21 ,,, naaa nnn aaa ,,,2

21

2

21,aa 43,aa 23, nn aann aa ,1

1a 2a 3a 4a 3na 2na 1na na

41 ,, aa nn aa ,,3

4

1 ,, naa 2

14

,, nn aa

4

31

2

,, nn aa

nn aa ,,1

4

3

kn 2Varsayım olarak

Konstantin Busch - LSU 56

Liste başına elemanlar

#ağacın seviyesi = nlog1kn 2Varsayım

nn loglog21

0log2 nn

1log22/ nn

)1(loglog22 nn

)2(loglog24 nn

Özyinelemeli çağırma ağacı

2log24/ nn

n

2/n 2/n

4/n 4/n 4/n 4/n

4 4

2 2 2 2

1 1 1 11 1 1 1

29

Konstantin Busch - LSU 57

Birleştirme ağacınaaa ,,, 21

2

21 ,,, naaa nnn aaa ,,,2

21

2

21,aa 43,aa 23, nn aann aa ,1

1a 2a 3a 4a 3na 2na 1na na

41 ,, aa nn aa ,,3

4

1 ,, naa 2

14

,, nn aa

4

31

2

,, nn aa

nn aa ,,1

4

3

Konstantin Busch - LSU 58

Birleştirme ağacı

2

4

2/n

n

4/n

1

n

2/n 2/n

4/n 4/n 4/n 4/n

4 4

2 2 2 2

1 1 1 11 1 1 1

Liste başına elemanlar

30

nn 44/

Konstantin Busch - LSU 59

nn 2/2

nn 4/4

nn 22/

nn 1

Seviye başına birleştirme

Toplam maliyet: nnn log1)-levels(#

Birleştirme ağacı Seviye başına karşılaştırma

n

2/n 2/n

4/n 4/n 4/n 4/n

4 4

2 2 2 2

1 1 1 11 1 1 1

Birleştirme başına elemanlar

Eğer karşılaştırma sayısı ise en çok

Konstantin Busch - LSU 60

kn 2nn log

Eğer karşılaştırma sayısı ise en çok

kn 2)log(log nnOmm

nm n 22 log

Birleştirmeli sıralamanın zaman karmaşıklığı:)log( nnO

top related