„A számítástudomány alapjai - Segédanyagok a vizsgához” változatai közötti eltérés

Hryghr (vitalap | szerkesztései)
a visszalink
Szikszayl (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(30 közbenső módosítás, amit 4 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{Vissza|A számítástudomány alapjai}}
{{Vissza|A számítástudomány alapjai}}
{{TODO}}
__NOTOC__
__NOTOC__


* [https://wiki.sch.bme.hu/pub/Villanyalap/SzamTud/szamtud-vizsga-tetelek-2009-4.pdf Kidolgozott vizsgatételek] - by: [[KondorMate|MAKond]]
Ezen az oldalon van összegyűjtve az egyes témakörökhöz szükséges alapismeretek - Definíciók, fogalmal és algoritmusok.
* Tételek Villanysite-ról: [https://wiki.sch.bme.hu/pub/Villanyalap/SzamTud/Ttelek-part1.zip 1.-8. tétel] [https://wiki.sch.bme.hu/pub/Villanyalap/SzamTud/Ttelekpart2.zip 9.-19. tétel] - feltöltötte: [[CzimerKristof]]
* [https://wiki.sch.bme.hu/pub/Villanyalap/SzamTud/szamtud_fogalmak.txt Fogalomjegyzék] - feltöltötte: [[PapPer]]
* [http://www.cs.bme.hu/~fleiner/jegyzet/SzA2009.1.2.pdf Fleiner Tamás-féle jegyzet]
* [http://cs.bme.hu/sza/anim.html Animációk gyűjteménye]


==Segédanyagok tételenként==
'''FIGYELEM:''' Mivel itt nincsenek bizonyítások, így ez az ismeretanyag csupán az elégséges szintje! Valamint az érdemes előtte áttanulmányozni az aktuális tételsort, ami elérhető a tanszéki honlapon! Az évek során ugyanis kismértékben változhatott a tárgytematika.


===1. Leszámlálási alapfogalmak (permutációk, variációk és kombinációk, ismétlés nélkül, vagy ismétléssel), binomiális tétel, szita-formula===
'''''A kidolgozásokban hibák előfordulhatnak!'''''


====Jegyzetek, videók====
Ha hibát találsz bátran javítsd! Ha időd engedi bővítsd!
 
 
==1. Leszámlálási alapfogalmak (permutációk, variációk és kombinációk, ismétlés nélkül, vagy ismétléssel), binomiális tétel, szita-formula==
 
===Jegyzetek, videók===
* 1. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=SZ_1L9qMJoM Leszámlálások, Binomiális tétel, Skatulya-elv, Szita-formula]
* Binomiális tétel videó: [http://www.youtube.com/watch?v=1pSD8cYyqUo 1.], [http://www.youtube.com/watch?v=TeE-ypKj8ZI 2.]
* Binomiális tétel videó: [http://www.youtube.com/watch?v=1pSD8cYyqUo 1.], [http://www.youtube.com/watch?v=TeE-ypKj8ZI 2.]


====Definíciók====
===Definíciók===
* Ismétlés nélküli permutáció: <math>n</math> darab megkülönböztethető elem összes lehetséges sorba állításainak száma <math>n!</math>. Példa: 10 különböző színű golyó lehetséges sorba állításainak száma 10!.
* Ismétlés nélküli permutáció: <math>n</math> darab megkülönböztethető elem összes lehetséges sorba állításainak száma <math>n!</math>. Példa: 10 különböző színű golyó lehetséges sorba állításainak száma 10!.
* Ismétléses permutáció: <math>n</math> darab elem lehetséges sorba állításainak a száma, úgy, hogy az <math>n</math> elem <math>k_1</math> darab első típusú, <math>k_2</math> darab második típusú, ..., <math>k_m</math> darab <math>m.</math> típusú elemre osztható, és, ha csak ezeket a csoportokat tudjuk megkülönböztetni egymástól, a csoporton belül az egyes elemeket nem: <math> \frac{n!}{k_1! \cdot k_2! \cdot ... \cdot k_m!} </math>. Például: 6 darab piros és 4 darab kék golyó lehetésges sorba állításainak száma (egy piros golyót nem tudunk megkülönböztetni egy másik pirostól, mint ahogy egy kékset sem egy másik kéktől, csak a pirosat a kéktől): <math> \frac{10!}{4!6!} </math>.
* Ismétléses permutáció: <math>n</math> darab elem lehetséges sorba állításainak a száma, úgy, hogy az <math>n</math> elem <math>k_1</math> darab első típusú, <math>k_2</math> darab második típusú, ..., <math>k_m</math> darab <math>m.</math> típusú elemre osztható, és, ha csak ezeket a csoportokat tudjuk megkülönböztetni egymástól, a csoporton belül az egyes elemeket nem: <math> \frac{n!}{k_1! \cdot k_2! \cdot ... \cdot k_m!} </math>. Például: 6 darab piros és 4 darab kék golyó lehetésges sorba állításainak száma (egy piros golyót nem tudunk megkülönböztetni egy másik pirostól, mint ahogy egy kékset sem egy másik kéktől, csak a pirosat a kéktől): <math> \frac{10!}{4!6!} </math>.
24. sor: 25. sor:
* Ismétléses kombináció: <math>n</math> darab elemből hányféleképpen lehet <math>k</math> darabot kiválasztani, ha a sorrendjük nem számít, és egy elem többször is szerepelhet? <math> \binom{n+k-1}{k} </math>-féleképpen. Példa: 30 golyóból 10-et húzok ki visszatevéssel. Hányféle lehet a kihúzott golyók sorrendje? <math> \binom{30+10-1}{10} = \binom{39}{10} </math>-féle.
* Ismétléses kombináció: <math>n</math> darab elemből hányféleképpen lehet <math>k</math> darabot kiválasztani, ha a sorrendjük nem számít, és egy elem többször is szerepelhet? <math> \binom{n+k-1}{k} </math>-féleképpen. Példa: 30 golyóból 10-et húzok ki visszatevéssel. Hányféle lehet a kihúzott golyók sorrendje? <math> \binom{30+10-1}{10} = \binom{39}{10} </math>-féle.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Newton-féle binomiális tétel: tetszőleges valós <math>a</math>-ra és <math>b</math>-re és nemnegatív egész <math>n</math>-re <math> (a+b)^n = \sum_{i=0}^{n} \left[ \binom{n}{i} a^{n-i} b^i \right] </math>.
* Newton-féle binomiális tétel: tetszőleges valós <math>a</math>-ra és <math>b</math>-re és nemnegatív egész <math>n</math>-re <math> (a+b)^n = \sum_{i=0}^{n} \left[ \binom{n}{i} a^{n-i} b^i \right] </math>.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Szita-formula: nem diszjunkt halmazok uniójának elemszámának számítására alkalmazható módszer.
* Szita-formula: nem diszjunkt halmazok uniójának elemszámának számítására alkalmazható módszer.
## Egyszerűen összegezzük az uniót képző halmazok elemszámait.
*# Egyszerűen összegezzük az uniót képző halmazok elemszámait.
## De így kétszer számoltunk minden olyan elemet, ami a kettes metszetek valamelyikében van, tehát a kettes metszetek elemszámainak összegét le kell vonni a végeredményből.
*# De így kétszer számoltunk minden olyan elemet, ami a kettes metszetek valamelyikében van, tehát a kettes metszetek elemszámainak összegét le kell vonni a végeredményből.
## Az 1. pontban háromszor számoltuk a hármas metszetekben lévő elemeket, de a 2. pontban háromszor le is vontuk azokat, tehát most az eredményt korrigálni kell a hármas metszetek elemszámával.
*# Az 1. pontban háromszor számoltuk a hármas metszetekben lévő elemeket, de a 2. pontban háromszor le is vontuk azokat, tehát most az eredményt korrigálni kell a hármas metszetek elemszámával.
## Satöbbi.
*# Satöbbi.


==2. Gráfelméleti alapfogalmak, fák egyszerűbb tulajdonságai, Kruskal tétele (minimális költségű feszítőfa keresése), Cayley tétele (fák száma), Prüfer-kód==


===2. Gráfelméleti alapfogalmak, fák egyszerűbb tulajdonságai, Kruskal tétele (minimális költségű feszítőfa keresése), Cayley tétele (fák száma), Prüfer-kód===
===Jegyzetek, videók===
 
* 4. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=aBXHO5NoQM8 Gráfelméleti alapok]
====Jegyzetek, videók====
* 5. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=z3Hu54b8x7M Cayley-tétel, Prüfer-kód, Kruskal-algoritmus, Normál-fák]
* [http://www.youtube.com/watch?v=HmQR8Xy9DeM Alapfogalmak videó]
* [http://www.youtube.com/watch?v=HmQR8Xy9DeM Alapfogalmak videó]
* [http://www.youtube.com/watch?v=OWfeZ9uDhdw Kruskal-algoritmus videó]
* [http://www.youtube.com/watch?v=OWfeZ9uDhdw Kruskal-algoritmus videó]
* [http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-16-greedy-algorithms-minimum-spanning-trees/ Teljes MIT előadás-videó: mohó algoritmus, minimális költségű feszítőfa keresése]
* [http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-16-greedy-algorithms-minimum-spanning-trees/ Teljes MIT előadás-videó: mohó algoritmus, minimális költségű feszítőfa keresése]


====Definíciók====
===Definíciók===
* Gráf: rendezett <math>G=(V,E)</math> pár, ahol <math>V</math> a pontok, <math>E</math> az élek halmaza.
* Gráf: rendezett <math>G=(V,E)</math> pár, ahol <math>V</math> a pontok, <math>E</math> az élek halmaza.
* Pont: a gráfot részben alkotó nem üres halmaz.
* Pont: a gráfot részben alkotó nem üres halmaz.
90. sor: 92. sor:
* Prüfer-kód: egy fát egyértelműen reprezentáló számsorozat.
* Prüfer-kód: egy fát egyértelműen reprezentáló számsorozat.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Páratlan fokú pontok száma minden gráfban páros.
* Páratlan fokú pontok száma minden gráfban páros.
* <math>n</math> pontú teljes gráf éleinek száma
* <math>n</math> pontú teljes gráf éleinek száma
97. sor: 99. sor:
* Cayley tétele: <math>n</math> ponton <math>n^{n-2}</math> pont adható meg.
* Cayley tétele: <math>n</math> ponton <math>n^{n-2}</math> pont adható meg.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Kruskal-algoritmus: minimális súlyú feszítőerdőt talál egy gráfban
* Kruskal-algoritmus: minimális súlyú feszítőerdőt talál egy gráfban
## Kiválasztjuk az összes él közül valamelyik legkisebb súlyút.
*# Kiválasztjuk az összes él közül valamelyik legkisebb súlyút.
## Kiválasztjuk a maradék élek közül azt a legkisebb súlyút, ami a már kiválasztottakkal nem alkot kört.
*# Kiválasztjuk a maradék élek közül azt a legkisebb súlyút, ami a már kiválasztottakkal nem alkot kört.
## Addig ismételgetjük a 2. pontot, amíg minden pontját le nem fedtük a gráfnak.
*# Addig ismételgetjük a 2. pontot, amíg minden pontját le nem fedtük a gráfnak.
* Prüfer-kód felírása
* Prüfer-kód felírása
## Számozzuk meg a fa pontjait tetszőleges sorrendben.
*# Számozzuk meg a fa pontjait tetszőleges sorrendben.
## Töröljük le a fa elsőfokú pontjai közül azt, amelyiknek a legkisebb a száma és jegyezzük fel a szomszédja számát.
*# Töröljük le a fa elsőfokú pontjai közül azt, amelyiknek a legkisebb a száma és jegyezzük fel a szomszédja számát.
## Ezt ismételgessük addig, amíg csak tudjuk.
*# Ezt ismételgessük addig, amíg csak tudjuk.


==3. Euler-séta és -körséta (Euler-út, -kör) fogalma, szükséges és elégséges feltétel a létezésükre, Hamilton-kör és -út, szükséges, illetve, elégséges feltételek Hamilton-kör létezésére==


===3. Euler-séta és -körséta (Euler-út, -kör) fogalma, szükséges és elégséges feltétel a létezésükre, Hamilton-kör és -út, szükséges, illetve, elégséges feltételek Hamilton-kör létezésére===
===Jegyzetek, videók===
 
* 6. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=jM1s_SYza0w Euler-kör, Euler-út, Hamilton-kör, Hamilton-út]
====Jegyzetek, videók====
* [http://www.youtube.com/watch?v=REfC1-igKHQ Euler-út és -kör videó]
* [http://www.youtube.com/watch?v=REfC1-igKHQ Euler-út és -kör videó]


====Definíciók====
===Definíciók===
* Euler-út: olyan élsorozat, amely egyszer tartalmazza a gráf minden élét.
* Euler-út: olyan élsorozat, amely egyszer tartalmazza a gráf minden élét.
* Euler-kör: zárt Euler-út. Megjegyzés: az Euler-körök és -utak a neveik ellenére nem a korábbi definíciók szerinti körök, illetve utak.
* Euler-kör: zárt Euler-út. Megjegyzés: az Euler-körök és -utak a neveik ellenére nem a korábbi definíciók szerinti körök, illetve utak.
119. sor: 121. sor:
* Hamilton-kör: azonos kezdő- és végpontú Hamilton-út.
* Hamilton-kör: azonos kezdő- és végpontú Hamilton-út.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Euler-kör létezésének tétele: egy gráfban akkor és csak akkor van Euler-kör, ha a gráf minden pontjának fokszáma páros és a gráf összefüggő. ("Euleri grááááf, minden foka páros!")
* Euler-kör létezésének tétele: egy gráfban akkor és csak akkor van Euler-kör, ha a gráf minden pontjának fokszáma páros és a gráf összefüggő. ("Euleri grááááf, minden foka páros!")
* Euler-út létezésének tétele: egy gráfban akkor és csak akkor van Euler-út, ha a gráfban a páratlan fokú pontok száma 0 vagy 2 és a gráf összefüggő.
* Euler-út létezésének tétele: egy gráfban akkor és csak akkor van Euler-út, ha a gráfban a páratlan fokú pontok száma 0 vagy 2 és a gráf összefüggő.
125. sor: 127. sor:
* Dirac tétele: ha egy <math>n</math> pontú gráfban minden font foka legalább <math>n/2</math>, akkor a gráfban van Hamilton-kör.
* Dirac tétele: ha egy <math>n</math> pontú gráfban minden font foka legalább <math>n/2</math>, akkor a gráfban van Hamilton-kör.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===4. Legrövidebb utakat kereső algoritmusok (BFS, Dijkstra, Ford, Floyd)===
==4. Legrövidebb utakat kereső algoritmusok (BFS, Dijkstra, Ford, Floyd)==


====Jegyzetek, videók====
===Jegyzetek, videók===
* [http://www.youtube.com/watch?v=or9xlA3YYzo BFS, DFS videó]
* [http://www.youtube.com/watch?v=or9xlA3YYzo BFS, DFS videó]
* [http://www.youtube.com/watch?v=8Ls1RqHCOPw Dijkstra videó]
* [http://www.youtube.com/watch?v=8Ls1RqHCOPw Dijkstra videó]
137. sor: 139. sor:
* [http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-19-shortest-paths-iii-all-pairs-shortest-paths-matrix-multiplication-floyd-warshall-johnson/ Teljes MIT előadás-videó: Floyd-algoritmus]
* [http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-19-shortest-paths-iii-all-pairs-shortest-paths-matrix-multiplication-floyd-warshall-johnson/ Teljes MIT előadás-videó: Floyd-algoritmus]


====Definíciók====
===Definíciók===


====Tételek és összefüggések====
===Tételek és összefüggések===


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* BFS: nem élsúlyozott esetben használjuk
* BFS: nem élsúlyozott esetben használjuk
## Kiválasztjuk a kezdőpontot és megjelöljük
*# Kiválasztjuk a kezdőpontot és megjelöljük
## Meglátogatjuk az összes szomszédját, ahol még nem voltunk.
*# Meglátogatjuk az összes szomszédját, ahol még nem voltunk.
## Miután elfogytak a megjelölt pont még meg nem látogatott szomszédai, áttérünk a meglátogatott szomszédok közül a legkisebb indexűre és megjelöljük.
*# Miután elfogytak a megjelölt pont még meg nem látogatott szomszédai, áttérünk a meglátogatott szomszédok közül a legkisebb indexűre és megjelöljük.
## Az előbbi két pontot ismételgetjük, amíg csak tudjuk.
*# Az előbbi két pontot ismételgetjük, amíg csak tudjuk.
* Dijkstra-algoritmus: élsúlyozott esetben használjuk
* Dijkstra-algoritmus: élsúlyozott esetben használjuk
## Kiválasztjuk a kezdőpontot.
*# Kiválasztjuk a kezdőpontot.
## Felírjuk, hogy a kezdőpont mely szomszédjaiba milyen áron lehet eljutni. Amely pontba nem tudunk egy lépésben eljutni, azt végtelen eljutási költségnek jelöljük.
*# Felírjuk, hogy a kezdőpont mely szomszédjaiba milyen áron lehet eljutni. Amely pontba nem tudunk egy lépésben eljutni, azt végtelen eljutási költségnek jelöljük.
## Megnézzük, hogy a kiindulópontból hová juthatunk el a legolcsóbban, majd "felfedezzük" annak a pontnak a szomszédságát: felírjuk, hogy a '''kezdőpontból''' milyen költséggel juthatunk el ennek a pontnak a szomszédaihoz. Ha egy ponthoz olcsóbb eljutási lehetőséget találtunk, javítjuk. Ahol nem tudtunk javítani, változatlanul hagyjuk.
*# Megnézzük, hogy a kiindulópontból hová juthatunk el a legolcsóbban, majd "felfedezzük" annak a pontnak a szomszédságát: felírjuk, hogy a '''kezdőpontból''' milyen költséggel juthatunk el ennek a pontnak a szomszédaihoz. Ha egy ponthoz olcsóbb eljutási lehetőséget találtunk, javítjuk. Ahol nem tudtunk javítani, változatlanul hagyjuk.
## Az előző pontot ismételgetjük addig, amíg már egy pontból sem tudunk javítani.
*# Az előző pontot ismételgetjük addig, amíg már egy pontból sem tudunk javítani.
* Ford-algoritmus: olyan esetben használjuk, ha a gráfban nincs negatív összsúlyú irányított kör. Ez az algoritmus nagyjából úgy működik, mint a Dijkstra brute force üzemmódban.
* Ford-algoritmus: olyan esetben használjuk, ha a gráfban nincs negatív összsúlyú irányított kör. Ez az algoritmus nagyjából úgy működik, mint a Dijkstra brute force üzemmódban.
## Megszámozzuk az éleket tetszőleges sorrendben.
*# Megszámozzuk az éleket tetszőleges sorrendben.
## Felírjuk, hogy a kiindulópontba 0 költségen, minden más pontba végtelen költségen juthatunk el.
*# Felírjuk, hogy a kiindulópontba 0 költségen, minden más pontba végtelen költségen juthatunk el.
## Számsorrendben, agyatlanul elkezdjük sorba venni az éleket és a Dijkstra-féle javítást próbáljuk elvégezni. Függetlenül attól, hogy mondjuk az adott él nagyon messze van a kiindulóponttól, és adott esetben egy olyan javítást akarunk elvégezni, hogy "ebbe a pontba végtelen költségen jutottam, tehát ennek a szomsédjába végtelen + 2-ért tudok". Ilyenkor belenyugszunk, hogy nem tudtunk javítani és vesszük a következő számú élt, hátha amentén tudunk.
*# Számsorrendben, agyatlanul elkezdjük sorba venni az éleket és a Dijkstra-féle javítást próbáljuk elvégezni. Függetlenül attól, hogy mondjuk az adott él nagyon messze van a kiindulóponttól, és adott esetben egy olyan javítást akarunk elvégezni, hogy "ebbe a pontba végtelen költségen jutottam, tehát ennek a szomsédjába végtelen + 2-ért tudok". Ilyenkor belenyugszunk, hogy nem tudtunk javítani és vesszük a következő számú élt, hátha amentén tudunk.
## Az előbbi lépést ismételgetjük, addig, amíg a pontok számánál egyel kevesebbszer végig nem pörgettük az összes élt.
*# Az előbbi lépést ismételgetjük, addig, amíg a pontok számánál egyel kevesebbszer végig nem pörgettük az összes élt.
* Floyd-algoritmus: olyan esetben használjuk, ha a gráfban nincs negatív összsúlyú irányított kör.  
* Floyd-algoritmus: olyan esetben használjuk, ha a gráfban nincs negatív összsúlyú irányított kör.  
## Számozzuk meg a pontokat 1-től n-ig. Ez az algoritmus végigmegy minden ponton és ellenőrzi, hogy az adott ponton keresztül van-e rövidebb út bármely két pontpár között.
*# Számozzuk meg a pontokat 1-től n-ig. Ez az algoritmus végigmegy minden ponton és ellenőrzi, hogy az adott ponton keresztül van-e rövidebb út bármely két pontpár között.
## Először rögzítsük, hogy az 1. ponton keresztül vezető utak hosszát keressük. (Ez legyen a "köztes állomás".)
*# Először rögzítsük, hogy az 1. ponton keresztül vezető utak hosszát keressük. (Ez legyen a "köztes állomás".)
## Majd rögzítsük, hogy az 1. pontból, az 1. ponton keresztül vezető utak hosszát keressük.
*# Majd rögzítsük, hogy az 1. pontból, az 1. ponton keresztül vezető utak hosszát keressük.
## Majd futtassuk végig, hogy az 1. pontból, az 1. ponton keresztül az 1., 2., 3., ... n. pontba milyen hosszúságú út vezet. Igen, a legelső lépésben az lesz az ellenőrzés tárgya, hogy "az 1. pontból az 1. pontba, majd az 1. pontból az 1. pontba vezető út rövidebb-e, mint az 1. pontból az 1. pontba vezető?".
*# Majd futtassuk végig, hogy az 1. pontból, az 1. ponton keresztül az 1., 2., 3., ... n. pontba milyen hosszúságú út vezet. Igen, a legelső lépésben az lesz az ellenőrzés tárgya, hogy "az 1. pontból az 1. pontba, majd az 1. pontból az 1. pontba vezető út rövidebb-e, mint az 1. pontból az 1. pontba vezető?".
## Miután ez megvan, térjünk vissza ennek a felsorolásnak a 3. lépéséhez, és rögzítsük, hogy a 2. pontból, az 1. ponton keresztül vezető utak hosszát keressük.
*# Miután ez megvan, térjünk vissza ennek a felsorolásnak a 3. lépéséhez, és rögzítsük, hogy a 2. pontból, az 1. ponton keresztül vezető utak hosszát keressük.
## Futtassuk végig a felsorolás 4. lépésének megfelelően a "célállomás" számát 1-től n-ig.
*# Futtassuk végig a felsorolás 4. lépésének megfelelően a "célállomás" számát 1-től n-ig.
## Inkrementáljuk a "kiinduló állomást".
*# Inkrementáljuk a "kiinduló állomást".
## Futtassuk le 1-től n-ig a célállomásokat.
*# Futtassuk le 1-től n-ig a célállomásokat.
## Ismételgessük az előző kettőt, amíg csak tudjuk. Ekkor inkrementáljuk a köztes állomás számát, amin keresztül keressük az utakat és kezdjük újból futtatni a kiinduló és célállomásokat.
*# Ismételgessük az előző kettőt, amíg csak tudjuk. Ekkor inkrementáljuk a köztes állomás számát, amin keresztül keressük az utakat és kezdjük újból futtatni a kiinduló és célállomásokat.
## Vegyük észre, hogy ez három egymásba ágyzott for-ciklus. Mind 1-től n-ig megy, és a következőképpen vannak egymásba ágyazva: Keresztül(1..n){Kiinduló(1..n){Cél(1..n)}}
*# Vegyük észre, hogy ez három egymásba ágyzott for-ciklus. Mind 1-től n-ig megy, és a következőképpen vannak egymásba ágyazva: Keresztül(1..n){Kiinduló(1..n){Cél(1..n)}}
## Mindig akkor javítunk, ha Költség(Kiinduló->Köztes) + Költség(Köztes->Cél) < Költség(Kiinduló->Cél).
*# Mindig akkor javítunk, ha Költség(Kiinduló->Köztes) + Költség(Köztes->Cél) < Költség(Kiinduló->Cél).


==5. Párosítások, König-Hall-tétel, Frobenius-tétel==


===5. Párosítások, König-Hall-tétel, Frobenius-tétel===
===Jegyzetek, videók===
 
====Jegyzetek, videók====
* [http://www.youtube.com/watch?v=OvM78wl3fUs Hall-tétel videó]
* [http://www.youtube.com/watch?v=OvM78wl3fUs Hall-tétel videó]


====Definíciók====
===Definíciók===
* Páros gráf: olyan gráf, melynek pontjai két halmazra oszthatók és minden élének az egyik végpontja az egyik halmazban, a másik végpontja a másik halmazban van.
* Páros gráf: olyan gráf, melynek pontjai két halmazra oszthatók és minden élének az egyik végpontja az egyik halmazban, a másik végpontja a másik halmazban van.
* Teljes páros gráf: olyan páros gráf, melynek minden egyik halmazbeli pontja össze van kötve minden másik halmazbeli pontjával.
* Teljes páros gráf: olyan páros gráf, melynek minden egyik halmazbeli pontja össze van kötve minden másik halmazbeli pontjával.
182. sor: 183. sor:
* Teljes párosítás: olyan párosítás, mely a gráf minden pontját lefedi.
* Teljes párosítás: olyan párosítás, mely a gráf minden pontját lefedi.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Egy gráf akkor és csak akkor páros gráf, ha minden benne lévő kör páros hosszúságú.
* Egy gráf akkor és csak akkor páros gráf, ha minden benne lévő kör páros hosszúságú.
* Hall-tétel: egy páros gráfban akkor és csak akkor van az egyik ponthalmazt lefedő párosítás, ha a ponthalmaz minden részhalmazára igaz, hogy annak pontjainak száma kisebb, vagy egyenlő, mint annak szomszédos pontjainak a száma.
* Hall-tétel: egy páros gráfban akkor és csak akkor van az egyik ponthalmazt lefedő párosítás, ha a ponthalmaz minden részhalmazára igaz, hogy annak pontjainak száma kisebb, vagy egyenlő, mint annak szomszédos pontjainak a száma.
* Frobenius-tétel: egy páros gráfban akkor és csak akkor van teljes párosítás, ha a két halmaz elemszáma megegyezik és az egyikre igaz a Hall-tétel.   
* Frobenius-tétel: egy páros gráfban akkor és csak akkor van teljes párosítás, ha a két halmaz elemszáma megegyezik és az egyikre igaz a Hall-tétel.   


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===6. König és Gallai tételei, Tutte-tétel (bizonyítás nélkül)===
==6. König és Gallai tételei, Tutte-tétel (bizonyítás nélkül)==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* Független élek: semelyik két élnek nincs közös pontja.
* Független élek: semelyik két élnek nincs közös pontja.
* Független pontok: nincs benne két szomszédos pont.
* Független pontok: nincs benne két szomszédos pont.
200. sor: 201. sor:
* Lefogó pontok: minden élnek legalább az egyik végpontját tartalmazzák.
* Lefogó pontok: minden élnek legalább az egyik végpontját tartalmazzák.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Minden gráfra a független élek maximális száma kisebb, vagy egyenlő, mint a legofó pontok minimális száma.
* Minden gráfra a független élek maximális száma kisebb, vagy egyenlő, mint a legofó pontok minimális száma.
* Minden gráfra a független pontok maximális száma kisebb, vagy egyenlő, mint a lefogó élek minimális száma.
* Minden gráfra a független pontok maximális száma kisebb, vagy egyenlő, mint a lefogó élek minimális száma.
208. sor: 209. sor:
* Tutte-tétel: egy gráfban akkor és csak akkor létezik teljes párosítás, ha akárhogy hagyunk el egy gráfból néhány pontot, a maradékban a páratlan komponensek száma ennél több nem lehet.
* Tutte-tétel: egy gráfban akkor és csak akkor létezik teljes párosítás, ha akárhogy hagyunk el egy gráfból néhány pontot, a maradékban a páratlan komponensek száma ennél több nem lehet.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===7. Hálózati folyamok, Ford-Fulkerson-tétel, Edmonds-Karp-tétel (bizonyítás nélkül)===
==7. Hálózati folyamok, Ford-Fulkerson-tétel, Edmonds-Karp-tétel (bizonyítás nélkül)==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* Él kapacitása: a gráf éléhez rendelt nemnegatív valós szám.
* Él kapacitása: a gráf éléhez rendelt nemnegatív valós szám.
* Hálózat: olyan irányított gráf, melyben az élekhez kapacitások vannak rendelve, valamint van a gráfban egy forrás és egy nyelő.
* Hálózat: olyan irányított gráf, melyben az élekhez kapacitások vannak rendelve, valamint van a gráfban egy forrás és egy nyelő.
223. sor: 224. sor:
* Javító út: olyan (nem feltétlenül a gráf irányításának megfelelő) út s-ből t-be, amely mentén a folyamértékeket változtatva növelni tudjuk a teljes folyam értékét.
* Javító út: olyan (nem feltétlenül a gráf irányításának megfelelő) út s-ből t-be, amely mentén a folyamértékeket változtatva növelni tudjuk a teljes folyam értékét.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Ford-Fulkerson-tétel: a maximális folyam értéke egyenlő a minimális vágás értékével.
* Ford-Fulkerson-tétel: a maximális folyam értéke egyenlő a minimális vágás értékével.
* Edmonds-Karp-tétel: ha mindig a legrövidebb utat vesszük, akkor a maximális folyam meghatározásához szükséges lépések száma felülről becsülhető a pontok számának polinomjával.
* Edmonds-Karp-tétel: ha mindig a legrövidebb utat vesszük, akkor a maximális folyam meghatározásához szükséges lépések száma felülről becsülhető a pontok számának polinomjával.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===8. Menger tételei, gráfok összefüggőségi számai, Dirac-tétel (bizonyítás nélkül)===
==8. Menger tételei, gráfok összefüggőségi számai, Dirac-tétel (bizonyítás nélkül)==


====Jegyzetek, videók====
===Jegyzetek, videók===
* [http://www.youtube.com/watch?v=JJpWE0oKm2Y Menger tételei videó]
* [http://www.youtube.com/watch?v=JJpWE0oKm2Y Menger tételei videó]


====Definíciók====
===Definíciók===
* Élidegen utak: olyan utak, melyekben nincs közös él.
* Élidegen utak: olyan utak, melyekben nincs közös él.
* Pontidegen utak: olyan utak, melyekben nincs közös pont.
* Pontidegen utak: olyan utak, melyekben nincs közös pont.
241. sor: 242. sor:
* k-szorosan pontösszefüggő gráf: legalább <math>k+1</math> pontja van és akárhogy hagyunk el belőle k-nál kevesebb pontot, a maradó gráf összefüggő marad.
* k-szorosan pontösszefüggő gráf: legalább <math>k+1</math> pontja van és akárhogy hagyunk el belőle k-nál kevesebb pontot, a maradó gráf összefüggő marad.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Menger tételek: irányított és irányítatlan gráfokra is igazak. Irányított gráfok esetében s és t forrás és nyelő, irányítatlan esetben pedig csak két kijelölt pontja a gráfnak.
* Menger tételek: irányított és irányítatlan gráfokra is igazak. Irányított gráfok esetében s és t forrás és nyelő, irányítatlan esetben pedig csak két kijelölt pontja a gráfnak.
** Az s-ből t-be vezető, páronként élidegen utak maximális száma egyenlő az s-t utakat lefogó élek maximális számával.
** Az s-ből t-be vezető, páronként élidegen utak maximális száma egyenlő az s-t utakat lefogó élek maximális számával.
250. sor: 251. sor:
* Dirac-tétel: ha <math> k \leq 2 </math> és a gráf k-szorosan pontösszefüggő, akkor bármely k darab pontján át vezet kör.
* Dirac-tétel: ha <math> k \leq 2 </math> és a gráf k-szorosan pontösszefüggő, akkor bármely k darab pontján át vezet kör.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===9. Pont- és élszínezés, korlátok a kromatikus számra, Mycielski-konstrukció, Brooks-tétel (bizonyítás nélkül)===
==9. Pont- és élszínezés, korlátok a kromatikus számra, Mycielski-konstrukció, Brooks-tétel (bizonyítás nélkül)==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* Kromatikus szám: megadja, hogy egy gráf csúcsai legkevesebb hány színnel színezhetők ki úgy, hogy bármely két szomszédos csúcs színe különböző legyen.
* Kromatikus szám: megadja, hogy egy gráf csúcsai legkevesebb hány színnel színezhetők ki úgy, hogy bármely két szomszédos csúcs színe különböző legyen.
* Élkromatikus szám: megadja, hogy egy gráf élei legkevesebb hány színnel színezhetők ki úgy, hogy bármely két szomszédos él színe különböző legyen.
* Élkromatikus szám: megadja, hogy egy gráf élei legkevesebb hány színnel színezhetők ki úgy, hogy bármely két szomszédos él színe különböző legyen.
264. sor: 265. sor:
* Klikkszám: a gráfban található összes klikk közül a legnagyobb adja a gráf klikkszámát.
* Klikkszám: a gráfban található összes klikk közül a legnagyobb adja a gráf klikkszámát.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Klikkszám és kromatikus szám összefüggése: minden gráfra igaz, hogy a kromatikus szám nagyobb, vagy egyenlő, mint a klikkszám.
* Klikkszám és kromatikus szám összefüggése: minden gráfra igaz, hogy a kromatikus szám nagyobb, vagy egyenlő, mint a klikkszám.
* Korlátok a kromatikus számra: teljes gráfok esetében a kromatikus szám egyenlő a pontok számával, nem teljes gráf esetében értelemszerűen kevesebb.
* Korlátok a kromatikus számra: teljes gráfok esetében a kromatikus szám egyenlő a pontok számával, nem teljes gráf esetében értelemszerűen kevesebb.
270. sor: 271. sor:
* Brooks-tétel: egyszerű, összefüggő, nem teljes gráfokra és nem páratlan hosszúságú körökre igaz, hogy a kromatikus számuk nem nagyobb, mint a maximális fokszám.
* Brooks-tétel: egyszerű, összefüggő, nem teljes gráfokra és nem páratlan hosszúságú körökre igaz, hogy a kromatikus számuk nem nagyobb, mint a maximális fokszám.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Mycielski-konstrukció: egy n pontú gráfhoz egy olyan gráfot rendel, amelyben feszített részgráfként szerepel az eredeti gráf és még <math>n+1</math> pont, a következők szerint:
* Mycielski-konstrukció: egy n pontú gráfhoz egy olyan gráfot rendel, amelyben feszített részgráfként szerepel az eredeti gráf és még <math>n+1</math> pont, a következők szerint:
## Rajzoljuk le az eredeti gráf <math>v_1,...,v_n</math> pontjait a köztük lévő élekkel együtt.
*# Rajzoljuk le az eredeti gráf <math>v_1,...,v_n</math> pontjait a köztük lévő élekkel együtt.
## Rajzuljunk további n darab, <math>u_1,...,u_n</math> pontot, úgy, hogy az <math>u_i</math> pontnak ugyanazok legyenek a szomszédai, mint amik a <math>v_i</math>-nek is szomszédai <math>\forall i</math>-re.
*# Rajzuljunk további n darab, <math>u_1,...,u_n</math> pontot, úgy, hogy az <math>u_i</math> pontnak ugyanazok legyenek a szomszédai, mint amik a <math>v_i</math>-nek is szomszédai <math>\forall i</math>-re.
## Rajzoljunk továbbá egy w pontot, amelyiket kössünk össze minden <math>u_i</math> ponttal, de ne kössünk össze egy <math>v_i</math>-vel sem.
*# Rajzoljunk továbbá egy w pontot, amelyiket kössünk össze minden <math>u_i</math> ponttal, de ne kössünk össze egy <math>v_i</math>-vel sem.
## Állítás: ha <math>n\leq 2</math>, olyan gráfot rajzoltunk, ami megfelel a Mycielski-tételnek.
*# Állítás: ha <math>n\leq 2</math>, olyan gráfot rajzoltunk, ami megfelel a Mycielski-tételnek.


==10. Síkbarajzolhatóság, Euler-féle poliédertétel, Kuratowski tétele (csak könnyű irányban bizonyítani), Fáry-Wagner-tétel (bizonyítás nélkül)==


===10. Síkbarajzolhatóság, Euler-féle poliédertétel, Kuratowski tétele (csak könnyű irányban bizonyítani), Fáry-Wagner-tétel (bizonyítás nélkül)===
===Jegyzetek, videók===
 
====Jegyzetek, videók====
* [http://www.youtube.com/watch?v=x6zPviKyykM Síkbarajzolhatóság, Euler-féle poliédertétel videó]
* [http://www.youtube.com/watch?v=x6zPviKyykM Síkbarajzolhatóság, Euler-féle poliédertétel videó]
* [http://www.youtube.com/watch?v=YqEeaudxghE Bizonyítás, hogy K5 és K3,3 nem síkbarajzolhatók videó]
* [http://www.youtube.com/watch?v=YqEeaudxghE Bizonyítás, hogy K5 és K3,3 nem síkbarajzolhatók videó]


====Definíciók====
===Definíciók===
* Síkbarajzolható gráf: olyan gráf, amely lerajzolható a síkba úgy, hogy élei ne messék egymást.
* Síkbarajzolható gráf: olyan gráf, amely lerajzolható a síkba úgy, hogy élei ne messék egymást.
* Tartomány: a síkbarajzolt gráfban az élek által határolt területek. A gráf tartományának számít az egészet körülölelő, külső végtelen tartomány is.
* Tartomány: a síkbarajzolt gráfban az élek által határolt területek. A gráf tartományának számít az egészet körülölelő, külső végtelen tartomány is.
* Kuratowski-gráf: az ötpontú teljes gráf <math>K_5</math> és a három-három pontú teljes páros gráf <math>K_{3,3}</math>.  
* Kuratowski-gráf: az ötpontú teljes gráf <math>K_5</math> és a három-három pontú teljes páros gráf <math>K_{3,3}</math>.  
* Topologikus izomorfia: két gráf topologikusan izomorf, ha a következő két művelet alkalmazásával izomorf gráfok hozhatók létre belőlük:
* Topologikus izomorfia: két gráf topologikusan izomorf, ha a következő két művelet alkalmazásával izomorf gráfok hozhatók létre belőlük:
## Egy él "közepére" egy pont beszúrása, vagyis egy él 2-hosszú úttal való helyettesítése.
*# Egy él "közepére" egy pont beszúrása, vagyis egy él 2-hosszú úttal való helyettesítése.
## Egy pont "középről" való eltüntetése, vagyis egy 2-hosszú út éllel való helyettesítése.
*# Egy pont "középről" való eltüntetése, vagyis egy 2-hosszú út éllel való helyettesítése.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Síkbarajzolhatóság feltétele: egy gráf akkor síkbarajzolható, ha gömbre rajzolható.
* Síkbarajzolhatóság feltétele: egy gráf akkor síkbarajzolható, ha gömbre rajzolható.
* Euler-féle poliédertétel: minden _n_ pontú, _e_ élű és _t_ tartománnyal (beleértve a külsőt is!) rendelkező összefüggő síkbarajzolható gráfra: <math>n+t=e+2</math>.
* Euler-féle poliédertétel: minden _n_ pontú, _e_ élű és _t_ tartománnyal (beleértve a külsőt is!) rendelkező összefüggő síkbarajzolható gráfra: <math>n+t=e+2</math>.
298. sor: 298. sor:
* Fáry-Wágner-tétel: minden egyszerű, síkbarajzolható gráfnak létezik olyan ábrázolása is, hogy minden élet egyenes vonalakkal rajzolunk.
* Fáry-Wágner-tétel: minden egyszerű, síkbarajzolható gráfnak létezik olyan ábrázolása is, hogy minden élet egyenes vonalakkal rajzolunk.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Sztereografikus projekció - síkgráf gömbre rajzolása.
* Sztereografikus projekció - síkgráf gömbre rajzolása.
## Tegyük a gömböt a síkra.
*# Tegyük a gömböt a síkra.
## Ahol a gömb a síkkal érintkezik, legyen a déli pólus.
*# Ahol a gömb a síkkal érintkezik, legyen a déli pólus.
## Az északi pólust összekötjük a síkon a gráf pontjaival.
*# Az északi pólust összekötjük a síkon a gráf pontjaival.
## Ahol az egyenesek metszik a gömb felszínét, azok a gömbre rajzolt gráf megfelelő pontjai.
*# Ahol az egyenesek metszik a gömb felszínét, azok a gömbre rajzolt gráf megfelelő pontjai.
## Az eljárás megfordítható, ha az északi póluson nincs pont és nem is megy át él.
*# Az eljárás megfordítható, ha az északi póluson nincs pont és nem is megy át él.


==11. Dualitás, gyenge izomorfia, Whitney tételei (bizonyítás nélkül), síkgráfok színezése, ötszíntétel==


===11. Dualitás, gyenge izomorfia, Whitney tételei (bizonyítás nélkül), síkgráfok színezése, ötszíntétel===
===Jegyzetek, videók===


====Jegyzetek, videók====
===Definíciók===
 
====Definíciók====
* Gráf duálisa: a síkbarajzolható gráf duálisa úgy kezetkezik, hogy az eredeti gráf tartományaihoz pontokat rendelünk (a külső tartományhoz is) és két ilyen új pontot akkor kötünk össze, ha az eredeti gráfban a két tartománynak van közös határvonala.
* Gráf duálisa: a síkbarajzolható gráf duálisa úgy kezetkezik, hogy az eredeti gráf tartományaihoz pontokat rendelünk (a külső tartományhoz is) és két ilyen új pontot akkor kötünk össze, ha az eredeti gráfban a két tartománynak van közös határvonala.
* Gyenge izomorfia: két gráf gyengén izomorf, ha éleik között kölcsönösen egyértelmű, körtartó leképezés létesíthető.
* Gyenge izomorfia: két gráf gyengén izomorf, ha éleik között kölcsönösen egyértelmű, körtartó leképezés létesíthető.
* Absztrakt duális: két gráf egymás absztrakt duálisai, ha éleik között létesíthető olyan kölcsönösen egyértelmű leképezés, amely kört vágásba, vágást körbe visz.
* Absztrakt duális: két gráf egymás absztrakt duálisai, ha éleik között létesíthető olyan kölcsönösen egyértelmű leképezés, amely kört vágásba, vágást körbe visz.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Whitney-tételei
* Whitney-tételei
** Ha egy _G_ gráf síkbarajzolható, akkor a vele gyengén izomorf _H_ is. Ezek duálisai egymással szintén gyengén izomorfak lesznek, a duálisaik duálisa pedig gyengén izomorf lesz az eredeti _G_ és _H_ gráfokkal.
** Ha egy _G_ gráf síkbarajzolható, akkor a vele gyengén izomorf _H_ is. Ezek duálisai egymással szintén gyengén izomorfak lesznek, a duálisaik duálisa pedig gyengén izomorf lesz az eredeti _G_ és _H_ gráfokkal.
** Egy gráfnak csak akkor létezik absztrakt duálisa, ha síkbarajzolható.
** Egy gráfnak csak akkor létezik absztrakt duálisa, ha síkbarajzolható.
** Egy gráf akkor és csak akkor gyengén izomorf egy másikkal, ha az alábbi három lépés ismételgetésével vele izomorf gráfot tudunk létrehozni:
** Egy gráf akkor és csak akkor gyengén izomorf egy másikkal, ha az alábbi három lépés ismételgetésével vele izomorf gráfot tudunk létrehozni:
### Ha a gráfnak van olyan pontja, aminek elhagyásával a gráf két komponensre esne, akkor ezt a pontot megkettőzve "húzzúk szét" a gráfot két komponensre.
**# Ha a gráfnak van olyan pontja, aminek elhagyásával a gráf két komponensre esne, akkor ezt a pontot megkettőzve "húzzúk szét" a gráfot két komponensre.
### Az előbbi lépés inverze: kétkomponensű gráfban mindkét komponensből válasszunk ki egy-egy pontot és ezeknél fogva "ragasszuk össze" a két komponenst.
**# Az előbbi lépés inverze: kétkomponensű gráfban mindkét komponensből válasszunk ki egy-egy pontot és ezeknél fogva "ragasszuk össze" a két komponenst.
### Ha a gráfnak van két olyan pontja, melyek elhagyásával a gráf két komponensre esne, akkor e pontokat megkettőzve "húzzúk szét" a gráfot két komponensre, gondolatban "tükrözzük" az egyik komponenst, majd a két pont mentén "ragasszuk össze" fordítva.
**# Ha a gráfnak van két olyan pontja, melyek elhagyásával a gráf két komponensre esne, akkor e pontokat megkettőzve "húzzúk szét" a gráfot két komponensre, gondolatban "tükrözzük" az egyik komponenst, majd a két pont mentén "ragasszuk össze" fordítva.
* Ötszín-tétel: ha egy gráf síkbarajzolható, a kromatikus száma kisebb, vagy egyenlő, mint öt.
* Ötszín-tétel: ha egy gráf síkbarajzolható, a kromatikus száma kisebb, vagy egyenlő, mint öt.
* Vizing-tétel: ha egy gráf egyszerű, akkor az élkromatikus száma kisebb, vagy egyenlő, mint a gráfban a legnagyobb előforduló fokszám plusz egy.
* Vizing-tétel: ha egy gráf egyszerű, akkor az élkromatikus száma kisebb, vagy egyenlő, mint a gráfban a legnagyobb előforduló fokszám plusz egy.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===12. Mélységi keresés és alkalmazásai (pl. irányított kör létezésének eldöntése), PERT-módszer, kritikus tevékenységek===
==12. Mélységi keresés és alkalmazásai (pl. irányított kör létezésének eldöntése), PERT-módszer, kritikus tevékenységek==


====Jegyzetek, videók====
===Jegyzetek, videók===
* [http://www.youtube.com/watch?v=or9xlA3YYzo BFS, DFS videó]
* [http://www.youtube.com/watch?v=or9xlA3YYzo BFS, DFS videó]


====Definíciók====
===Definíciók===
* DFS-erdő: a gráf olyan feszítőerdője, amit a komponensek mélységi bejárásával hozunk létre.
* DFS-erdő: a gráf olyan feszítőerdője, amit a komponensek mélységi bejárásával hozunk létre.
* Előre-él: egy irányított gráf DFS-erdőjének létrehozásakor szisztematikusan, "emeletekbe" rendezzük a pontokat aszerint, hogy melyiket mikor látogattuk meg: ameddig "előre" haladunk a gráfban, lefelé bővítjük a fát, ha visszalépegettünk és egy korábban bejárt pontról indítjuk újra a bejárást, oda oldalágat rajzolunk és újfent lefelé bővítünk, amíg tudunk, stb. Az eredeti gráfnak azokat az éleit, amik nem kerültek a DFS-erdőbe, az előre-, a vissza-, és a kereszt-él csoportjába oszthatjuk. Az előre-élek a DFS-felbontásnak megfelelő élek irányába mutatnak.
* Előre-él: egy irányított gráf DFS-erdőjének létrehozásakor szisztematikusan, "emeletekbe" rendezzük a pontokat aszerint, hogy melyiket mikor látogattuk meg: ameddig "előre" haladunk a gráfban, lefelé bővítjük a fát, ha visszalépegettünk és egy korábban bejárt pontról indítjuk újra a bejárást, oda oldalágat rajzolunk és újfent lefelé bővítünk, amíg tudunk, stb. Az eredeti gráfnak azokat az éleit, amik nem kerültek a DFS-erdőbe, az előre-, a vissza-, és a kereszt-él csoportjába oszthatjuk. Az előre-élek a DFS-felbontásnak megfelelő élek irányába mutatnak.
343. sor: 342. sor:
* Alapkörrendszer: egy összefüggő gráf egy fájához ha hozzáveszünk még egy élt, akkor a keletkező gráfban egy kör lesz. Ha a fához minden lehetséges módon hozzáveszünk még egy élt, akkor a keletkező körök unióját a gráf adott fájához tartozó alapkörrendszerének nevezzük.
* Alapkörrendszer: egy összefüggő gráf egy fájához ha hozzáveszünk még egy élt, akkor a keletkező gráfban egy kör lesz. Ha a fához minden lehetséges módon hozzáveszünk még egy élt, akkor a keletkező körök unióját a gráf adott fájához tartozó alapkörrendszerének nevezzük.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Egy gráfban akkor és csak akkor van irányított kör, ha a mélységi bejárás során találunk vissza-élt.
* Egy gráfban akkor és csak akkor van irányított kör, ha a mélységi bejárás során találunk vissza-élt.
* Egy irányított gráfban akkor és csak akkor van irányított kör, ha ponthalmaza nem bontható emeletekre.
* Egy irányított gráfban akkor és csak akkor van irányított kör, ha ponthalmaza nem bontható emeletekre.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Mélységi keresés:  
* Mélységi keresés:  
## Kiválasztjuk a kiindulási pontot.
*# Kiválasztjuk a kiindulási pontot.
## Meglátogatjuk a legkisebb sorszámú olyan szomszédját, amit még nem látogattunk meg.
*# Meglátogatjuk a legkisebb sorszámú olyan szomszédját, amit még nem látogattunk meg.
## Az előbbi lépést ismételgetjük, amíg tudjuk.
*# Az előbbi lépést ismételgetjük, amíg tudjuk.
## Ha már nem tudunk tovább menni, visszalépünk egyet, és újra megpróbáljuk a 2. lépést, ha még mindig nem jutunk előre, visszamegyünk mégegyet, stb.
*# Ha már nem tudunk tovább menni, visszalépünk egyet, és újra megpróbáljuk a 2. lépést, ha még mindig nem jutunk előre, visszamegyünk mégegyet, stb.
## Ha a visszalépegetésekkel visszaérünk a kiindulási pontba, akkor a gráf minden pontját láttuk és végeztünk.
*# Ha a visszalépegetésekkel visszaérünk a kiindulási pontba, akkor a gráf minden pontját láttuk és végeztünk.
* Emeletekre bontás: egy irányított gráf olyan ábrázolási módja, hogy az élek csak az irányuknak megfelelően, a forrástól a nyelő felé mutatnak.
* Emeletekre bontás: egy irányított gráf olyan ábrázolási módja, hogy az élek csak az irányuknak megfelelően, a forrástól a nyelő felé mutatnak.
* PERT-módszer. Munkafolyamatok ütemezésére jó.
* PERT-módszer. Munkafolyamatok ütemezésére jó.
## Hozzávalók egy személyre:
*# Hozzávalók egy személyre:
*** egy élsúlyozott irányított gráf, amiben nincs irányított kör, viszont van benne egy forrás és egy nyelő,
*#* Egy élsúlyozott irányított gráf, amiben nincs irányított kör, viszont van benne egy forrás és egy nyelő,
*** sör, bacon, vidámság, szánsájn, szikla és zsömle,
*#* Sör, bacon, vidámság, szánsájn, szikla és zsömle,
*** számtud-tudás.
*#* Számtud-tudás.
## A gráfot emeletekre bontjuk. Egyrészt, mert poén, másrészt, mert áttekinthetőbbé teszi a munkát, harmadrészt, mert ezzel ellenőrizzük, hogy tényleg nincs-e benne irányított kör (ha van, nem tudjuk emeletekre bontani).
*# A gráfot emeletekre bontjuk. Egyrészt, mert poén, másrészt, mert áttekinthetőbbé teszi a munkát, harmadrészt, mert ezzel ellenőrizzük, hogy tényleg nincs-e benne irányított kör (ha van, nem tudjuk emeletekre bontani).
## A kritikus utat keressük, vagyis a leghosszabb utat. Ez nyilván úgy történik, hogy pontonként felírogatjuk, hogy oda honnan, összesen mennyi idő alatt tudunk jutni, és a nagyobbat választjuk.
*# A kritikus utat keressük, vagyis a leghosszabb utat. Ez nyilván úgy történik, hogy pontonként felírogatjuk, hogy oda honnan, összesen mennyi idő alatt tudunk jutni, és a nagyobbat választjuk.
## Ha megvan a kritikus út, akkor igazából végeztünk. A kritikus úton található munkafolyamatok azok, amikkel, ha késünk, akkor késleltetjük a gráf által reprezentált egész projekt elkészültét. Persze a kritikus úton kívül eső folyamatokkal sem várhatunk a végtelenségig, de azok esetében néhány időegységnyi tűrés van.
*# Ha megvan a kritikus út, akkor igazából végeztünk. A kritikus úton található munkafolyamatok azok, amikkel, ha késünk, akkor késleltetjük a gráf által reprezentált egész projekt elkészültét. Persze a kritikus úton kívül eső folyamatokkal sem várhatunk a végtelenségig, de azok esetében néhány időegységnyi tűrés van.


==13. Keresési, beszúrási és rendezési algoritmusok (beszúrásos, buborék, összefésülés, láda), alsó korlátok a lépésszámokra, gráfok tárolása==


===13. Keresési, beszúrási és rendezési algoritmusok (beszúrásos, buborék, összefésülés, láda), alsó korlátok a lépésszámokra, gráfok tárolása===
===Jegyzetek, videók===
 
* 2. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=nu4NEZeki7g Lineáris és Bináris keresés, Buborék-, Kiválasztásos-, Beszúrásos-, Összefésüléses-, és Gyorsrendezés]
====Jegyzetek, videók====
* 3. Tétel videó (2012/II tételsor) - magyar: [http://www.youtube.com/watch?v=-qRFTqfl9Cs Ládarendezés, Bináris keresőfa, Kupacrendezés]
* [http://www.youtube.com/watch?v=wNVCJj642n4 Lineáris és logaritmikus keresés videó]
* [http://www.youtube.com/watch?v=wNVCJj642n4 Lineáris és logaritmikus keresés videó]
* [http://www.youtube.com/watch?v=HmQR8Xy9DeM Szomszédsági tömb és mátrix videó (5.54-től)]
* [http://www.youtube.com/watch?v=HmQR8Xy9DeM Szomszédsági tömb és mátrix videó (5.54-től)]
375. sor: 375. sor:
* [http://www.youtube.com/watch?v=t8g-iYGHpEA Rendezőalgoritmusok összehasonlítása videó]
* [http://www.youtube.com/watch?v=t8g-iYGHpEA Rendezőalgoritmusok összehasonlítása videó]


====Definíciók====
===Definíciók===
* Lépésszám: ahány elemi műveletet igényel egy algoritmus végrehajtása. Hogy mit tekintünk elemi műveletnek, az alkalmazásfüggő.
* Lépésszám: ahány elemi műveletet igényel egy algoritmus végrehajtása. Hogy mit tekintünk elemi műveletnek, az alkalmazásfüggő.
* Illeszkedési mátrix: _n_ pontú, _e_ élű irányított gráf <math> n \times e </math> méretű illeszkedési mátrixának elemei
* Illeszkedési mátrix: _n_ pontú, _e_ élű irányított gráf <math> n \times e </math> méretű illeszkedési mátrixának elemei
387. sor: 387. sor:
* Szomszédossági tömb: a gráf csúcsainak a száma mellé egyszerűen felírjuk a szomszédos csúcsok számát.
* Szomszédossági tömb: a gráf csúcsainak a száma mellé egyszerűen felírjuk a szomszédos csúcsok számát.
* Láncolt szomszédossági lista
* Láncolt szomszédossági lista
## Felírjuk egy "szomszéd" listába a csúcsok ''szomszédainak'' a számát, tetszőleges sorrendben. (Egy pont többször is szerepelhet, ha jól csináltuk, akkor ebben a lépésben az élszám kétszerese darab számot írtunk fel.)
*# Felírjuk egy "szomszéd" listába a csúcsok ''szomszédainak'' a számát, tetszőleges sorrendben. (Egy pont többször is szerepelhet, ha jól csináltuk, akkor ebben a lépésben az élszám kétszerese darab számot írtunk fel.)
## Felírjuk egy másik, "kezdés" listának ''n.'' helyére, hogy a gráf ''n.'' csúcsának szomszédainak felsorolása a "szomszéd" listában hanyadik helyen kezdődik. (Nem feltétlenül kell, hogy a "szomszéd" listában egymás mellett legyenek, csak, hogy hol az első, azt írjuk most fel.)
*# Felírjuk egy másik, "kezdés" listának ''n.'' helyére, hogy a gráf ''n.'' csúcsának szomszédainak felsorolása a "szomszéd" listában hanyadik helyen kezdődik. (Nem feltétlenül kell, hogy a "szomszéd" listában egymás mellett legyenek, csak, hogy hol az első, azt írjuk most fel.)
## Felírjuk a harmadik, "folytat" lista ''n.'' helyére, hogy a "szomszéd" lista ''n.'' helyén álló sorszám után a "szomszéd" lista hanyadik helyére kell ugrani a következő szomszéd sorszámának kiolvasásához.  
*# Felírjuk a harmadik, "folytat" lista ''n.'' helyére, hogy a "szomszéd" lista ''n.'' helyén álló sorszám után a "szomszéd" lista hanyadik helyére kell ugrani a következő szomszéd sorszámának kiolvasásához.  


====Tételek és összefüggések====
===Tételek és összefüggések===


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Lineáris keresés: bármilyen rendezetlen tömbre működik, egyszerűen végigmegy a tömb elemein és mindegyiket komparálja a keresett elemmel. Ez a módszer olyan, mint bármi, ami szovjet. Egyszerű, mindig működik, nem lehet elrontani, cserébe lassú, nem éppen kifinomult, és kiröhögnek, ha használod. _n_ elemre általában kb. <math> n/2 </math> lépés alatt lefut.
* Lineáris keresés: bármilyen rendezetlen tömbre működik, egyszerűen végigmegy a tömb elemein és mindegyiket komparálja a keresett elemmel. Ez a módszer olyan, mint bármi, ami szovjet. Egyszerű, mindig működik, nem lehet elrontani, cserébe lassú, nem éppen kifinomult, és kiröhögnek, ha használod. _n_ elemre általában kb. <math> n/2 </math> lépés alatt lefut.
* Logaritmikus keresés: ez rendezett tömbre működik. Megnézi, hogy a keresett elem a tömb alsó, vagy felső felében van-e? Ha az alsóban, akkor a felső felét eldobja és megnézi, hogy az alsó fél alsó felében, vagy felső felében van-e? Satöbbi, amíg egy elem nem marad és azzal komparál. Előny: gyors, de nem működik mindig. _n_ elemre legrosszabb esetben is kb. <math> \log_2 n </math> lépés alatt lefut.
* Logaritmikus keresés: ez rendezett tömbre működik. Megnézi, hogy a keresett elem a tömb alsó, vagy felső felében van-e? Ha az alsóban, akkor a felső felét eldobja és megnézi, hogy az alsó fél alsó felében, vagy felső felében van-e? Satöbbi, amíg egy elem nem marad és azzal komparál. Előny: gyors, de nem működik mindig. _n_ elemre legrosszabb esetben is kb. <math> \log_2 n </math> lépés alatt lefut.
* Beszúrásos rendezés
* Beszúrásos rendezés
## Kiválasztjuk a tömb első elemét. Ez így egyedül egy rendezett tömböt alkot.
*# Kiválasztjuk a tömb első elemét. Ez így egyedül egy rendezett tömböt alkot.
## Hozzávesszük a másodikat. Ha a második kisebb, mint az első, kicseréljük, ha nagyobb, békén hagyjuk. Így már van egy 2-hosszú rendezett tömbünk.
*# Hozzávesszük a másodikat. Ha a második kisebb, mint az első, kicseréljük, ha nagyobb, békén hagyjuk. Így már van egy 2-hosszú rendezett tömbünk.
## Vesszük a harmadikat. Ha nagyobb, mint a második, hagyjuk, ha kisebb, megcseréljük, majd összehasonlítjuk az elsővel is.
*# Vesszük a harmadikat. Ha nagyobb, mint a második, hagyjuk, ha kisebb, megcseréljük, majd összehasonlítjuk az elsővel is.
## Satöbbi. Mindig vesszök a következő elemet és a már rendezett részben leengedjük odáig, amíg egy nálánál kisebbet nem találunk.
*# Satöbbi. Mindig vesszök a következő elemet és a már rendezett részben leengedjük odáig, amíg egy nálánál kisebbet nem találunk.
** Előny: kevesebb komparálást igényel, mint a buborék, illetve könnyűvé teszi egy új elem beszúrását bármikor. Átlagos lépésszám <math> ~n^2 </math>.
** Előny: kevesebb komparálást igényel, mint a buborék, illetve könnyűvé teszi egy új elem beszúrását bármikor. Átlagos lépésszám <math> ~n^2 </math>.
* Összefésüléses rendezés
* Összefésüléses rendezés
## Az összefésülési lépés, ami a kulcsa az egész dolognak, úgy néz ki, hogy fogunk egy _n_ hosszú és egy _m_ hosszú, rendezett tömböt, és berakosgatjuk az elemeiket egy <math>n+m</math> hosszú új tömbbe, úgy, hogy először összehasonlítjuk az első elemeiket, amelyik a kisebb, az megy előre, és ahonnan kivettük, lépünk egyet, újra komparálunk, stb., míg végül lesz egy <math> n+m </math> hosszú, rendezett tömbünk.
*# Az összefésülési lépés, ami a kulcsa az egész dolognak, úgy néz ki, hogy fogunk egy _n_ hosszú és egy _m_ hosszú, rendezett tömböt, és lerakosgatjuk az elemeiket egy <math>n+m</math> hosszú új tömbbe, úgy, hogy először összehasonlítjuk az első elemeiket, amelyik a kisebb, az megy előre, és ahonnan kivettük, lépünk egyet, újra komparálunk, stb., míg végül lesz egy <math> n+m </math> hosszú, rendezett tömbünk.
## A kezdeti, rendezetlen, _k_ hosszú tömbre ezután úgy tekintünk, mint _k_ darab, rendezett, 1 hosszú tömbökre.
*# A kezdeti, rendezetlen, _k_ hosszú tömbre ezután úgy tekintünk, mint _k_ darab, rendezett, 1 hosszú tömbökre.
## Ezeket összefésüljük <math> k/2 </math> darab, 2 hosszú tömbbé, majd azokat négyesekké, nyolcasokká, satöbbi, amíg meg nem kapjuk a _k_ hosszú rendezett tömböt.
*# Ezeket összefésüljük <math> k/2 </math> darab, 2 hosszú tömbbé, majd azokat négyesekké, nyolcasokká, satöbbi, amíg meg nem kapjuk a _k_ hosszú rendezett tömböt.
** Előny: gyors és egyszerű. Hátrány: minden egyes összefésülési lépés újabb területet zabál fel a memóriából. Átlagos lépésszám: <math> ~n\log n </math>.
** Előny: gyors és egyszerű. Hátrány: minden egyes összefésülési lépés újabb területet zabál fel a memóriából. Átlagos lépésszám: <math> ~n\log n </math>.
* Buborék-rendezés
* Buborék-rendezés
## Párosával összehasonlítgatjuk a két legkisebb indexű elemet, majd második és a harmadik legkisebb indexű elemet, satöbbi, szépen előre haladva a tömbben párosával komparálunk. Minden lépésben ha kell, kicseréljük a két elemet. Amikor a tömb végére értünk, a legutolsó elem a legnagyobb.
*# Párosával összehasonlítgatjuk a két legkisebb indexű elemet, majd második és a harmadik legkisebb indexű elemet, satöbbi, szépen előre haladva a tömbben párosával komparálunk. Minden lépésben ha kell, kicseréljük a két elemet. Amikor a tömb végére értünk, a legutolsó elem a legnagyobb.
## Ugyanazt megcsináljuk, mint az előbb, csak már nem kell elmennünk a tömb végéig, hiszen tudjuk, hogy az utolsó elem a legnagyobb.
*# Ugyanazt megcsináljuk, mint az előbb, csak már nem kell elmennünk a tömb végéig, hiszen tudjuk, hogy az utolsó elem a legnagyobb.
## Addig csinálgatjuk ezt, míg a hátulról növekvő hosszú rendezett szakasz a tömb elejéig nem ér.
*# Addig csinálgatjuk ezt, míg a hátulról növekvő hosszú rendezett szakasz a tömb elejéig nem ér.
** Egyszerű, de lassú, baromi sokat kell komparálni. Átlagos lépésszám: <math>~n^2</math>.
** Egyszerű, de lassú, baromi sokat kell komparálni. Átlagos lépésszám: <math>~n^2</math>.
* Láda-rendezés - csak akkor működik, ha tudjuk, hogy csak egész számok jöhetnek és azt is tudjuk, hogy milyen intervallumból
* Láda-rendezés - csak akkor működik, ha tudjuk, hogy csak egész számok jöhetnek és azt is tudjuk, hogy milyen intervallumból
## Hozzuk létre a ládákat. Hogy hányat, azt az intervallum és a várt elemszám dönti el. Például, ha 20 alatti mennyiségű 0 és 30 közti elemre számítok, akkor elég három láda a 0-9, 10-19, 20-30 közti számoknak, de ha mondjuk tudom, hogy ugyanebben az intervallumban 50 elemem lesz, akkor lehet, hogy 5-ösével pakolnám őket 6 ládába. Nyilván úgy célszerű, hogy egy ládába csak néhány elem jusson végül.
*# Hozzuk létre a ládákat. Hogy hányat, azt az intervallum és a várt elemszám dönti el. Például, ha 20 alatti mennyiségű 0 és 30 közti elemre számítok, akkor elég három láda a 0-9, 10-19, 20-30 közti számoknak, de ha mondjuk tudom, hogy ugyanebben az intervallumban 50 elemem lesz, akkor lehet, hogy 5-ösével pakolnám őket 6 ládába. Nyilván úgy célszerű, hogy egy ládába csak néhány elem jusson végül.
## Toszogassuk bele a létrehozott ládákba az elemeinket.
*# Toszogassuk bele a létrehozott ládákba az elemeinket.
## A ládákon belül rendezzük az elemeket valami kényelmes módon.
*# A ládákon belül rendezzük az elemeket valami kényelmes módon.
## Sorrendben szedjük ki a ládákból az elemeket.
*# Sorrendben szedjük ki a ládákból az elemeket.
** Gyors, de kényes módszer, nem olyan egyszerű leprogramozni. Cserébe jó gyorsan tud működni.
** Gyors, de kényes módszer, nem olyan egyszerű leprogramozni. Cserébe jó gyorsan tud működni.


==14. Problémák bonyolultsága, polinomiális visszavezetés, P, NP, co-NP bonyolultsági osztályok fogalma, feltételezett viszonyuk, NP-teljesség, nevezetes NP-teljes problémák==


===14. Problémák bonyolultsága, polinomiális visszavezetés, P, NP, co-NP bonyolultsági osztályok fogalma, feltételezett viszonyuk, NP-teljesség, nevezetes NP-teljes problémák===
===Jegyzetek, videók===
 
====Jegyzetek, videók====


====Definíciók====
===Definíciók===
* Eldöntési probléma: olyan probléma, aminek az inputja egy eldöntendő kérdés, a válasz pedig igen vagy nem.
* Eldöntési probléma: olyan probléma, aminek az inputja egy eldöntendő kérdés, a válasz pedig igen vagy nem.
* P-beli probléma: olyan probléma, mely az input méretének polinomiális függvényével felülről becsülhető időben megoldható.
* P-beli probléma: olyan probléma, mely az input méretének polinomiális függvényével felülről becsülhető időben megoldható.
433. sor: 432. sor:
* NP-teljes probléma: olyan NP-nehéz probléma, mely maga is NP-ben van.
* NP-teljes probléma: olyan NP-nehéz probléma, mely maga is NP-ben van.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Bonyolultsági osztályok feltételezett viszonya: van három halmaz: az NP, a co-NP és az NP-nehéz.
* Bonyolultsági osztályok feltételezett viszonya: van három halmaz: az NP, a co-NP és az NP-nehéz.
** Az NP és co-NP metszetében van P halmaz, de nem tudunk olyan problémáról, ami az NP és co-NP metszetében lenne, de ne lenne P-ben is. Sejtés: NP és co-NP metszete, valamint P ugyanaz.
** Az NP és co-NP metszetében van P halmaz, de nem tudunk olyan problémáról, ami az NP és co-NP metszetében lenne, de ne lenne P-ben is. Sejtés: NP és co-NP metszete, valamint P ugyanaz.
** Az NP és az NP-nehéz halmazok metszetében vannak az NP-teljes problémák.
** Az NP és az NP-nehéz halmazok metszetében vannak az NP-teljes problémák.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===15. Oszthatóság, legnagyobb közös osztó, legkisebb közös többszörös, prímek, felbonthatatlanok, a számelmélet alaptétele, osztók száma, euklideszi algoritmus, nevezetes tételek prímszámokról===
==15. Oszthatóság, legnagyobb közös osztó, legkisebb közös többszörös, prímek, felbonthatatlanok, a számelmélet alaptétele, osztók száma, euklideszi algoritmus, nevezetes tételek prímszámokról==


====Jegyzetek, videók====
===Jegyzetek, videók===
* [http://www.youtube.com/watch?v=_0x7uCiC0Uc Euklideszi algoritmus legnagyobb közös osztó keresésére videó]
* [http://www.youtube.com/watch?v=_0x7uCiC0Uc Euklideszi algoritmus legnagyobb közös osztó keresésére videó]
* [http://www.youtube.com/watch?v=4xANqGj7nnI Euklideszi algoritmus maradékos osztáshoz videó]  
* [http://www.youtube.com/watch?v=4xANqGj7nnI Euklideszi algoritmus maradékos osztáshoz videó]  


====Definíciók====
===Definíciók===
* Oszthatóság: _a_ osztja _b_-t, ha van olyan _q_ egész szám, amelyre <math> b=aq </math>. (_a_ és _b_ is egészek.)
* Oszthatóság: _a_ osztja _b_-t, ha van olyan _q_ egész szám, amelyre <math> b=aq </math>. (_a_ és _b_ is egészek.)
* Prímszám: nincsenek valódi osztóik.
* Prímszám: nincsenek valódi osztóik.
455. sor: 454. sor:
* Relatív prímek: lnko-juk 1.
* Relatív prímek: lnko-juk 1.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Számelmélet alaptétele: minden pozitív egész szám előáll az őt osztó prímszámok szorzataként.
* Számelmélet alaptétele: minden pozitív egész szám előáll az őt osztó prímszámok szorzataként.
* Osztók száma: <math> d(n) = \prod_{i=1}^{k} (\alpha_i + 1) </math>, ahol <math> \alpha_i </math> az ''i.'' prímtényező kitevője.
* Osztók száma: <math> d(n) = \prod_{i=1}^{k} (\alpha_i + 1) </math>, ahol <math> \alpha_i </math> az ''i.'' prímtényező kitevője.
461. sor: 460. sor:
* Relatív prím számok száma: egy _n_ számnál kisebb, hozzá relatív prímek száma: <math> n \prod_{i=1}^{k} \left( 1-\frac{1}{p_i} \right) </math>.
* Relatív prím számok száma: egy _n_ számnál kisebb, hozzá relatív prímek száma: <math> n \prod_{i=1}^{k} \left( 1-\frac{1}{p_i} \right) </math>.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Euklideszi algoritmus: polinomrendű algoritmus két szám (_a_ és _b_) legnagyobb közös osztójának meghatározására. Tegyük fel, hogy <math>a>b</math>, ekkor:
* Euklideszi algoritmus: polinomrendű algoritmus két szám (_a_ és _b_) legnagyobb közös osztójának meghatározására. Tegyük fel, hogy <math>a>b</math>, ekkor:
## Felírjuk a nagyobb számot, mint a kisebb számmal vett hányados és a kisebb szám sorzata, valamint az osztási maradék összegeként: <math> a = h_1 b + m_1 </math>.
*# Felírjuk a nagyobb számot, mint a kisebb számmal vett hányados és a kisebb szám sorzata, valamint az osztási maradék összegeként: <math> a = h_1 b + m_1 </math>.
## Az egészet "balra shifteljük": <math> b = h_2 m_1 + m_2 </math>, majd megint: <math> m_1 = h_3 m_2 + m_m </math>, és így tovább.
*# Az egészet "balra shifteljük": <math> b = h_2 m_1 + m_2 </math>, majd megint: <math> m_1 = h_3 m_2 + m_m </math>, és így tovább.
## Egészen addig, amíg az nem lesz, hogy <math> m_n = h_{n+2} m_{n+1} + 0 </math>. Ekkor <math> m_{n+1} </math> a lnko.
*# Egészen addig, amíg az nem lesz, hogy <math> m_n = h_{n+2} m_{n+1} + 0 </math>. Ekkor <math> m_{n+1} </math> a lnko.
 


===16. Kongruencia fogalma, teljes és redukált maradékrendszer, <math>\varphi</math>-függvény, Euler-Fermat-tétel, kis-Fermat-tétel, lineáris kongruenciák megoldása, Wilson-tétel===
==16. Kongruencia fogalma, teljes és redukált maradékrendszer, <math>\varphi</math>-függvény, Euler-Fermat-tétel, kis-Fermat-tétel, lineáris kongruenciák megoldása, Wilson-tétel==


====Jegyzetek, videók====
===Jegyzetek, videók===
* [http://www.youtube.com/watch?v=U9Eo6Bsvm4M Kongruenciák megoldása videó]
* [http://www.youtube.com/watch?v=U9Eo6Bsvm4M Kongruenciák megoldása videó]


====Definíciók====
===Definíciók===
* Kongruencia: _a_ kongruens _b_-vel az _m_ modulusra vonatkozólag, ha az _a_ és _b_ számok _m_-el osztva ugyanazt a maradékot adják.
* Kongruencia: _a_ kongruens _b_-vel az _m_ modulusra vonatkozólag, ha az _a_ és _b_ számok _m_-el osztva ugyanazt a maradékot adják.
* Maradékosztály: a kongruencia ekvivalenciareláció, amely osztályokba sorolja az egész számokat. Egy maradékosztályba tartoznak az _m_-el oszthatók, az _m_-el osztva 1 maradékot adók, stb.
* Maradékosztály: a kongruencia ekvivalenciareláció, amely osztályokba sorolja az egész számokat. Egy maradékosztályba tartoznak az _m_-el oszthatók, az _m_-el osztva 1 maradékot adók, stb.
479. sor: 477. sor:
* Redukált maradékrendszer: rögzített _m_ modulus mellett az _a_-val reprezentált maradékosztályt redukált maradékosztálynak nevezzük, ha _a_ és _m_ relatív prímek. Ha minden redukált maradékosztályt egy számmal reprezentálunk, akkor ezek redukált maradékrendszert alkotnak.
* Redukált maradékrendszer: rögzített _m_ modulus mellett az _a_-val reprezentált maradékosztályt redukált maradékosztálynak nevezzük, ha _a_ és _m_ relatív prímek. Ha minden redukált maradékosztályt egy számmal reprezentálunk, akkor ezek redukált maradékrendszert alkotnak.


====Tételek és összefüggések====
===Tételek és összefüggések===
* <math> a \equiv b (\text{mod } m) \Leftrightarrow m | a-b </math>.
* <math> a \equiv b (\text{mod } m) \Leftrightarrow m | a-b </math>.
* Euler-Fermat-tétel: ha _a_ és _m_ relatív prímek, valamint <math>m>1</math>, akkor <math> a^{\varphi(m)} \equiv 1 (\text{mod } m) </math>.
* Euler-Fermat-tétel: ha _a_ és _m_ relatív prímek, valamint <math>m>1</math>, akkor <math> a^{\varphi(m)} \equiv 1 (\text{mod } m) </math>.
485. sor: 483. sor:
* Wilson-tétel
* Wilson-tétel


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Lineáris kongruenciák megoldása
* Lineáris kongruenciák megoldása




===17. Félcsoportok, csoportok, példák, csoport rendje, elem rendje, szimmetrikus idomok egybevágósági transzformációinak csoportja, ciklikus csoport, az <math>S_n</math> szimmetrikus csoport===
==17. Félcsoportok, csoportok, példák, csoport rendje, elem rendje, szimmetrikus idomok egybevágósági transzformációinak csoportja, ciklikus csoport, az <math>S_n</math> szimmetrikus csoport==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* n változós művelet: egy <math> f : H^n \rightarrow H </math> mindenütt értelmezett függvény _n_ változós művelet a _H_ halmazon.
* n változós művelet: egy <math> f : H^n \rightarrow H </math> mindenütt értelmezett függvény _n_ változós művelet a _H_ halmazon.
* Kommutativitás: <math> a*b = b*a</math>.
* Kommutativitás: <math> a*b = b*a</math>.
511. sor: 509. sor:
* Elem rendje: az a legkisebb olyan _k_ szám, amelyre <math> a^k = 1 </math>. Ha nincs ilyen szám, akkor végtelen rendű a csoport.
* Elem rendje: az a legkisebb olyan _k_ szám, amelyre <math> a^k = 1 </math>. Ha nincs ilyen szám, akkor végtelen rendű a csoport.


====Tételek és összefüggések====
===Tételek és összefüggések===
* A hatványozás azonosságai: <math> a^{n+k} = a^n a^k </math> és <math> \left( a^n \right)^k = a^{nk} </math>.
* A hatványozás azonosságai: <math> a^{n+k} = a^n a^k </math> és <math> \left( a^n \right)^k = a^{nk} </math>.
* Azonos rendű ciklikus csoportok izomorfak.
* Azonos rendű ciklikus csoportok izomorfak.
* Ciklikus csoport részcsoportja is ciklikus.
* Ciklikus csoport részcsoportja is ciklikus.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===18. Részcsoport, mellékosztály, Lagrange tétele, elem és csoport rendjének kapcsolata, gyűrűk, nullosztó, példák, testek, példák===
==18. Részcsoport, mellékosztály, Lagrange tétele, elem és csoport rendjének kapcsolata, gyűrűk, nullosztó, példák, testek, példák==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* Részcsoport: _G_ csoport, ha _H_ valódi részhalmaza _G_-nek és _H_ is csoport _G_ műveletére, akkor _H_ egy részcsoportja _G_-nek.
* Részcsoport: _G_ csoport, ha _H_ valódi részhalmaza _G_-nek és _H_ is csoport _G_ műveletére, akkor _H_ egy részcsoportja _G_-nek.
* Triviális részcsoport: minden csoportnak részcsoportja az egész csoport és a csak az egységelemet tartalmazó egyelemű halmaz, ezek a triviális részcsoportok.
* Triviális részcsoport: minden csoportnak részcsoportja az egész csoport és a csak az egységelemet tartalmazó egyelemű halmaz, ezek a triviális részcsoportok.
547. sor: 545. sor:
* Intgrálási tartomány: kommutatív, nullosztómentes gyűrű.
* Intgrálási tartomány: kommutatív, nullosztómentes gyűrű.


====Tételek és összefüggések====
===Tételek és összefüggések===
* Lagrange-tétel: ha _G_ véges, _H_ részcsoportja _G_-nek, akkor _H_ rendje osztja _G_ rendjét.
* Lagrange-tétel: ha _G_ véges, _H_ részcsoportja _G_-nek, akkor _H_ rendje osztja _G_ rendjét.


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===




===19. Számelméleti algoritmusok, prímtesztelés, nyilvános kulcsú titkosítás, bizonyítás információközlés nélkül===
==19. Számelméleti algoritmusok, prímtesztelés, nyilvános kulcsú titkosítás, bizonyítás információközlés nélkül==


====Jegyzetek, videók====
===Jegyzetek, videók===


====Definíciók====
===Definíciók===
* Áruló: Fermat-prímtesztben, ha el akarjuk dönteni, hogy egy _n_ prím-e vagy sem, akkor ellenőrizzük, hogy egy _n_-hez relatív prím _t_-re igaz-e, hogy <math> t^{n-1} \equiv 1 (\text{mod } n) </math> (kis-Fermat-tétel). Ha ez nem igaz, akkor tudjuk, hogy _n_ nem prím, és _t_ volt az árulója.  
* Áruló: Fermat-prímtesztben, ha el akarjuk dönteni, hogy egy _n_ prím-e vagy sem, akkor ellenőrizzük, hogy egy _n_-hez relatív prím _t_-re igaz-e, hogy <math> t^{n-1} \equiv 1 (\text{mod } n) </math> (kis-Fermat-tétel). Ha ez nem igaz, akkor tudjuk, hogy _n_ nem prím, és _t_ volt az árulója.  
* Cinkos: Ha az előző pontban a kis-Fermat tétel igaz lett volna, holott _n_ összetett lett volna, akkor _t_ a cinkosa lett volna. Ekkor azt mondjuk, hogy _n_ a _t_ alapra álprím.
* Cinkos: Ha az előző pontban a kis-Fermat tétel igaz lett volna, holott _n_ összetett lett volna, akkor _t_ a cinkosa lett volna. Ekkor azt mondjuk, hogy _n_ a _t_ alapra álprím.
565. sor: 563. sor:
* Dekódoló függvény: a kulcspár titkos része. A kódoló és dekódoló függvény egymás inverzei.
* Dekódoló függvény: a kulcspár titkos része. A kódoló és dekódoló függvény egymás inverzei.


====Tételek és összefüggések====
===Tételek és összefüggések===


====Algoritmusok, eljárások és egyebek====
===Algoritmusok, eljárások és egyebek===
* Eratoszthenész "szita-algoritmusa": írjuk fel a számokat 1-től _n_-ig, majd húzzuk ki közülük a 2-vel oszthatókat, kivéve a 2-t, majd a maradékból a 3-mal oszthatókat, kivéve a 3-at, satöbbi, így előbb-utóbb elő tudunk állítani bármilyen nagy prímeket.
* Eratoszthenész "szita-algoritmusa": írjuk fel a számokat 1-től _n_-ig, majd húzzuk ki közülük a 2-vel oszthatókat, kivéve a 2-t, majd a maradékból a 3-mal oszthatókat, kivéve a 3-at, satöbbi, így előbb-utóbb elő tudunk állítani bármilyen nagy prímeket.




 
[[Kategória:Villamosmérnök]]
 
[[Kategória:Villanyalap]]