kombinatorika, výpočty

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

Upload: lebao

Post on 08-Feb-2017

239 views

Category:

Documents


0 download

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.