1144 programozÁsmÓdszertan, …aktivitas-tiszk.hu/elearning/obuch_laszlo/a_programozas... · a...

26
A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK ESETFELVETÉS- MUNKAHELYZET A következő fejezetekben azokkal az alapvető matematikai alapokkal ismerkedhet meg, amelyek tudása elengedhetetlen az alapvető programozási ismeretek elsajátításához. Az elméleti anyag ismertetése után találhat néhány példát, ami bemutatja gyakorlati feladatokon keresztül az anyagot. A tananyag a következő témaköröket öleli fel: Halmazelmélet Számfogalmak Logika Mátrixok Gráfelmélet Kombinatorika SZAKMAI INFORMÁCIÓTARTALOM HALMAZELMÉLET 1. Alapfogalmak A halmaz különböző dolgoknak az összessége, amit meghatároznak az elemei. A következő kifejezéseket alapfogalomnak tekintjük, és ezért külön nem definiáljuk: halmaz, elem, eleme, a következő jelöléseket használva: A halmazok jelölése mindig nagybetűvel történik: A, B, CA halmazok megadásának módjai: 1. Vegyes halmazok esetén a halmaz elemeinek felsorolásával pl. : A:={január, február,…, december} B:={1,2,3,4,5 } 2. a halmaz elemeire jellemző tulajdonság megadásával pl. : C:={a tanfolyam hallgatói} D:={prímszámok} Üres halmaznak nevezzük azt a halmazt, amelynek nincs egy eleme sem. Jelölése : 1

Upload: trinhtuyen

Post on 06-Feb-2018

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

ESETFELVETÉS- MUNKAHELYZET

A következő fejezetekben azokkal az alapvető matematikai alapokkal ismerkedhet meg, amelyek tudása elengedhetetlen az alapvető programozási ismeretek elsajátításához. Az elméleti anyag ismertetése után találhat néhány példát, ami bemutatja gyakorlati feladatokon keresztül az anyagot. A tananyag a következő témaköröket öleli fel:

• Halmazelmélet • Számfogalmak • Logika • Mátrixok • Gráfelmélet • Kombinatorika

SZAKMAI INFORMÁCIÓTARTALOM

HALMAZELMÉLET

1. Alapfogalmak

A halmaz különböző dolgoknak az összessége, amit meghatároznak az elemei. A következő kifejezéseket alapfogalomnak tekintjük, és ezért külön nem definiáljuk: halmaz, elem, eleme, a következő jelöléseket használva:

A halmazok jelölése mindig nagybetűvel történik: A, B, C…

A halmazok megadásának módjai:

1. Vegyes halmazok esetén a halmaz elemeinek felsorolásával pl. : A:={január, február,…, december} B:={1,2,3,4,5 }

2. a halmaz elemeire jellemző tulajdonság megadásával pl. : C:={a tanfolyam hallgatói} D:={prímszámok}

Üres halmaznak nevezzük azt a halmazt, amelynek nincs egy eleme sem. Jelölése : ∅

1

Page 2: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A halmaz elemeinek száma jelölésekor a halmazt abszolút érték jelek közé rakjuk :⎪A⎪ = 12

Megkülönböztetünk véges és végtelen halmazokat az elemeik száma alapján:

• Véges : E:={ x ⎪x egész és -5 ≤ x ≤ 5 }

• Végtelen : F:={ egy sík pontjainak száma }

A halmazokat legtöbbször venn-diagramon ábrázoljuk : a sík valamely tartományával.

A halmaz elemeinek ábrázolására : a tartomány pontjai szolgálnak:

A B 1 2 3

6 45

Az A halmazt a B halmaz részhalmazának nevezünk, ha az A halmaz minden eleme a B halmaznak is eleme.

Jelölése : A⊆B ⇔ , ha ∀x∈A -ra x∈B

B

A

Az A halmazt a B halmaz valódi részhalmazának nevezzük, ha az A halmaz részhalmaza B -nek, és a B halmaznak van legalább egy olyan eleme, amely nem eleme A -nak.

Jelölése :A⊂ B (⇐ A⊆B és A≠B)

B

A

2

Page 3: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

2. Műveletek halmazokkal

Unióképzés Az A és B halmaz uniójának más szóval egyesítésének nevezzük azoknak az elemeknek a halmazát, amelynek az A és B halmazok közül legalább az egyiknek elemei.

Jelölése : A∪B

A B

A∪B={ x ⏐ x∈A vagy x∈B }

Tulajdonságai :

A∪A=A idempotencia

A∪B=B∪A kommutatív

(A∪B)∪C=A∪(B∪C)=A∪B∪C asszociatív

A∪(B∩C)=(A∪B)∩(A∪C) A∩( B∪C)=(A∪B)∪(A∩C)

disztributívitás

Metszet képzés

Az A és B halmaz metszetének (közös részének; szorzatának) nevezzük azoknak az elemeknek a halmazát, amelyek az A és B halmazok mindegyikének elemei.

Az A és B halmaz diszjunkt, ha metszetük üres halmaz.

Jelölése : A∩B

A B

3

Page 4: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A∩B={ x⏐x∈A és x∈B }

Tulajdonságai :

A∩A=A idempotencia

A∩B=B∩A kommutatív

(A∩B)∩C=A∩(B∩C)=A∩B∩C asszociatív

A∪(B∩C)=(A∪B)∩(A∪C) A∩( B∪C)=(A∪B)∪(A∩C)

disztributivitás

Különbségképzés Az A és B halmazok különbségüknek nevezzük az A halmaz azon elemeinek halmazát, amelyek nem elemei a B halmaznak.

Jelölése : A \ B

A B

A \ B={ x⏐x∈A és x∉B }

Tulajdonságai :

A \ A = ∅ A \ ∅ = A ∅ \ A = ∅ (A \ B)∩(B \ A)= ∅ (A \ B)∪B=A∪B A \ B=A \ (A∩B)=(A∪B) \ B

Halmaz komplementere (kiegészítő halmaz )

Egy B ( nem üres ) halmaznak legyen egy részhalma A .

Az B \ A halmazt az egy halmaz B alaphalmazra vonatkozó komplementerének nevezzük.

Jelölése : A

4

Page 5: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

B A ⊂ B

Tulajdonságai :

AA

AA

HAA

BABA

BABA

=

∅=∩

=∪

∪=∩

∩=∪

Szimmetrikus differencia

Két adott halmaz, A és B szimmetrikus differenciájának nevezzük, azt mikor a két halmaz azon elemeit vesszük, amik csak az egyikben szerepelnek. A műveletet így definiáljuk : A B= (A \ B) ∪ (B \ A)

Jelölése : A B

Tulajdonságai :

BB)(AAAA

AAC)(BACB)(A

ABBA

=ΔΔ=∅Δ∅=Δ

ΔΔ=ΔΔΔ=Δ

Összefoglalás

Mit nevezünk halmaznak?

AA

A B

5

Page 6: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Hogyan jelöljük?

Hogyan ábrázoljuk?

Mi a végtelen halmaz?

Milyen halmazműveleteket ismer?

SZAKMAI INFORMÁCIÓTARTALOM

LOGIKA

A számítástechnikában, de a köznapi életben is sokszor használjuk a logikát, melynek során bizonyos állítások (premisszák) igazságából következtetünk valamilyen állítás igazságára.

Definíció: Egy következtetést akkor tekintünk logikailag helyesnek, ha minden olyan esetben, amikor a benne szereplő egyszerű tovább már nem bontható kijelentések helyére tetszőleges olyan kijelentéseket teszünk, amelyeknél a premisszák mind igazak lesznek, a konklúzió is mindig igaz lesz.

Az ítélet fogalma: Azok a kijelentések, amelyek egyértelműen igazak vagy hamisak.

Logikai értékek: Az 'igaz' és a 'hamis' tulajdonságok lehetnek csak.

1. Műveletek ítéletekkel

A logikai műveletek: Az ítélet kalkulus műveletei ítéletekből úgymint komponensekből olyan ítéleteket hoznak létre, amelyek logikai értékét komponenseik logikai értékei egyértelműen meghatározzák.

a, Negáció: művelete egy ítéletnek a tagadása.

A negáció művelet eredménye akkor és csak akkor igaz ítélet, ha a művelet komponense hamis.

6

Page 7: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Jele : ⎤

A ⎤A

i h

h i

b, Konjunkció: művelete két ítélet az "és" kötőszóval kapcsol össze.

A konjunkció művelet logikai értéke akkor és csak akkor igaz, ha mindkét komponensének logikai értéke igaz

jele: ∧

A B A∧B

i i i

i h h

h i h

h h h

c, Diszjunkció: művelete két ítélet a megengedő "vagy" kötőszóval kapcsol össze.

7

Page 8: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A diszjunkció logikai értéke akkor és csak akkor hamis, ha mindkét komponense hamis.

Jele: ∨

A B A∨B

i i i

i h i

h i i

h h h

Disztributivitás: (A∧B)∨(A∧C)=A∧(B∨C)

(A∨B) ∧(A∨B=A∨(B∧C)

Elnyelési szabályok:

A∧(A∨B)=A

A∨(A∧B)=A

Idempotencia (rövidítési szabály): A logikai algebrában nincs 1-nél nagyobb kitevő és 1-nél nagyobb együttható sem.

A∧A=A

A∨A=A

De Morgan azonosságok:

8

Page 9: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

⎤(A∧B)=⎤A∨⎤B ;

⎤(A∨B)=⎤A∧⎤B

Kettős negáció:

⎤⎤A=A

Impikáció: P és Q ítéletből "ha P, akkor Q" alakú ítéletet hoz létre. jele P→Q

P (előtag); Q (utótag). Rendszerint határozatlan logikai értékű ítéletek összekapcsolására használjuk.

Implikáció akkor és csak akkor hamis, ha az előtag igaz és az utótag hamis.

Tehát a P és Q ítéletek, akkor a P→Q implikációi általában a nem P vagy Q ítéleteket értjük ez akkor és csak akkor hamis, ha P igaz és Q hamis. Ha P akkor Q ítélet logikai értéke mindig azonos a P→Q implikáció logikai értékével.

Definíció: Formula: Az ítéletkalkulusban a log- értékeket a log-i változókat és a rajtuk végzett műveleteket leíró jelsorozatokat az ítélet kalkulus formuláinak nevezzük.

Ekvivalencia:

A P és Q ítéletre ekvivalencia P akkor és csak akkor, ha Q alakú ítéletet hoz létre. Jele: P↔Q

A P↔Q alakú ítéletek logikai értékét akkor és csak akkor tekintjük igaznak, ha az egyik komponens igazsága esetén a másik is igaz, az az, ha vagy mindkét komponens igaz, vagy mindkét komponens hamis.

9

Page 10: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Tulajdonságok:

a. Az implikáció nem kommutatív (Értéktáblázata nem szimmetrikus a főátlóra)

b. Az ekvivalencia kommutatív A↔B = B ↔ A

További műveletek:

"Vagy" jellemzése:

a. A ∪ B : A és B közül legalább az egyik igaz akkor megengedő vagy

b. A ⊕ B : A és B közül pontosan az egyik igaz akkor kizáró vagy

Kommutativitás:

A ↓ B = B ↓ A

A ⏐ B = B ⏐ A

A ⊕ B = B ⊕ A

Asszociativitás:

(A ↓ B) ↓ C ≠ A ↓ (B ↓ C), mert ⏐A⏐ = ⏐B⏐ = i és ⏐C⏐ = k, akkor bal oldal igaz, jobb oldal hamis.

(A ⏐ B) ⏐ C ≠ A ⏐ (B ⏐ C), mert ⏐A⏐ = ⏐B⏐ = k és ⏐C⏐ = i, akkor bal oldal hamis, jobb oldal igaz.

Ítéletkalkulus és igazságtáblák

Az ítéletkalkulus a logika azon ága, mely az egyértelműen igaz vagy hamis kijelentő mondatokkal, vagyis az ítéletekkel foglalkozik. Ezen ítéletek vizsgálatára igazságtáblákat

használ. Nézzünk erre egy példát! Vizsgáljuk meg az A∨B∨C kifejezést!

A B A∨B C A∨B∨C

10

Page 11: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

i i i i i

i h i i i

h i i i i

h h h i i

i i i h i

i i i h i

h i i h i

h h h h h

A táblázat utolsó oszlopa adja azt az értéket, ami a teljes kifejezésre vonatkozik. Láthatjuk, hogy így sokkal áttekinthetőbben és gyorsabban meg tudjuk állapítani egy kifejezés logikai értékeit.

Összefoglalás

Mivel foglalkozik a logika?

Milyen alapvető logikai műveleteket ismer?

Ismertesse az igazságtáblájukat!

Mutassa be a De-Morgan azonosságokat!

Mutasson be egy példát az igazságtáblák használatára!

SZAKMAI INFORMÁCIÓTARTALOM

SZÁMFOGALMAK

Számelmélet

11

Page 12: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A számelmélet a matematika egyik ága, mely eredetileg a természetes számok oszthatósági tulajdonságait vizsgálta. Az ilyen vizsgálatok elnevezésére még ma is alkalmazzák a számelmélet eredeti latinos elnevezését (aritmetika).

A számelmélet alaptétele:

Minden 1-től különböző pozitív egész szám felbontható prímszámok szorzatára. Ez a felbontás a tényezők sorrendjétől eltekintve egyértelmű.

Az oszthatóság

Hagyományos értelemben akkor mondjuk, hogy az a természetes szám osztható a b természetes számmal, röviden a b szám osztója az a számnak, vagy, ha van olyan egész szám, melyet b-vel szorozva a-t kapunk, vagyis, más szóval, ha az a szám többszöröse a b-nek. Jelölés: a | b

Az oszthatóság tulajdonságai:

• a|a bármely egész szám esetén. (reflexivitás)

• 1|a bármely egész szám esetén.

• a| b ⇒ a|bc, a,b,c egész szám esetén.

• a|b és b|c⇒ a|c, a,b,c egész szám esetén. Ez a tranzitív tulajdonság.

• a|b és a|c ⇒ a|b+c, a,b,c egész szám esetén.

• a|b és a|c ⇒ a|b-c, a,b,c egész szám esetén.

• a|b és a| b + c⇒ a|c, a,b,c egész szám esetén.

• a | b és b | d esetén ac | bd

• a | 0

• ac | bc és c 0-tól különböző esetén a | b

• 0 | a akkor és csak akkor teljesül, ha a = 0

Oszthatósági szabályok a tízes számrendszerben felírt természetes számok körében

• 2-vel osztható az a szám, melynek utolsó számjegye 2, 4, 6, 8 vagy 0, tehát páros • 3-mal osztható az a szám, melynek számjegyeinek összege 3-mal osztható. • 4-gyel osztható az a szám, melynek a két utolsó jegyéből alkotott szám osztható 4-

gyel.

12

Page 13: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

• 5-tel osztható az a szám, melynek utolsó jegye 5 vagy 0. • 6-tal osztható az a szám, mely 2-vel és 3-mal osztható. • 7-tel osztható az a szám, melynek számjegyeit hátulról hármasával csoportosítva és

váltakozó előjellel összeadva a kapott szám abszolút értéke osztható 7-tel. • 8-cal osztható az a szám, melynek utolsó három jegyéből alkotott szám osztható

nyolccal. • 9-cel osztható az a szám, melynek számjegyeinek összege 9-cel osztható. • 10-zel osztható az a szám, melynek utolsó jegye 0.

Oszthatóság az egész számok körében

Az oszthatóságot kiterjeszthetjük az egész számok halmazára is. Akkor például a 6-nak nem csak az 1, 2, 3, és a 6 lesz osztója, hanem a -1, -2, -3 és a -6 is, mert ezekhez is lehet olyan alkalmas egész számot találni, amivel megszorozva őket mind 6-ot adnak.

Prímszámok

A matematika területén prímszámnak, törzsszámnak vagy röviden prímnek nevezzük azokat a természetes számokat, amelynek pontosan két osztójuk van (1 és önmaga). A többi egynél nagyobb természetes számot összetett számnak nevezzük. Magát az 1-et egyik kategóriába sem soroljuk bele (mivel csak egy osztója van). Az általában természetes számnak tekintett 0 ugyancsak nem prím és nem is összetett.

A prímszámok megkülönböztetését az indokolja, hogy két osztója minden 1-nél nagyobb természetes számnak van, az 1 és önmaga, de a prímszámoknak nincs is több, míg a többi 1-nél nagyobb számoknak van.

Prímfelbontás

A számelméletben a prímfelbontás – más néven prímfaktorizáció – az a folyamat, amikor egy összetett számot prím osztóira bontjuk (faktorizáljuk), amik összeszorozva az eredeti egész számot adják.

Kiszámítás: Keressük meg az első prímszámot, ami osztója a számnak. Osszuk el vele a számot, majd az eredménnyel folytassuk az eljárást, amíg 1-ig nem jutunk. Ha egymás mellé írjuk az osztókat, megkapjuk a szám prímtényezős felbontását.

Relatív prímek:

Az a és b egész számok esetén azt mondjuk, hogy az a a b-hez relatív prím, vagy egyszerűen a és b relatív prím, ha az 1-en kívül nincs más közös osztójuk. Vagy ami ezzel ekvivalens, ha a és b legnagyobb közös osztója 1.

Legnagyobb közös osztó

Két vagy több egész szám legnagyobb közös osztóján értünk egy olyan pozitív egész számot, amely közös osztó és minden közös osztónak többszöröse.

13

Page 14: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Kiszámítása: Prímtényezőkre bontjuk és vesszük a közös prímtényezőket a legkisebb kitevővel és összeszorozzuk őket.

Legkisebb közös többszörös

Két vagy több egész szám legkisebb közös többszörösén értünk egy olyan pozitív egész számot, amely közös többszörös és minden közös többszörös osztója.

Kiszámítása: Prímtényezőkre bontjuk és vesszük azokat a prímtényezőket, amelyek szerepelnek valamelyik számban. A lehető legnagyobb kitevővel és összeszorozzuk őket.

Euklideszi algoritmus

Az euklideszi algoritmus egy számelméleti algoritmus, mellyel két szám legnagyobb közös osztója határozható meg. Nevét az ókori görög matematikusról, Eukleidészről kapta.

Ha a = b * q + r , akkor ( a , b ) = ( b , r ) ,

Így a problémát visszavezeti két kisebb szám legnagyobb közös osztójának meghatározására. Folytatva az eljárást, az utolsó, 0-tól különböző maradék a legnagyobb közös osztó.

Például, határozzuk meg a 360 és a 220 legnagyobb közös osztóját!( 360, 220 ) = ?

Az euklidészi algoritmus szerint:

360=220*1+140 220=140*1+ 80 140= 80*1+ 60 80= 60*1+ 20 60=20*3+0 Tehát ( 360, 220 ) = 20.

Összefoglalás:

Ismertesse a számelmélet alaptételét!

Ismertesse az oszthatóság fogalmát!

Milyen oszthatósági szabályokat ismer?

Milyen számokat nevezünk prímnek?

Ismertesse a legnagyobb közös osztó és legkisebb közös többszörös fogalmát és kiszámítási módszereit!

14

Page 15: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Ismertesse az Euklideszi algoritmust!

SZAKMAI INFORMÁCIÓTARTALOM

MÁTRIXOK

A mátrix fogalma, speciális mátrixok

Definíció:: Legyen m, n természetes szám. n×m-es mátrixnak nevezzük bármilyen nxm számú aik mennyiség (i = 1, 2, . . . , n; k = 1, 2, . . . ,m) alábbi, szögletes zárójelbe tett téglalap alakú elrendezését:

⎥⎥⎥⎥

⎢⎢⎢⎢

nmn2n1

2m2221

1m1211

a.....aa....

a.....aaa.....aa

A mátrix nxm típusú, mert n sorból és m oszlopól áll.

Az aik mennyiségek a mátrix elemei, ahol az ik egy index, ami a sor és oszlopszámot adja meg. A mátrixok elemei általában valós számok.

Ha egy nxm mátrix sorait és oszlopait felcseréljük egymással, akkor a mátrix transzponáltját kapjuk meg. Az A mátrix transzponáltját A* jelöli.

Az mátrix transzponáltja: ⎥⎥⎥

⎢⎢⎢

4678223231

⎥⎥⎥

⎢⎢⎢

4226237831

Az egy sorból álló mátrixot sormátrixnak, az egy oszlopból álló mátrixot pedig oszlopmátrixnak nevezzük.

Sormátrix: [ ]5441 Oszlopmátrix: ⎥⎥⎥

⎢⎢⎢

6543

Egy olyan mátrixot, aminek minden eleme 0, zérusmátrixnak nevezünk.

Zérusmátrix ⎥⎥⎥

⎢⎢⎢

000000000

15

Page 16: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Ha egy mátrixnak n sora és n oszlopa van, akkor n-ed rendű négyzetes mátrixnak nevezzük.

3-ad rendű négyzetes mátrix: ⎥⎥⎥

⎢⎢⎢

33115423

6631

Azt az nxn mátrixot, melynek a főátlóban levő minden eleme 1, de azon kívül minden eleme 0, n-ed rendű egységmátrixnak nevezzük.

3-ad rendű egységmátrix: ⎥⎥⎥

⎢⎢⎢

100010001

Két mátrix egyenlő, ha azonos típusúak és minden elemük megegyezik.

⎥⎥⎥

⎢⎢⎢

4226237831

= ⎥⎥⎥

⎢⎢⎢

4226237831

Műveletek mátrixokkal

Összeadás:

Két azonos típusú mátrixot úgy adunk össze, hogy az A mátrix megfelelő elemét hozzáadjuk a B mátrix ugyan olyan indexű eleméhez. Minden elemre elvégezve kapunk egy C mátrixot, ami ugyan olyan típusú, mint az A és B mátrix.

⎥⎥⎥

⎢⎢⎢

4226237831

+ = ⎥⎥⎥

⎢⎢⎢

552124222254

⎥⎥⎥

⎢⎢⎢

59414104510085

A kivonást az előbbiekhez hasonlóan végezzük el.

⎥⎥⎥

⎢⎢⎢

4226237831

- = ⎥⎥⎥

⎢⎢⎢

552124222254

⎥⎥⎥

⎢⎢⎢

−−

−−

51010201

5623

Mátrix szorzása egy számmal úgy történik, hogy a mátrix minden elemét megszorozzuk az adott számmal.

⎥⎥⎥

⎢⎢⎢

4226237831

* 2 = ⎥⎥⎥

⎢⎢⎢

844124615662

16

Page 17: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

Mátrixok szorzása mátrixszal kicsit bonyolultabb művelet. Összeszorozni csak azokat a mátrixokat lehet ahol a szorzandó mátrixnak annyi oszlopa van ahány sora a szorzónak. Az alábbi példa mutatja a számítás menetét:

⎥⎦

⎤⎢⎣

⎡130211

* = = ⎥⎥⎥

⎢⎢⎢

212223

⎥⎦

⎤⎢⎣

⎡++++++++

)2*12*32*0()1*13*33*0()2*22*12*1()1*22*13*1(

⎥⎦

⎤⎢⎣

⎡81087

Determináns számítása:

A determináns kiszámítására igen sok probléma megoldásánál lehet szükségünk. Determinánson egy négyzetes mátrixhoz rendelt számot értünk. A jelölése a szögletes zárójel helyet két függőleges vonal. Ha egy A n×n-es négyzetes mátrix elemei az aik számok, akkor az (n-ed rendű) determináns a következő módszerrel:

1×1-es:

Maga a szám: a =a

2×2-es:

A= esetén a det A= ⎥⎦

⎤⎢⎣

⎡dcba

dcba

=ad-bc

Például:

1253

= 3*1 - 5*2 = -7

3×3-as:

A Sarrus szabály szerint:

A=

333231

232221

131211

aaaaaaaaa

=a11a22a33+a12a23a31+a13a21a32-a31a22a13-a32a23a11-a33a21a12

Példa:

17

Page 18: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

658327142

=2*2*6+4*3*8+1*7*5-8*2*1-5*3*2-6*7*4=24+96+35-16-30-168=-59

Ennél nagyobb mátrixokra a kifejtés tételt és a sarus szabályt összevonva szoktuk alkalmazni.

Összefoglalás:

Mit nevezünk mátrixnak?

Milyen különleges mátrixokat ismer?

Milyen műveletek végezhetők rajtuk?

Ismertesse a Determináns fogalmát és kiszámításának módját!

SZAKMAI INFORMÁCIÓTARTALOM

GRÁRELMÉLET

Egy olyan ábrát, amely pontokból és ezek közül némelyeket összekötő vonalakból áll, ezt a vonal alakjára való tekintet nélkül gráfnak nevezzük. A pontok a gráf pontjai vagy csúcsai, a csúcsokat összekötő vonalak a gráf élei.

18

Page 19: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

1.ábra Gráf

Véges gráf: ha pontjainak száma véges.

Egy csúcs fokszámát az adja meg, hány él fut ki belőle. Pl. az A csúcs fokszáma: 2.

Ha a gráfban van két olyan pont, amelyet több él is összeköt, akkor azt mondjuk, hogy a gráf tartalmaz többszörös éleket. Az 1. ábrán a B és E csúcs ilyen.

Ha egy gráfban az “a” pontból úgy jutunk el egy “b” pontba, hogy közben bármely pontot legfeljebb egyszer érintünk, akkor azt mondjuk, hogy úton haladtunk.

.Ha egy út kezdő és végpontja azonos, akkor körről beszélünk

Egy út vagy kör hosszán éleinek számát értjük.

Az olyan élt, amelynek mindkét vége ugyanaz a pont, hurokélnek nevezzük.

Egy gráfban két pontot szomszédosnak nevezünk, ha él köti össze őket.

Két élt szomszédosnak nevezünk, ha egyik végpontjuk közös.

2.ábra Egyszerű gráf

Egy gráfot egyszerűnek nevezünk, ha sem hurokélt, sem pedig többszörös éleket nem tartalmaz.

A

B

E C

D

19

Page 20: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

3.ábra Teljes gráf

Az olyan egyszerű gráfot, amelyben bármely két különböző pontot egy és csak egy él köt össze, teljes gráfnak nevezzük.

4.ábra Összefüggő gráf

Ha egy gráfban bármely két pont úttal elérhető, akkor a gráfot összefüggőnek nevezzük.

5.ábra Gráf (fekete) és a komplementere(piros)

Egy gráf komplementerén azt a gráfot értjük, amelynek az eredeti gráffal való egyesítése teljes gráfot ad.

Ha egy gráf bizonyos éleit és/vagy pontjait - a pontokat a hozzá illeszkedő élekkel együtt - töröljük, akkor ismét egy gráfot kapunk. Az így kapott gráfot az eredeti gráf részgráfjának nevezzük. A G gráf azon részgráfját, amely nem azonos G-vel, a G gráf egy valódi részgráfjának nevezzük.

20

Page 21: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A G gráf egy komponensén G egy olyan részgráfját értjük, amely összefüggő, de nem valódi részgráfja G egyetlen összefüggő részgráfjának sem.

6. ábra Fa gráf

A körmentes, összefüggő gráfot fa gráfnak nevezzük.

7.ábra Bináris fa

Az informatikában sokszor használatos a bináris fa. Itt olyan fáról beszélünk, ahol minden csúcsnak maximálisan két leszármazottja van.

Néhány egyszerű és alapvető tétel a gráfokkal kapcsolatban:

1. tétel: Minden gráfban a fokszámok összege az élek számának kétszeresével egyenlő.

2. tétel: Minden egyszerű gráfban a páratlan fokú pontok száma páros.

3. tétel: Az n-pontú teljes gráf éleinek száma n*(n-1)/2.

4. tétel: Ha egy gráfban minden pont foka legalább 2, akkor a gráfban van kör.

5. tétel: Ha egy n-pontú gráfnak legalább n éle van, akkor van a gráfban kör.

A

B

E C

21

Page 22: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

8.ábra Euler vonal

Euler-vonalnak nevezünk a gráfban egy utat, ha a gráf minden élén pontosan egyszer halad keresztül.

9.ábra Hamilton kör

Hamilton-körnek nevezzük a gráf egy olyan körét, amely a gráf minden pontján pontosan egyszer halad keresztül.

Összefoglalás:

Ismertesse a gráf fogalmát!

Milyen tulajdonságokkal rendelkezhet egy gráf?

Milyen alapvető tételeket ismer gráfokra?

Mi az Euler vonal?

Ismertesse a Hamilton kör fogalmát!

22

Page 23: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

SZAKMAI INFORMÁCIÓTARTALOM

KOMBINATORIKA 1. Permutációk:

Akkor beszélünk permutációról, ha valahány konkrét elemet sorba rendezünk. Ismétlés nélküli a permutáció, ha minden elem csak egyszer szerepel. Az ismétlés nélküli permutációk száma n elem esetén :

P=n!

Nézzük meg, miért van ez így! Az első elem kiválasztása n féleképp történhet. Minden kiválasztás után további (n-1) féleképp választhatjuk a másodikat, tehát már n(n-1) lehetőségnél tartunk. Ebből mindegyikhez a harmadikat n-2 féleképp választhatjuk, tehát már n(n-1)(n-2). és így tovább. , tehát már n(n-1)(n-2). és így tovább, ami pontosan az n!-al egyenlő!

Példa:

Ha van 10 darab, különböző színű kockánk, akkor hány féleképpen tudjuk sorba rendezni őket?

n!=10!=10*9*8*7*6*5*4*3*2*1=3628800

Akkor beszélünk ismétléses a permutációról, ha van olyan elem, amiből több is van a sorban. Ekkor az elemek számának faktoriálisát el kell osztanunk az ismétlődő elemek számának faktoriálisával!

!!!dk

nP =

Példa:

Van 10 darab színes kockánk. 3 db kék és 2 darab piros, de a többi különböző színű. Hányféleképpen rendezhetem sorba?

30240012

3628800!1*2*1*2*3

1*2*3*4*5*6*7*8*9*10!2!*3

!10====P

2. Variációk:

Akkor beszélünk variációról, ha egy adott (k) elemszámú sorozatot kell összeállítanunk valahány (n) fajta elemből. Fontos, hogy a sorrend itt számít!

23

Page 24: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

A variáció ismétlés nélküli, ha egy elem csak egyszer szerepelhet. Az ismétlés nélküli variáció majdnem, úgy számoljuk, mint a permutációt, csak hamarabb abbahagyjuk. Csak az első k hely számít. Tehát n elem esetén majdnem n!, de csak az első k tényezőt írjuk le:

)!(!kn

nVnk−

=

Példa:

Van 10 darab színes kockánk és ebből szeretnénk válogatni 4 elemből álló sorozatokat. Hány féleképpen tehetjük ezt meg?

50407*8*9*101*2*3*4*5*6

1*2*3*4*5*6*7*8*9*10!6!10

)!410(!10

====−

=nkV

Ismétléses a variáció, ha egy adott (k) elemszámú sorozatot kell összeállítanunk valahány (n) fajta elemből, de egy elemet többször is kiválaszthatunk. Fontos, hogy a sorrend itt számít!

a lehetséges variációk száma:

. Vin;k = nk

Példa: Van 10 darab színes kockánk és ebből szeretnénk válogatni 4 elemből álló sorozatokat, de minden egyes kiválasztás után visszateszem a kockákat. Így egy elem többször is szerepelhet! Hány féleképpen tehetjük ezt meg?

V=104=10000

3. Kombinációk:

a., Az ismétlés nélküli kombinációk száma azt adja meg, hogy n elemből hányféleképp választhatunk ki k-t, ha a sorrend nem számít. Ez majdnem olyan, mint egy ismétlés nélküli variáció, csakhogy itt a sorrend nem számít. Ezért az ismétlés nélküli variációk számát el kell osztani azzal, ahány féleképp sorba lehet rakni a kiválasztott k elemet.

)!(!!

,knk

nkn

C kn−

=⎟⎟⎠

⎞⎜⎜⎝

⎛=

Példa: Van 10 darab színes kockánk és ebből szeretnénk válogatni 4 elemet. A sorrend nem számít! Hány féleképpen tehetjük ezt meg?

2101*2*3*47*8*9*10

1*2*3*4*5*6*1*2*3*41*2*3*4*5*6*7*8*9*10

!6!4!10

410

, ====⎟⎟⎠

⎞⎜⎜⎝

⎛=knC

24

Page 25: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

b., Az ismétléses kombináció száma azt adja meg, hogy, hányféleképpen lehet n különböző dologból kiválasztani k darabot, ha nem számít a kiválasztás sorrendje és egy dolgot többször is választhatunk:

)!1(!)!1(1

,,−−+

=⎟⎟⎠

⎞⎜⎜⎝

⎛ −+=

nkkn

kkn

niCk

Példa: Van 10 darab színes kockánk és ebből szeretnénk válogatni 4 elemet. A választás után minden kockát visszateszünk a helyére, így többször is választhatóak! A sorrend nem számít! Hány féleképpen tehetjük ezt meg?

7151*2*3*410*11*12*13

1*2*3*4*5*6*7*8*9*1*2*3*41*2*3*4*5*6*7*8*9*10*11*12*13

!9!4!13

)!110(!4)!1410(1

,, ====−−+

=⎟⎟⎠

⎞⎜⎜⎝

⎛ −+=

kkn

niCk

A kombinatorikai feladatokban sok esetben nem csak tisztán az egyik típus szerepel. Érdemes sokat gyakorolni az ilyen feladatok megoldását, ha biztosan fel szeretnénk ismerni a feladattípusokat!

Összefoglalás:

Ismertesse a permutáció és ismétléses permutáció fogalmát!

Ismertesse a variáció és ismétléses variáció fogalmát!

Ismertesse a kombináció és ismétléses kombináció fogalmát!

Mutasson be egy-egy példát mindegyikre!

25

Page 26: 1144 PROGRAMOZÁSMÓDSZERTAN, …aktivitas-tiszk.hu/elearning/Obuch_Laszlo/A_programozas... · A PROGRAMOZÁS MATEMATIKAI ALAPJAI 1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

A PROGRAMOZÁS MATEMATIKAI ALAPJAI

IRODALOMJEGYZÉK

FELHASZNÁLT IRODALOM

KUROS, A. G. : Felsőbb algebra. Budapest (Tankönyvkiadó) 1978.

KNUTH, Donald, E.: A számítógép-programozás művészete I-III. Budapest (Műszaki) 1987.

OBÁDOVICS J. Gyula: Matematika. Budapest (Műszaki) 1978.

REIMANN József: Matematika. Budapest 1982.

WIRTH, Niklaus: Algoritmusok + Adatstruktúrák = Programok. Budapest (Műszaki) 1982.

26