2015, Diszkrét matematika



Hasonló dokumentumok
2018, Diszkrét matematika

2016, Diszkrét matematika

2015, Diszkrét matematika

2018, Diszkrét matematika

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

2016, Diszkrét matematika

2018, Diszkrét matematika

2016, Diszkrét matematika

2018, Diszkre t matematika. 10. elo ada s

2016, Diszkrét matematika

2017, Diszkrét matematika

Matematikai alapok. Dr. Iványi Péter

2016, Diszkrét matematika

REKURZIÓ. Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát.

2018, Diszkrét matematika

TARTALOM. Ismétlő tesztek ÚTMUTATÁSOK ÉS EREDMÉNYEK...255

MATEMATIKA PRÓBAÉRETTSÉGI MEGOLDÓKULCS EMELT SZINT

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

2018, Diszkre t matematika. 8. elo ada s

Programozás 3. Dr. Iványi Péter

2. Hatványozás, gyökvonás

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

2018, Diszkrét matematika

Mesterséges intelligencia 1 előadások

Országzászlók (2015. május 27., Sz14)

PYTHON. Avagy hosszú az út a BioPythonig





Erdélyi Magyar TudományEgyetem (EMTE

Síklefedések Erdősné Németh Ágnes, Nagykanizsa

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Algoritmuselmélet. Király Zoltán ELTE Matematikai Intézet február 18. Legfrissebb, on-line verzió:

MATEMATIKA PRÓBAÉRETTSÉGI MEGOLDÓKULCS EMELT SZINT

Szeminárium-Rekurziók

C# feladatok gyűjteménye

Programozás I gyakorlat. 5. Struktúrák

100% BIO Natur/Bio kozmetikumok és testápolás

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Scherlein Márta Dr. Hajdu Sándor Köves Gabriella Novák Lászlóné MATEMATIKA 1. MÓDSZERTANI AJÁNLÁSOK MÁSODIK FÉLÉV

Akkor én most bölcsész vagyok?! Avagy: híd, amit matematikának hívunk

Véletlenszám generátorok

Matematikai programozás gyakorlatok

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

MATEMATIKA A és B variáció

Készítette: Fegyverneki Sándor. Miskolci Egyetem, 2002.

Feladatok és megoldások a 4. hétre


Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Scherlein Márta Dr. Hajdu Sándor Köves Gabriella Novák Lászlóné MATEMATIKA 1. A FELMÉRŐ FELADATSOROK ÉRTÉKELÉSE

Bevezetés a programozásba. 12. Előadás: 8 királynő

2018, Funkcionális programozás

Matematikai alapismeretek. Huszti Andrea

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Matematikai és matematikai statisztikai alapismeretek

Indexszámítás Tulajdonságok Alkalmazások Indexsorok Területi indexek Példa

A félév során előkerülő témakörök

TANTÁRGYI ADATLAP. 2.7 A tantárgy jellege DI

10. JAVÍTÓKULCS ORSZÁGOS KOMPETENCIAMÉRÉS MATEMATIKA. példaválaszokkal. s u l i N o v a K h t. É R T É K E L É S I K Ö Z P O N T É V F O L Y A M

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Információ Európa országairól (összetett alkalmazás)

9. modul Szinusz- és koszinusztétel. Készítette: Csákvári Ágnes

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

3. Gyakorlat Ismerkedés a Java nyelvvel

80-as sorozat - Idõrelék A

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Valószínűségszámítás és statisztika. István Fazekas

matematikai statisztika október 24.

MATEMATIKA ÍRÁSBELI VIZSGA EMELT SZINT% ÉRETTSÉGI VIZSGA október október 15. 8:00 MINISZTÉRIUMA EMBERI ERFORRÁSOK

Máté: Számítógép architektúrák

Tanmenetjavaslat a 6. osztályos matematika kísérleti tankönyvhöz

7 7, ,22 13,22 13, ,28

AZ RD-33-AS HAJTÓMŰ CENTRIFUGÁLIS FORDULATSZÁM SZABÁLYZÓJÁNAK MATEMATIKAI MODELLEZÉSE

Gráfokkal megoldható hétköznapi problémák

II. Halmazok. Relációk. II.1. Rövid halmazelmélet. A halmaz megadása. { } { } { } { }

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

TANMENETJAVASLAT AZ ÚJ KERETTANTERVHEZ MATEMATIKA 1. ÉVFOLYAM KÉSZÍTETTÉK: KURUCZNÉ BORBÉLY MÁRTA ÉS VARGA LÍVIA TANKÖNYVSZERZŐK 2013

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

Gyakorló feladatok ZH-ra

6. Bizonyítási módszerek

Matematika emelt szintû érettségi témakörök Összeállította: Kovácsné Németh Sarolta (gimnáziumi tanár)

Debreceni Egyetem, Közgazdaság- és Gazdaságtudományi Kar. Feladatok a Gazdasági matematika I. tárgy gyakorlataihoz. Halmazelmélet

2) Egy háromszög két oldalának hossza 9 és 14 cm. A 14 cm hosszú oldallal szemközti szög 42. Adja meg a háromszög hiányzó adatait!

Osztályozóvizsga követelményei

2. feladat Legyenek 1 k n rögzített egészek. Mennyi az. x 1 x 2...x k +x 2 x 3...x k x n k+1 x n k+2...x n

Kriptográfiai algoritmus implementációk időalapú támadása Endrődi Csilla, Csorba Kristóf BME MIT

Informatikai tehetséggondozás:

Objektumorientált Programozás III.

PageRank algoritmus Hubs and Authorities. Adatbányászat. Webbányászat PageRank, Hubs and Authorities. Szegedi Tudományegyetem.

2018, Funkcionális programozás

Bevezetés a C++ programozásba

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Komputer statisztika gyakorlatok

Átírás:

Diszkrét matematika 5. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2015, őszi félév

Miről volt szó az elmúlt előadáson? számtani, mértani, harmonikus számsorozatok sajátos számsorozatok: a faktoriális függvény Stirling számok Fibonacci számok Lucas számok Catalan számok algoritmusok Python-ban

Miről lesz szó? aranymetszés, aranyarány a Fibonacci, Lucas számokkal való kapcsolat számrendszerek számrendszerek közötti átalakítások számok összeadása, szorzása bináris számrendszerben

Aranymetszés, aranyarány (Golden Ratio) két mennyiség, a, b, a > b az aranymetszés szerint aránylik egymáshoz, ha fennáll: a b = a + b def = ϕ a a ϕ meghatározása érdekében feĺırhatjuk: a + b a = 1 + 1 a, azaz fennáll: b ϕ = 1 + 1 ϕ ϕ2 = ϕ + 1 megoldva a fenti egyenletet kapjuk, hogy ϕ = 1 + 5 2 a ϕ irracionális szám = 1.61803... és ˆϕ = 1 5 2 = 0.61803...

Aranyarány, alkalmazások építészet: Parthenon homlokzatának arányértékei: logok: Toyota, Mercedesz, stb. Pentagramma (szabályos ötszög): természet: napraforgó spirlajai piros zold = zold kek = kek lila = ϕ

Aranyarány, lánctörtek Kiindulva az alábbi összefüggésből: ϕ = 1 + 1, lánctörtek segítségével is ϕ feĺırhatjuk a ϕ értékét: ϕ = 1 + 1 + 1 + 1 1 1 1 + 1...

A Fibonacci számok, Lucas számok a Fibonacci számsorozat: 0, 1, 1, 2, 3, 5, 8, 13,..., a rekurziós képlet: F 0 = 0, F 1 = 1, F n = F n 1 + F n 2, a Lucas számsorozat: 2, 1, 3, 4, 7, 11, 18, 29, 47,..., a rekurziós képlet: L 0 = 2, L 1 = 1, L n = L n 1 + L n 2, kapcsolat, képletek: L n = F n 1 + F n+1 = F n + 2 F n 1 = F n+1 F n 2 F n = Ln 1 + Ln+1 5 = Ln 3 + Ln+3 10

Kapcsolat a Fibonacci sorozattal megállapítható: F n+1 F n + F n 1 lim = lim = 1 + lim n F n n F n n fennáll tehát: x = 1 + 1 F n+1, ahol a lim x n F n alkalmaztuk. megoldva a x = 1 + 1 x egyenletet kapjuk, hogy F n+1 lim = ϕ n F n = lim n L n+1 hasonlóan: lim = ϕ n L n Binet formula (bizonyítás matematikai indukcióval): F n = ϕn ˆϕ n 5 = (1 + 5) n (1 5) n 2 n 5 1 F n F n 1 F n F n 1 = x jelölést

Algoritmusok Pythonban 1. feladat: Fibonacci számok, az aranymetszési képlettel: F n = ( 1+ 5 ) n (1 1+ 5 2 5 2 ) n = (1 + 5) n (1 5) n 2 n 5 def fibn (n): return int(( pow(1+math.sqrt(5), n) - pow (1-math.sqrt(5), n))/ (math.sqrt(5) * pow (2, n))) def fibn1 (n): return int(( (1+math.sqrt(5)) ** n - (1-math.sqrt(5)) ** n )/ (math.sqrt(5) * 2 ** n))

Számrendszerek egész számok: bármely 1-nél nagyobb számrendszerben ábrázolhatóak, a számítástechnikában gyakran használt számrendszerek: 10, 2, 8, 16, 256, 2-es számrendszer: bináris számrendszer, 8-as számrendszer: oktális számrendszer, 16-os számrendszer: hexadecimális számrendszer, legyen n az a szám, amit átszeretnénk írni b számrendszerbe, ekkor, Z -vel jelölve a nem negatív egész számok halmazát: n = a k b k + a k 1 b k 1 + + a 1b 1 + a 0b 0, ahol k Z, a i Z, és a i < b, minden i {0,..., k} értékre és a k 0. 10-es számrendszerben 10 szimbólum van: 0, 1, 2,..., 9. 2-es számrendszerben 2 szimbólum van: 0, 1. 256-os számrendszerben 256 szimbólum van

Számrendszerek, példák Pl. Mi (215) 10, 2-es számrendszerbeli alakja? fennáll: 215 = 128 + 64 + 16 + 4 + 2 + 1 = 1 2 7 + 1 2 6 + 0 2 5 + 1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0. tehát: (215) 10 = (1101 0111) 2. Pl. (1 0111 0010) 2, melyik 10-es számrendszerbeli számnak felel meg? fennáll: (1 0111 0010) 2 = 1 2 8 + 0 2 7 + 1 2 6 + 1 2 5 + 1 2 4 + 0 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 256 + 64 + 32 + 16 + 2 = 370. tehát: (1 0111 0010) 2 = (370) 10.

Számrendszerek, példák 8-as számrendszerben 8 szimbólum van: 0, 1, 2, 3, 4, 5, 6, 7. Pl. Mi (215) 10, 8-as számrendszerbeli alakja? fennáll: 215 = 3 8 2 + 2 8 1 + 7 8 0 tehát: (215) 10 = (327) 8. Pl. (6702) 8, melyik 10-es számrendszerbeli számnak felel meg? fennáll: 6702 = 6 8 3 + 7 8 2 + 0 8 1 + 2 8 0 = 3072 + 448 + 2 = 3522. tehát: (6702) 8 = (3522) 10.

Számrendszerek, példák 16-as számrendszerben 16 szimbólum van: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Pl. Mi (7432) 10, 16-os számrendszerbeli alakja? fennáll: 7432 = 1 16 3 + 13 16 2 + 0 16 1 + 8 16 0 tehát: (7432) 10 = (1D08) 16. Pl. (E2D07) 16, melyik 10-es számrendszerbeli számnak felel meg? fennáll: E2D07 = 14 16 4 + 2 16 3 + 13 16 2 + 0 16 1 + 7 16 0 = 917504 + 8192 + 3328 + 7. tehát: (E2D07) 16 = (929031) 10.

Algoritmus: 10-es számrendszerből b számrendszerbe n-et elosztjuk maradékos osztással b-vel: n = b q 0 + a 0, ahol 0 a 0 < b. q 0-ot elosztjuk maradékos osztással b-vel: q 0 = b q 1 + a 1, ahol 0 a 1 < b. addig folytatjuk a maradékos osztást, amíg 0 osztási egészrészt kapunk. Pl. Alakítsuk át 7432-t 16-os számrendszerbe: 7432 = 464 16 + 8 464 = 29 16 + 0 29 = 1 16 + 13 1 = 0 16 + 1

Algoritmus: b számrendszerből 10-es számrendszerbe hatványösszeget számolunk a b számrendszerbeli számjegyekből Pl. Alakítsuk át 1D08-t 10-es számrendszerbe: 1D08 = [1, 13, 0, 8] [8, 0, 13, 1] 8 = 8 16 0 8 = 0 16 1 + 8 3336 = 13 16 2 + 8 7432 = 1 16 3 + 3336

Algoritmusok Pythonban 2. feladat: Alakítsunk át egy számot 10-es számrendszerből b számrendszerbe def alakit10_b(nr, b): L = [] while nr > 0: L = [nr % b] + L nr = nr / b return L meghívás: alakit10_b(14, 2) az eredmény: [1, 1, 1, 0] ha oda-vissza átalakítást kell végezni, akkor ajánlatos a fordított sorrendet előálĺıtani, ekkor az L = [nr % b] + L sor helyett az L = L + [nr % b] sor szükséges.

Algoritmusok Pythonban 3. feladat: Alakítsunk át egy b számrendszerbeli számot 10-es számrendszerbe def alakitb_10 (L, b): nr = 0 p = 1 for elem in reversed(l): nr += elem * p p *= b return nr meghívás: alakitb_10([1, 1, 1, 0], 2) az eredmény: 14 a reversed(l) megfordítja a bemeneti listát def alakitb_10_1 (L, b): nr = 0 p = 1 l = len(l)-1 for i in range (l, -1, -1): nr += L[i] * p p *= b return nr ha a fordított sorrend lesz a bemenet, akkor nem szükséges reversed függvény használata, illetve az alakitb_10_1 függvényben range(0, l+1) lesz.

Kapcsolat a 2, 8, 16 számrendszerek között bináris oktális: hármas csoportokat formálunk: Pl. [1, 1, 1, 1, 0, 1, 1] [1, 1, 1, 1, 0, 1, 1] [1, 7, 3] bináris hexadecimális: négyes csoportokat formálunk Pl. [1, 1, 1, 1, 0, 1, 1] [1, 1, 1, 1, 0, 1, 1] [7, B] bináris 2 k : k-as csoportokat formálunk Pl. 2 256 = 2 8, 8-as csoportokat formálunk: [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1] [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1] [57, 107]

Algoritmusok Pythonban 4. feladat: Alakítsunk át egy számot 2-es számrendszerből 2 k számrendszerbe def alakit2_2k(l, k): L1 = [] l = len(l) i = l - 1 while i >= 0: nr = 0 p = 1 for j in range (0, k): nr += L[i] * p i -= 1 p *= 2 if i == -1: break L1 = [nr] + L1 return L1

Algoritmusok Pythonban 4. feladat: Alakítsunk át egy számot 2-es számrendszerből 8-as számrendszerbe meghívás: alakit2_2k([1, 1, 0, 1, 0, 1], 3) az eredmény: [6, 5] Alakítsunk át egy számot 2-es számrendszerből 256-os számrendszerbe meghívás: alakit2_2k([1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1], 8) az eredmény: [57, 107]

Algoritmusok Pythonban 5. feladat: Alakítsunk át egy számot 2 k számrendszerből 2-es számrendszerbe def alakit2k_2(l, k): L1 = [] l = len(l) - 1 for i in range(l, -1, -1): nr = L[i] for j in range (0, k): L1 = [nr % 2] + L1 nr = nr / 2 return L1

Algoritmusok Pythonban 5. feladat: Alakítsunk át egy számot 8-as számrendszerből 2-es számrendszerbe meghívás: alakit2k_2([6, 5], 3) az eredmény: [1, 1, 0, 1, 0, 1] Alakítsunk át egy számot 256-os számrendszerből 2-es számrendszerbe meghívás: alakit2k_2([57, 107], 8) az eredmény: [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1] A két függvényt együtt alkalmazva: meghívás: alakit2_2k(alakit2k_2([217, 107, 28, 142, 55], 8), 8) az eredmény: [217, 107, 28, 142, 55]

Két bináris szám összeadása Legyen a két szám és bináris alakjuk: jelöljük c-vel a továbbviteli értéket A = a l 1 a l 2... a 1a 0 B = b l 1 b l 2... b 1b 0, az összeadás szabályát alkalmazva a két leghátsó bitre: ahol c = 0 az első továbbviteli érték a 0 + b 0 + c, az összeadás szabályát alkalmazva általánosan: a i + b i + c i 1, ahol a továbbvitel értéke: c i = (a i + b i + c i 1 )/2, az aktuális bit értéke: r i = (a i + b i + c i 1 ) mod 2, ami ugyanaz mint: r i = (a i + b i + c i 1 2 c i ).

Algoritmusok Pythonban 6. feladat: Két bináris szám összeadása: def osszeg (A, B): l1, l2 = len (A), len (B) i, j = l1-1, l2-1 c, R = 0, [] while i >=0 and j >= 0: temp = A[i] + B[j] + c R = [temp % 2] + R c = temp / 2 i, j = i - 1, j - 1 while i >= 0 : temp = A[i] + c R = [(temp) % 2] + R c = temp / 2 i -= 1 while j >= 0: temp = B[j] + c R = [(temp) % 2] + R c = temp / 2 j -= 1 return [c] + R

Két bináris szám szorzata Legyen a két szám, és bináris alakjuk: A szorzás szabályát alkalmazva: A = a l 1 a l 2... a 1a 0 B = b l 1 b l 2... b 1b 0, A B = A (b 0 2 0 + b 1 2 1 + + b l 1 2 l 1 ) = (A b 0) 2 0 + (A b 1) 2 1 + + (A b l 1 ) 2 l 1 Ha b i = 1, akkor A b i = A Ha b i = 0, akkor A b i = 0 Minden iterációnál meg kell határozni 2 k -val való szorzás értékét: jobbról kiegészítjük k darab 0-val a bináris alakot. Python, k darab nullásokból álló lista létrehozása: L = k * [0]