38. A gráfalgoritmusok alkalmazása
|
|
- Piroska Emma Mészáros
- 9 évvel ezelőtt
- Látták:
Átírás
1 38. A gráfalgoritmusok alkalmazása Állapotok és átmenetek A gráf adattípus nagyon sokféle feladat megoldásánál alkalmazható. Rejtvények, játékok, közlekedési és szállítási problémák, stratégiai feladatok vizsgálhatók gráfokkal. A képfelismerés, szövegkritika, nyelvészeti analízis területén szintén bevethetô a gráfelmélet. A gráfokat felhasználja az egymástól látszólag távol esô közgazdaságtan, pszichológia, szociológia, esztétika, biológia stb. A legtöbb esetben a gráf felépítése is a program feladata. A feladatban elôforduló lehetséges eseteket a feladat állapotainak tekintjük. A sakk egy állapota például a bábuk egy elhelyezkedése a táblán. Az állapotokat átmenetek kötik össze, melyek jelzik, hogy egy-egy állapotból egy lépésben mely más állapotokba juthatunk. A sakkjáték egy állapotában minden lehetséges lépés egy-egy átmenetet jelent egy másik állapotba. A feladat megoldásakor keressük a kezdôállapotból a kívánt végállapotba vezetô átmenetek sorozatát. A gráfok alkalmazásához az egyes állapotokat egy gráf csúcsainak feleltetjük meg. A gráf élei az átmeneteket jelzik. Útkeresési algoritmusokkal döntjük el, hogyan lehet a kezdôállapotból a végállapotba eljutni. Kupák Tekintsük a következô, közismert feladatot: Egy 8 literes kupa tele van borral. Hogyan tölthetjük szét két egyenlô részre, ha ehhez egy 5 literes és egy 3 literes kupa áll még a rendelkezésünkre? Az öntögetések során egy kupa vagy teljesen tele lesz, vagy pedig teljesen kiürül. A feladatot némileg általánosítva oldjuk meg. A Térfogat tömb tartalmazza a kupák térfogatát, a Kezd tömb a kezdeti bormennyiséget, a Vég tömb a végsô bormennyiséget az egyes kupákban. A fenti feladat szerint: Térfogat(1) = 8 Térfogat(2) = 5 Térfogat(3) = 3 Kezd(1) = 8 Kezd(2) = 0 Kezd(3) = 0 Vég(1) = 4 Vég(2) = 4 Vég(3) = 0 Az állapotok tárolása A feladat kezdô- és végállapota Feladatunknak látszólag semmi köze a gráfokhoz. A gráf kialakításához elôször határozzuk meg, milyen állapotokkal jellemezhetjük az elôforduló eseteket! Az öntögetés egy állapotát a kupákban lévô bor mennyisége jellemzi. Egy lehetséges állapotot és a hozzá tartozó átmeneteket például az alábbi ábrán szemléltetjük. Az állapotokat struktúrával írjuk le, amely egy háromelemû tömböt tartalmaz, a kupákban lévô bor mennyiségének megfelelôen: 254
2 38. A gráfalgoritmusok alkalmazása Lehetséges átmenetek egy meghatározott állapotból kiindulva Az öntögetéseket a nyilak jelölik (honnan hová). Struktúra TÁllapot VÁLTOZÓ Kupa(3) MINT Egész az egyes kupákban lévô bormennyiség STRUKTÚRA VÉGE Vegyük észre, hogy egy állapotot elegendô lenne két mennyiséggel jellemezni. Ha ismerjük az 5 és a 3 literes kupákban lévô bor térfogatát, akkor egyértelmûen meghatározhatjuk a 8 literes kupában lévô mennyiséget. Csupán az áttekinthetôbb kód kedvéért tároljuk mindhárom értéket. Ez nem jelent túl nagy memóriafelhasználást. Az egyes kupákban 0-tól a kancsó térfogatáig változhat a bor mennyisége. Ezért a gráf csúcsainak száma: Gráf.CsúcsSzám = (Térfogat(2) + 1)*(Térfogat(3) + 1) Az állapotokat egy TÁllapot típusú tömbben tároljuk: VÁLTOZÓ Állapot(Gráf.CsúcsSzám) MINT TÁllapot Megtehettük volna, hogy struktúra helyett kétdimenziós tömböt használunk, melynek elsô dimenziója az állapot, második dimenziója pedig a kupa sorszámát indexeli. A struktúra alkalmazása azonban könnyebben olvasható forráskódot eredményez. 1. gyakorlat. A Kupa forrásfájlban található kód alapján kövessük nyomon a feladat megoldását! Figyeljük meg, hogy a mondatszerû leírás utasításait hol kell kiegészíteni vagy felbontani további utasításokra a tanult programozási nyelv sajátosságai miatt. Elemezzük ezeket az eltéréseket, vizsgáljuk meg az eltérések okát! A Visual Basic nem engedi meg a struktúra definíciójában szereplô tömb méretének megadását. Ezért a Kupa tömböket külön ciklussal kell dimenzionálni. Ennek módját az 1. gyakorlat megoldásában mutatjuk be. Megjegyezzük, hogy az Állapot tömb lehetett volna a TGráf struktúra tagja is, hiszen a gráf csúcsainak tulajdonságát (a hozzájuk tartozó állapotot) tartalmazza. Nem akartuk azonban módosítani az elôzôleg kialakított gráftípus definícióját. 255
3 Az állapottömb feltöltése A kupákban lévô bormennyiség és az állapotok sorszáma (tehát a gráf csúcsainak sorszáma) között függvénnyel teremtünk kapcsolatot. A függvénynek tulajdonképpen egy kétdimenziós tömb (a 2. és 3. kupában lévô bor mennyisége) elemeihez kell sorszámot rendelnie. Ezt például sorfolytonos számozással érhetjük el: Sorszámok hozzárendelése az állapotokhoz a 3 és 5 literes kupában lévô bor mennyisége alapján Az öntögetések kódolása FÜGGVÉNY TérfogatbólCsúcs(Bor2, Bor3 MINT Egész) MINT Egész Bor2 liter bor van a 2., Bor3 liter bor van a 3. kupában TérfogatbólCsúcs = (Térfogat(3) + 1) * Bor2 + Bor3 + 1 FÜGGVÉNY VÉGE Egyetlen képlet miatt általában nem érdemes függvény készíteni. Itt ismét a forráskódot tesszük áttekinthetôbbé. Ezek után az összes lehetséges módon fel kell írni az elôforduló állapotokat, és hozzárendelni az Állapot tömb elemeihez: CIKLUS Bor2 = 0-tól Térfogat(2)-ig CIKLUS Bor3 = 0-tól Térfogat(3)-ig Csúcs = TérfogatbólCsúcs(Bor2, Bor3) Állapot(Csúcs).Kupa(1) = ÖsszesBor Bor2 Bor3 Állapot(Csúcs).Kupa(2) = Bor2 Állapot(Csúcs).Kupa(3) = Bor3 ahol: ÖsszesBor = Kezd(1) + Kezd(2) +Kezd(3) A gráf élei a bor öntését jelzik az egyik kupából a másikba. Egy átöntés eredményét az ÉlVége függvénnyel írjuk le. A függvényt akkor fogjuk felhasználni, amikor értéket adunk a csúcsmátrix elemeinek. A függvény argumentumként megadjuk a kiindulási állapot/csúcs sorszámát (ÉlKezdete), és azt, hogy melyik kupából (Melyikbôl) öntünk bort melyik másik kupába (Melyikbe). A függvény meghatározza az öntés utáni állapot sorszámát, tehát annak a csúcsnak a sorszámát, ahová befut az állapotváltozást leíró él: FÜGGVÉNY ÉlVége(Élkezdete, Melyikbôl, Melyikbe MINT Egész) MINT Egész FÜGGVÉNY VÉGE Az alábbi utasításokban a Kupa tömbök az Állapot(Élkezdete) struktúra tagjai. Az áttekinthetôség kedvéért a pont elôl lehagyjuk az Állapot(Élkezdete) tömbelemmel való minôsítést. (Ezt az egyszerûsítést minôsítôblokk alkalmazásával a forráskódban is megtehetjük.) Az átöntésnél két eset fordulhat elô. 1. A Melyikbôl kupában lévô bor belefér a Melyikbe kupába, azaz:.kupa(melyikbôl) < Térfogat(Melyikbe).Kupa(Melyikbe) Ekkor a teljes mennyiséget átöntjük, így a Melyikbôl kupa kiürül. Az öntés utáni bormennyiségek:.kupa(melyikbe) =.Kupa(Melyikbe) +.Kupa(Melyikbôl).Kupa(Melyikbôl) = 0 256
4 38. A gráfalgoritmusok alkalmazása Öntés az egyik edénybôl a másikba 2. Ha a Melyikbôl kupában lévô bor nem fér bele teljes egészében a Melyikbe kupába, akkor átöntünk annyit, hogy ez utóbbi tele legyen. Ami nem fér bele, az marad a Melyikbôl kupában. Ekkor az öntés utáni bormennyiségek:.kupa(melyikbôl) =.Kupa(Melyikbôl) (Térfogat(Melyikbe).Kupa(Melyikbe).Kupa(Melyikbe) = Térfogat(Melyikbe) Az ÉlVége függvény visszatérési értékét, azaz a gráf ezen élének végpontját a TérfogatbólCsúcs függvénnyel határozzuk meg: ÉlVége = TérfogatbólCsúcs(.Kupa(2),.Kupa(3)) Ügyeljünk arra, hogy az Élvége függvény Élkezdete paraméterét feltétlenül érték szerint adjuk át, különben megváltoztatjuk az Élkezdete csúcshoz tartozó állapotot! 2. gyakorlat. A Kupa forrásfájlban található kód alapján tekintsük át az ÉlVége függvény definícióját! Bár a Visual Basic-ben a struktúrák érték típusú adatszerkezetek, a struktúra tömb tagjai már hivatkozás típusúak. Így a struktúra érték szerinti paraméterátadásánál is az eredeti tömbre hivatkozik a változó, tehát módosítani tudja az elemeit. Ezért a Kupa forráskódjában bevezettünk egy ideiglenes változót (Temp), melynek átadjuk a Kupa tömb elemeit. Ezzel elkerüljük az eredeti állapot módosítását. A csúcsmátrix feltöltése A csúcsmátrix az állapotok között lehetséges átmeneteket tartalmazza. A gráf egyik csúcsából akkor vezet él egy másik csúcsba, ha egyetlen öntéssel eljuthatunk az egyik csúcsnak megfelelô állapotból a másik csúcsnak megfelelô állapotba. A csúcsmátrix elkészítéséhez sorra vesszük az egyes állapotokat. Minden egyes állapotnál elvégezzük a lehetséges öntögetéseket. A csúcsmátrixban feljegyezzük, hogy egy-egy öntés során melyik állapotba, azaz melyik csúcsba jutottunk el. 257
5 Minden állapot esetén hatféle öntés képzelhetô el. Bármely nem üres kupából önthetünk bort bármely másik kupába. (Tele kupába 0 litert öntünk át.) Az öntések utáni állapotot az ÉlVége függvény adja meg. Így a csúcsmátrix feltöltésének algoritmusa: Gráf.Szomszédpont() = Hamis az összes elemre CIKLUS Csúcs1 = 1-tôl Gráf.CsúcsSzám-ig CIKLUS Melyikbôl = 1-tôl 3-ig ebbôl a kupából öntünk CIKLUS Melyikbe = 1-tôl 3-ig ebbe a kupába öntjük HA Melyikbôl Melyikbe ÉS Állapot(Csúcs1).Kupa(Melyikbôl) > 0 AKKOR Csúcs2 = ÉlVége(Csúcs1, Melyikbôl, Melyikbe) Gráf.Szomszéd(Csúcs1, Csúcs2) = Igaz ELÁGAZÁS VÉGE 3. gyakorlat. Egészítsük ki a Kupa forrásfájl programját a csúcsmátrix kiírásával! A feladat megoldása Miután elkészítettük a feladatnak megfelelô adatszerkezetet, a megoldást már nagyon könnyen megkaphatjuk. Nem kell mást tennünk, mint az útkeresés algoritmusát lefuttatni a kezdôállapot és a végállapot között. Az útkeresés algoritmusán semmit nem módosítunk. A szélességi bejárásra alapozott útkeresés mindjárt a legegyszerûbb (legkevesebb öntögetéssel járó) átmenetet határozza meg. Vegyük észre, hogy egy ügyesen megválasztott adatszerkezet nagyon egyszerûvé teszi a feladat megoldását! 4. gyakorlat. Egészítsük ki a Kupa forrásfájl programját a szélességi útkeresés algoritmusával! Futtassuk a programot, és határozzuk meg a feladat megoldását! Feladatok Az 1 6. feladatok a leckében bemutatott kupás feladatra vonatkoznak. 1. A megoldás kiírásánál az érintett csúcsok/állapotok sorszáma helyett jelenítsük meg a kupákban lévô bormennyiséget! Módosítsuk a kiírást úgy, hogy az útkeresésnél kapott fordított sorrend helyett a kezdôállapotból induljon a felsorolás! 2. Bôvítsük a feladat megoldásának megjelenítését! Jelöljük meg, hogy az egyes lépésekben melyik kupából melyik kupába kell bort önteni! 3. A csúcsmátrix kiírásával vizsgáljuk meg, hogy mely állapotokba nem lehet egyáltalán eljutni az adott kupatérfogatok felhasználásával! 4. Ábrázoljuk síkbeli koordináta-rendszerben az egyes állapotokat! Tekintsük x koordinátának az 5 literes, y koordinátának a 3 literes kupában lévô bor mennyiségét! Hol helyezkednek el azok a pontok, melyek nem elérhetô állapotokat jelölnek? 5. Oldjuk meg a kupás feladatot, ha 12, 7 és 4 literes kupák állnak a rendelkezésünkre! Kezdetben a 12 literes kupa tele van, és meg kell felezni a bormennyiséget. Módosítsuk a programot úgy, hogy ezeket az adatokat a felhasználótól kérje be! 258
29. Visszalépéses keresés 1.
29. Visszalépéses keresés 1. A visszalépéses keresés algoritmusa Az eddig megismert algoritmusok bizonyos értelemben nyílegyenesen haladtak elôre. Tudtuk, hogy merre kell mennünk, és minden egyes lépéssel
Adatszerkezetek II. 1. előadás
Adatszerkezetek II. 1. előadás Gráfok A gráf fogalma: Gráf(P,E): P pontok (csúcsok) és E P P élek halmaza Fogalmak: Irányított gráf : (p 1,p 2 ) E-ből nem következik, hogy (p 2,p 1 ) E Irányítatlan gráf
Adatszerkezetek II. 2. előadás
Adatszerkezetek II. 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra
10. gyakorlat Struktúrák, uniók, típusdefiníciók
10. gyakorlat Struktúrák, uniók, típusdefiníciók Házi - (f0218) Olvass be 5 darab maximum 99 karakter hosszú szót úgy, hogy mindegyiknek pontosan annyi helyet foglalsz, amennyi kell! A sztringeket írasd
1. Jelölje meg az összes igaz állítást a következők közül!
1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.
Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor
Gráfok 1. Tárolási módok, bejárások előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok Szélességi
Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.
Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás
Struktúra nélküli adatszerkezetek
Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A
Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
Programozás I. zárthelyi dolgozat
Programozás I. zárthelyi dolgozat 2013. november 11. 2-es szint: Laptopot szeretnénk vásárolni, ezért írunk egy programot, amelynek megadjuk a lehetséges laptopok adatait. A laptopok árát, memória méretét
Egyszerű programozási tételek
Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.
Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor
Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2
Algoritmuselmélet 7. előadás
Algoritmuselmélet 7. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 11. ALGORITMUSELMÉLET 7. ELŐADÁS 1 Múltkori
22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
Adatszerkezetek 1. Dr. Iványi Péter
Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk
Amortizációs költségelemzés
Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük
Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17
Gráfok 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra bejárása nem
KOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA, MATEmATIkA I. 1 I. HALmAZOk 1. JELÖLÉSEk A halmaz fogalmát tulajdonságait gyakran használjuk a matematikában. A halmazt nem definiáljuk, ezt alapfogalomnak tekintjük. Ez nem szokatlan, hiszen
Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris
30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK
30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá
8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Adatbázis és szoftverfejlesztés elmélet. Programozási tételek
Adatbázis és szoftverfejlesztés elmélet Témakör 8. 1. Egy sorozathoz egy érték hozzárendelése Az összegzés tétele Összefoglalás Programozási tételek Adott egy számsorozat. Számoljuk és írassuk ki az elemek
Tájékoztató. Használható segédeszköz: -
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosító száma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
Web-programozó Web-programozó
Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai
A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási
5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E
5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus
Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)
Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
Szimulációs technikák
SZÉCHENYI ISTVÁN EGYETEM Műszaki Tudományi Kar Informatikai tanszék Szimulációs technikák ( NGB_IN040_1) 2. csapat Comparator - Dokumentáció Mérnök informatikus BSc szak, nappali tagozat 2012/2013 II.
Modellezés Gregorics Tibor Mesterséges intelligencia
Modellezés 1. Állapottér-reprezentáció Állapottér: a probléma leírásához szükséges adatok által felvett érték-együttesek (azaz állapotok) halmaza az állapot többnyire egy összetett szerkezetű érték gyakran
Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?
Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii
5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás
Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.
Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Bevezetés az informatikába
Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.
Rendezések 8. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. október 24. Sergyán (OE NIK) AAO 08 2011. október 24. 1 / 1 Felhasznált irodalom
INFORMATIKAI ALAPISMERETEK
ÉRETTSÉGI VIZSGA 2005. május 20. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÉRETTSÉGI VIZSGA Az írásbeli vizsga időtartama: 180 perc JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI MINISZTÉRIUM Megoldási útmutató I.
A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMTIK II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a dolgozatokat
Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Tájékoztató. Használható segédeszköz: -
A 12/2013. (III. 29.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu
Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember
A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:
A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.
(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.
Testmodellezés Testmodellezés (Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja. A tervezés (modellezés) során megadjuk a objektum geometria
11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.
11. gyakorlat Sturktúrák használata I. Új típus új műveletekkel 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. typedef struct datum { int ev; int ho; int nap;
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat
Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás
Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott
Adatszerkezetek II. 10. előadás
Adatszerkezetek II. 10. előadás Kombinatorikai algoritmusok A kombinatorika: egy véges halmaz elemeinek valamilyen szabály alapján történő csoportosításával, kiválasztásával, sorrendbe rakásával foglalkozik
C programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
5. Gyakorlat. struct diak {
Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 0621 ÉRETTSÉGI VIZSGA 2007. május 25. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM
Programozás I gyakorlat
Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Dicsőségtabló Beadós programozási feladatok
Dicsőségtabló Beadós programozási feladatok Hallgatói munkák 2017 2018 Szavak kiírása ábécé felett Készítő: Maurer Márton (GI, nappali, 2017) Elméleti háttér Adott véges Ʃ ábécé felett megszámlálhatóan
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján.
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez
Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28
A programozás alapjai 1 Rekurzió
A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder
Fizika feladatok. 1. Feladatok a termodinamika tárgyköréből november 28. Hővezetés, hőterjedés sugárzással. Ideális gázok állapotegyenlete
Fizika feladatok 2014. november 28. 1. Feladatok a termodinamika tárgyköréből Hővezetés, hőterjedés sugárzással 1.1. Feladat: (HN 19A-23) Határozzuk meg egy 20 cm hosszú, 4 cm átmérőjű hengeres vörösréz
V. Kétszemélyes játékok
Teljes információjú, véges, zéró összegű kétszemélyes játékok V. Kétszemélyes játékok Két játékos lép felváltva adott szabályok szerint. Mindkét játékos ismeri a maga és az ellenfele összes választási
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A
van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk
függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2 Emlékeztető a függvények lényegében mini-programok,
Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?
Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf
Programozási nyelvek 1. előadás
Programozási nyelvek 1. előadás I. A nyelv története Logo Seymour Papert, 1968,1969 - szövegkezelés, M.I.T. Később: grafika, mikroszámítógépekre átdolgozva Cél: minél kisebb gyerekeknek is, természetes
A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - szeptember Informatika írásbeli A versenyzők figyelmébe: 1. Minden tömböt 1-től kezdődően indexelünk. 2. A rácstesztekre (A rész)
Java programozási nyelv
Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék
Programozás I. - 11. gyakorlat
Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar
Véletlen sorozatok ellenőrzésének módszerei. dolgozat
Eötvös Loránd Tudományegyetem Informatikai Kar Komputeralgebra Tanszék Véletlen sorozatok ellenőrzésének módszerei dolgozat Témavezető: Dr. Iványi Antal Miklós egyetemi tanár Készítette: Potempski Dániel
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
1.1.1 Dátum és idő függvények
1.1.1 Dátum és idő függvények Azt már tudjuk, hogy két dátum különbsége az eltelt napok számát adja meg, köszönhetően a dátum tárolási módjának az Excel-ben. Azt is tudjuk a korábbiakból, hogy a MA() függvény
Termék modell. Definíció:
Definíció: Termék modell Összetett, többfunkciós, integrált modell (számítógépes reprezentáció) amely leír egy műszaki objektumot annak különböző életfázis szakaszaiban: tervezés, gyártás, szerelés, szervízelés,
Algoritmusok és adatszerkezetek I. 1. előadás
Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási
Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs
Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 4. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.
A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása. II. (programozás) kategória
Oktatási Hivatal A 20/2011 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása II. (programozás) kategória Kérjük a tisztelt kollégákat, hogy az egységes értékelés érdekében
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás Programozási nyelv felépítése szabályok megadása Lexika Milyen egységek építik fel? Szintaktikus szabályok
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 0721 ÉRETTSÉGI VIZSGA 2007. október 24. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM
Bevezető feldatok. Elágazás és összegzés tétele
Bevezető feldatok 1. Szövegértés és algoritmikus gondolkodás Kátai Zoltán https://people.inf.elte.hu/szlavi/infodidact15/manuscripts/kz.pdf Elágazás és összegzés tétele Táblázatkezelési feladatok Feladatok
Az egyszerűsítés utáni alak:
1. gyszerűsítse a következő törtet, ahol b 6. 2 b 36 b 6 Az egyszerűsítés utáni alak: 2. A 2, 4 és 5 számjegyek mindegyikének felhasználásával elkészítjük az összes, különböző számjegyekből álló háromjegyű
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
Az informatika kulcsfogalmai
Az informatika kulcsfogalmai Kulcsfogalmak Melyek azok a fogalmak, amelyek nagyon sok más fogalommal kapcsolatba hozhatók? Melyek azok a fogalmak, amelyek más-más környezetben újra és újra megjelennek?
7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
BACKTRACKING Visszalépéses keresés
BACKTRACKING Visszalépéses keresés I. rész A wiki.prog.hu weboldal az alábbi leírással vezeti fel a visszalépéses keresés algoritmus bemutatását: A visszalépéses keresés (Backtracking) olyan esetekben
A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.
Javító és majdnem javító utak
Javító és majdnem javító utak deficites Hall-tétel alapján elméletileg meghatározhatjuk, hogy egy G = (, ; E) páros gráfban mekkora a legnagyobb párosítás mérete. Ehhez azonban első ránézésre az összes
7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet
7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát
Java és web programozás
Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:
A gráffogalom fejlődése
A gráffogalom fejlődése ELTE Informatikai Kar, Doktori Iskola, Budapest Batthyány Lajos Gimnázium, Nagykanizsa erdosne@blg.hu a prezentáció kézirata elérhető: http://people.inf.elte.hu/szlavi/infodidact16/manuscripts/ena.pdf
Kiegészítő előadás. Vizsgabemutató VBA. Dr. Kallós Gábor, Fehérvári Arnold, Pusztai Pál Krankovits Melinda. Széchenyi István Egyetem
Kiegészítő előadás Vizsgabemutató VBA Dr. Kallós Gábor, Fehérvári Arnold, Pusztai Pál Krankovits Melinda 2016 2017 1 VBA A Szamokat_General szubrutin segítségével generáljunk 1000 db egész számot a [0,
Rekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK
Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK Sorozat fogalma Definíció: Számsorozaton olyan függvényt értünk, amelynek értelmezési tartománya a pozitív egész
Visszalépéses keresés
Visszalépéses keresés Backtracking előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Alapvető működése Továbbfejlesztési