Top Banner
Kombinatorika, výpočty Radek Pelánek IV122
27

Kombinatorika, výpočty

Feb 08, 2017

Download

Documents

lebao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Kombinatorika, výpočty

Kombinatorika, výpočty

Radek Pelánek

IV122

Page 2: Kombinatorika, výpočty

Styl

jednoduché výpočty s číslyzatím spíše opakování + pár dílčích zajímavostíužitečný trénink programování (rekurze)experimentování

Page 3: Kombinatorika, výpočty

Kombinace, permutace, variace

Daná množina M s n prvky1 permutace = . . .2 k prvkové kombinace = . . .3 k prvkové kombinace s opakováním = . . .4 k prvkové variace = . . .5 k prvkové variace s opakováním = . . .

Page 4: Kombinatorika, výpočty

Kombinace, permutace, variace

Daná množina M s n prvky1 permutace = uspořádání zadaných prvků do fixního pořadí2 k prvkové kombinace = všechny možné výběry k prvků ze

zadané množiny3 k prvkové kombinace s opakováním = všechny možné

výběry k prvků ze zadané množiny, přičemž prvky semohou opakovat

4 k prvkové variace = všechny možné uspořádané výběry kprvků ze zadané množiny

5 k prvkové variace s opakováním = všechny možnéuspořádané výběry k prvků ze zadané množiny, přičemžprvky se mohou opakovat

Page 5: Kombinatorika, výpočty

Kombinace, permutace, variace – příklady

Úloha Vstup Výstuppermutace A, B, C ABC, ACB, BAC, BCA, CAB,

CBAkombinace A, B, C, D AB, AC, AD, BC, BD, CD

k = 2kombinace A, B, C, D AA, AB, AC, AD, BB, BC, BD,s opakováním k = 2 CC, CD, DDvariace A, B, C, D AB, AC, AD, BA, BC, BD, CA,

k = 2 CB, CD, DA, DB, DCvariace A, B, C AA, AB, AC, BA, BB, BC, CA,s opakováním k = 2 CB, CC

Page 6: Kombinatorika, výpočty

Kombinace, permutace, variace – počty prvků

Počet všechpermutací n prvků = . . .k prvkových kombinací z n = . . .k prvkových kombinací s opakováním z n prvků = . . .k prvkových variací z n prvků = . . .k prvkových variací s opakováním z n prvků = . . .

Page 7: Kombinatorika, výpočty

Kombinace, permutace, variace – počty prvků

Počet všechpermutací n prvků = n!k prvkových kombinací z n =

(nk

)= n!

(n−k)!k!

k prvkových kombinací s opakováním z n prvků =(n+k−1

k

)k prvkových variací z n prvků = n!

(n−k)!

k prvkových variací s opakováním z n prvků = nk

Page 8: Kombinatorika, výpočty

Kombinace s opakováním – ilustrace

3 prvkové kombinace s opakováním z 5 prvků ∼(5+3−1

3

)∼(73

)

https://en.wikipedia.org/wiki/Combination

Page 9: Kombinatorika, výpočty

Úkol: generování kombinací, permutací, variací

Vstup: množina (seznam) a případně kVýstup: (uspořádaný) výpis všechpermutací/kombinací/variací (s opakováním)

vede na přirozené využití rekurzemyšlenkově podobné ⇒ programy by měly být podobné

Page 10: Kombinatorika, výpočty

Výpočet kombinačního čísla

(nk

)=

(n − 1k − 1

)+

(n − 1k

)

def comb_number(n, k):if k == 0 or k == n:

return 1else:

return comb_number(n-1, k-1) + \comb_number(n-1, k)

Page 11: Kombinatorika, výpočty

Výpočet kombinačního čísla

neefektivní – opakované výpočtypodobné jako klasická ukázka neefektivního použitírekurze u Fibonacciho číselefektivněji:

explicitní vztahpočítání „od spoduÿ

Page 12: Kombinatorika, výpočty

Pascalův trojúhelník

11 1

1 2 11 3 3 1

1 4 6 4 11 5 10 10 5 1

Explicitní vzorec

Rekurzivní vztah

Page 13: Kombinatorika, výpočty

Pascalův trojúhelník a Sierpinského fraktál

Page 14: Kombinatorika, výpočty

Obarvování čísel: Pascal a Ulam

video Vi Hart: Sick Number Gameshttp://www.youtube.com/watch?v=Yhlv5Aeuo_k

obarvování Pascalova trojúhelníku modulo kvztah k jednorozměrným buněčným automatům

Rada: pozor na „přetečeníÿ

Page 15: Kombinatorika, výpočty

Počítání cest

n

m

S

C

S

C

Page 16: Kombinatorika, výpočty

Umocňování

xy

x , y – kladná čísla (ne nutně celá)např. 3, 452,3

co to vlastně znamená?jak vypočítat?přibližná hodnota, jen pomocí základních aritmetickýchoperací

Page 17: Kombinatorika, výpočty

Umocňování: úkol

xy

vypočítat přibližnou hodnotu, jen pomocí základnícharitmetických operacístačí jednoduché metodyexperimentálně prozkoumat chování: rychlost, přesnost

Page 18: Kombinatorika, výpočty

Efektivní umocňování

an mod k

a, n, k – přirozená číslan může být „velkéÿ (stovky cifer)jak vypočítat efektivně? (lépe než lineárně vzhledem k n)aplikace např. v kryptologii

Page 19: Kombinatorika, výpočty

Výpočet π

π = 3, 141592653589793 . . .iracionální čísloznámé s přesností na miliardy ciferjak se určuje hodnota π?zmíníme jen velmi naivní metody – přímočaré cvičení na„experimentální porovnáníÿ

Page 20: Kombinatorika, výpočty

Výpočet π

Gregoryho-Leibnizova řada (součet je π):

4 ·∞∑k=0

(−1)k

2k + 1=

41− 4

3+

45− 4

7+

49− · · ·

(Důkaz: arctan(1), integrál)

Page 21: Kombinatorika, výpočty

Výpočet π

Archimedova metoda (dvě posloupnosti an, bn společněkonvergující k π)

a0 = 2√

3; b0 = 3

an+1 =2anbnan + bn

bn+1 =√an+1bn

http://personal.bgsu.edu/~carother/pi/Pi3a.html

Page 22: Kombinatorika, výpočty

Výpočet π – Monte Carlo

1

1

x

y

0

obsah čtvrtdisku: π/4obsah čtverce: 1

Page 23: Kombinatorika, výpočty

Úkol: Výpočet π

implementujte uvedené metody(najděte další metody a implementujte je)experimentálně vyhodnoťte a porovnejte jednotlivémetodyco je férové porovnání?

jaké přesnosti jsou schopny dosáhnout během 1 vteřiny?

Page 24: Kombinatorika, výpočty

Úkol: Výpočet π

implementujte uvedené metody(najděte další metody a implementujte je)experimentálně vyhodnoťte a porovnejte jednotlivémetodyco je férové porovnání?jaké přesnosti jsou schopny dosáhnout během 1 vteřiny?

Page 25: Kombinatorika, výpočty

Umocňování: rady

xa/b = b√xa

výpočet odmocniny:

vstup: číslo xvýstup: přibližná hodnota

√x

základní metoda: binární půlení (rozhodně ne nejvíceefektivní)

Page 26: Kombinatorika, výpočty

Výpočet odmocniny: binární půlení

horní odhadspodní odhad

0 1 20.5 1.5

0 1 20.5 1.5

0 1 20.5 1.5

0 1 20.5 1.5

0 1 20.5 1.5

střed

Page 27: Kombinatorika, výpočty

Umocňování a Taylorova řada

Taylorova řada:

f (x) =∞∑n=0

f (n)(x0)n!

(x − x0)n

Pro f (x) = xk a x0 = 1 lze snadno vypočítat.