GYAKORI RÉSZGRÁFOK KERESÉSE HÁLÓZATOKON

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "GYAKORI RÉSZGRÁFOK KERESÉSE HÁLÓZATOKON"

Átírás

1 EÖTVÖS LORÁND TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR GYAKORI RÉSZGRÁFOK KERESÉSE HÁLÓZATOKON SZAKDOLGOZAT Kovács Ténia Alexandra Matematika BSc Matematikai elemző szakirány Témavezető: Dr. Kósa Balázs Információs Rendszerek Tanszék Budapest 2015

2 Tartalomjegyzék 1. Bevezetés Hálózatok Gyakori elemhalmazok Fogalma Apriori algoritmus ECLAT algoritmus Gyakori részgráfok Alapfogalmak TreeMiner algoritmus Alapfogalmak Jelölt előállítás A Treeminer algoritmus menete AGM algoritmus Alapfogalmak Jelölt előállítás Az AGM algoritmus menete Összegzés 37 Irodalomjegyzék 37 2

3 1. fejezet Bevezetés A szakdolgozatom célja, bemutatni azon algoritmusokat, melyek alkalmasak az irányított, a véletlen és a skálafüggetlen hálózatok gyakori részgráfjainak megkeresésére. A továbbiakban szó lesz a hálózatok nevezetes tulajdonságairól, illetve a gyakori elemhalmazok fogalmáról. Továbbá részletesen tárgyalni fogom az apriori elven alapuló AGMés a treeminer- algoritmust Hálózatok "A hálózatok mindenütt jelen vannak." [1]- írja Barabási László, a Behálózva című könyvében. Valóban, a hálózatok felfedezhetőek az élet minden területén, amelyeket tipikusan gráfokként reprezentálunk, ahol a csomópontok a modellezni kívánt esetek, az élek pedig valamely közös tulajdonságot, vagy kapcsolatot jelölnek a két csúcs között. Ilyenre lehet példa az emberi kapcsolati rendszer, amelyet szociális hálónak is szokás nevezni, ahol az embereket a csúcsok, a közöttük lévő kapcsolatokat, pedig az élek jelölik. Vagy a biológiában a neurális hálózatok, ahol a neuronok helyezkednek el a gráf csomópontjaiban, míg a szinapszisokat az élek reprezentálják. De a számítástechnikában is nagy számban fordulnak elő, mint az internet felépítésében, ahol a számítógépek és router-ek a csúcsok és a kábeles, vagy wifi-s adatátviteli kommunikációk pedig a gráf élei. Ugyanígy modellezhető a Word Wide Web is, ahol a web oldalakat linkekkel kötjük össze. Ezen hálózatok sok érdekes tulajdonsággal rendelkeznek, melyekből kettőt emelnék ki, a kisvilág tulajdonságot és a hálózatok fokszámainak hatványeloszlását. Az előbbire talán a legjobb példa, a web átmérőjének vizsgálata. Tegyük fel azt a kérdést, hogy egy barátunk blogjáról, átlagosan hány kattintással juthatunk el, egy Fokvárosban élő biológus honlapjára. A kérdés megválaszolásához, érdemes megemlítenem Stanley Milgram nevét, aki 1967-ben azt vizsgálta, hogy átlagosan hány ismeretségi távolságra van egymástól, két véletlenszerűen kiválasztott amerikai állampolgár. A kísérlet eredménye átlagosan 5,5 lett. Már Milgram előtt is elterjedt volt az az elmélet miszerint bármely két ember az egész világon átlagosan hat lépésnyi távolságra van egymástól, de ez az egész emberiségre vonatkozott, amely felveti azt a sejtést hogy a távolság, nem függ a vizsgált hálózat 3

4 nagyságától. Ezen a gondolatmeneten elindulva Barabási és csapata elkezdte kutatni a világháló átmérőjét és arra jutottak, hogy a távolság arányos a hálózatban lévő csomópontok számának logaritmusával [1]. Így egy 1998-as mérés szerint a web átmérője 19 kattintás volt. Ami lényegében azt jelenti, hogy egy tetszőleges weboldalról 19 kattintással eljuthattunk, bármelyik másikba 17 évvel ezelőtt. A másik érdekes tulajdonsága a hálózatoknak, különösen a skálafüggetlen hálózatoknak, hogy a csúcsok fokszámainak eloszlása, hatványfüggvényt követ. Ez azt jelenti, hogy csak kevés csúcs rendelkezik nagy számú élekkel, amelyekkel a többi csúcshoz kapcsolódnak, míg a kevés fokszámmal rendelkező csúcsok vannak többségben a hálózaton. Ez a jelenség megfigyelhető a szociális hálókban, a légiforgalmi rendszerekben, illetve az interneten is. Mind a három esetben vannak olyan csomópontok, amelyek nagyságrendekkel több éllel rendelkeznek, mint a társaik. Ezen csúcsokat középpontoknak nevezzük és a hatványfüggvény farkánál helyezkednek el ábra. Példa egy hálózat fokszámainak hatványeloszlására [1] 1.2. Gyakori elemhalmazok A gyakori elemhalmazok kutatási területe, akkor vált érdekessé, amikor a vásárlói szokásokat modellezték, a nagyobb profit érdekében. Rájöttek, hogy az együtt vásárolt termékekből levont következtetések, nagyobb nyereséget tudnak termelni az áruházaknak, így lett a gyakori elemhalmazok keresése és meghatározása az adatbányászat egy új kutatási területe, ahol ennek megoldása végett számtalan algoritmus látott napvilágot. Ezekből az Apriori és az Eclat algoritmust mutatom be nagy vonalakban, mert ez a két legfontosabb és leggyakrabban használt algoritmus, továbbá az ott szereplő ötletek a gyakori részgráf keresésnél is szerepelni fognak Fogalma Legyen I = {i 1, i 2,..., i m } az elemek halmaza, továbbá T = {t 1, t 2,..., t n } a tranzakciók halmaza, amely az I hatványhalmaza felett értelmezett, bemeneti sorozat, azaz t i I. Másképp I a termékek, T pedig a tranzakciók, vagy a vásárlói kosarak halmaza. 4

5 Azt mondjuk, hogy az A I elemhalmaz fedése megegyezik, azon tranzakciókkal, amelyeknek A részhalmaza. Ekkor a fedésének elemszáma, adja meg az A halmaz támogatottságát, amelyet supp(a)-val jelölünk. Például, ha egy termék több vásárlói kosárban is szerepel, akkor annak a terméknek a támogatottsága megegyezik ezen kosarak számával. A feladat az, hogy meghatározzuk az összes olyan elemhalmazt, amely gyakori. Egy elemhalmazt, akkor nevezünk gyakorinak, ha annak támogatottsága elér egy előre definiált támogatottsági küszöböt, amelyet min supp -pal szokás jelölni. Előfordul, hogy nem a minimális támogatottságot, hanem egy gyakorisági küszöböt adnak meg. Ekkor a gyakoriságot az elemhalmaz támogatottságának és a tranzakciók elemszámának hányadosa adja meg. Formálisan freq(a) = supp(a) és ennek az értéknek kell nagyobbnak lennie, T mint az előre meghatározott gyakorisági küszöb. Ahhoz hogy meghatározzuk a gyakori elemhalmazokat, át kell vizsgálunk az összes tranzakciót és elemhalmazt, így célszerű nagy gondot fektetni ezen kosarak tárolásának módjára az adatbázisokban. Erre a tárolásra háromféle lehetőség adott. Horizontális, mikor is a tranzakciók sorszámához hozzárendeljük a bennük lévő elemeket. Vertikális, ahol minden elemhez hozzárendeljük, hogy mely tranzakciókban szerepelnek, illetve relációs tábla, ahol a tranzakciók sorszámához, külön felsoroljuk azon elemeket, amelyeket tartalmaznak. Például legyen T = {(XY ), (XY Z), (Y ), (Y Z)} a tranzakciók halmaza. Az 1.2 ábrán látható, mind a három adattárolási formához példák ábra. Adattárolási típusok A tranzakciók ábrázolására két módszert alkalmazhatunk. A bináris mátrixot, ahol a sorok a tranzakciókat, az oszlopok az elemeket jelölik, így az i-dik sor j-edik eleme 1, ha az i-dik tranzakció tartalmazza a j-edik elemet, különben 0. A másik ábrázolási mód a gráfban való reprezentálás. Ekkor legyen G = (A, B, E) irányítatlan páros gráf, ahol A a tranzakciók, B az elemek, E pedig az élek halmaza. Ha a A és b B, akkor a és b között csak akkor megy él, ha az a tranzakció tartalmazza a b elemet. Fentebb említettem, hogy az elemhalmazok támogatottságának meghatározásához végig kell nézni az összes tranzakciót. Ez a művelet kevés elemre jól működik, mert elfér 5

6 a memóriában, de nagyobb számú elemhalmazok esetében exponenciálisan nagy méretek ölthet az I hatványhalmazainak száma. Ahhoz, hogy megvizsgáljuk hogy egy elemhalmaz szerepel-e a tranzakciók sorozatán, az összes tranzakciót és az elemek halmazán értelmezett hatványhalmazokat is végig kell olvasnunk. Azért, hogy ez hatékonyan működjön definiálnunk kell egy lehetőleg teljes rendezést az I elemein és így a tranzakciókat és az I hatványhalmazait ezen rendezés szerint tároljuk. Ez után következhet a gyakori részhalmazok keresése, amelyre az úgynevezett GYEK (gyakori elemhalmazokat kinyerő) algoritmusok vannak a segítségünkre. Az Apriori és az Eclat algoritmus alapját az alábbi három lépés iterációja adja. jelölteket állítanak elő meghatározzák ezen jelöltek támogatottságát kiválogatják a gyakoriakat a jelöltek közül Mind a kettő az üres mintából kiindulva állítja elő a jelölteket, ahol a jelöltek azon elemhalmazok, amelyekről a támogatottság meghatározása után el szeretnénk dönteni, hogy gyakoriak-e vagy sem. Egy algoritmus akkor teljes, ha minden gyakori elemhalmazt megtalál és helyes, ha csak a gyakoriakat találja meg. [2] Azt mondjuk, hogy a jelölt-előállítás ismétlés nélküli, ha nem állítja elő ugyanazt a jelöltet többféleképpen. Az Apriori és az Eclat algoritmus ismétlés nélkül állítja elő a jelölteket, amelyet az elemek és a tranzakciók felett értelmezett rendezéssel tudunk garantálni Apriori algoritmus Az Apriori algoritmus az üres halmazból kiindulva, szélességi bejárás szerint határozza meg a gyakori elemhalmazokat, azaz minden szinten eggyel nagyobb méretű elemhalmazokkal foglalkozik. Az algoritmus alapját a jelöltek definiálásánál használt állítás adja, miszerint: 1.1. Állítás. Gyakori elemhalmaz minden részhalmaza gyakori. Ugyanígy értelmes ennek megfordítása is, hogy ha egy elemhalmaznak van ritka részhalmaza, akkor az biztosan nem gyakori. Ennek alapján ne legyen jelölt az az elemhalmaz, amelynek van ritka részhalmaza. A fenti állítás az anti-monoton tulajdonságból következik Definíció. Legyen (H, ) egy részben rendezett halmaz. A p : H {igaz, hamis} predikátum anti-monoton, amennyiben tetszőleges x H elem esetén, ha p(x) = igaz, akkor p(y) is igazat ad y x elemre. A jelöltek előállítása során az l elemű jelölteket a bemeneti sorozat l-edik átolvasása előtt állítja elő, azaz a priori, ahonnan a nevét is kapta az algoritmus. 6

7 Jelöltek előállítása Legyen GY l olyan halmaz, amely csak az l méretű gyakori elemhalmazokat tartalmazza, ekkor az algoritmus a GY l -ből (l + 1) méretű jelölteket állít elő a következő képpen. I 1 és I 2 párokat keres, amelyek elemei a GY l -nek. Ezek lesznek az úgynevezett generátorok. Ha igaz rájuk, hogy: I 1 lexikografikusan megelőzi I 2 -t I 1 -ből a legnagyobb elem törlésével ugyanazt az elemhalmazt kapjuk, mintha I 2 legnagyobb elemét töröltük volna akkor vesszük I 1 és I 2 unióját, majd megvizsgáljuk, hogy a kapott elemhalmaz minden részhalmaza gyakori-e. Ehhez persze elég csak azt ellenőriznünk, hogy az összes (l + 1) darab l-elemű prefixe gyakori-e, hisz az 1.1 állításból következik, hogy azok minden részhalmaza is gyakori, mivel abból indultunk ki, hogy ők gyakori elemhalmazok. Ha minden részhalmaza gyakori volt, akkor az I 1 I 2 jelölt lesz. Ahol egy sorozat l-elemű prefixén a sorozat első l eleméből képzett részsorozatát értjük [2]. Támogatottság meghatározása Miután előállította az összes jelöltet az iterációban következik a jelöltek támogatottságának meghatározása. Amennyiben 1 vagy 2 elemű jelöltekről van szó egyszerű dolgunk van. 1 eleműeknél elég egy lista vagy tömb, ahol az index jelöli az elemet, az indexnél lévő számláló pedig a támogatottságot. Így a tranzakciók egyszeri átolvasásával, csak a megfelelő elemekhez tartozó számlálót kell növelni eggyel, amennyiben tartalmazza a kosár az adott elemet. Ezután kiválogatjuk, azokat melyek gyakoriak a többit pedig eldobjuk, majd új sorszámot adunk a gyakoriaknak, így jutunk el a 2 elemű jelöltekhez. Ekkor ha n db elemet találtunk gyakorinak, akkor létrehozunk a kételemű jelöltek számára egy (n 1) (n 1)-es tömböt vagy mátrixot, mivel az indexelést nullával kezdjük. Tegyük fel, hogy i < j, ekkor az i és j elemekből álló pár támogatottságát a tömb vagy mátrix i-dik sorának (j i)-dik oszlopában találjuk. Abban az esetben, ha kettőnél több elemszámú jelölteket vizsgálunk két mutatóra van szükségünk. Az egyik mutató a kosár elemein a másik a jelölt elemein fut végig. Kezdetben mind a két mutatót az első elemekre állítjuk, azaz a rendezés szerinti növekvő sorrend legkisebb elemeire. Ha azok megegyeznek, akkor továbbléptetjük mind a kettőt. Ellenkező esetben, ha a tranzakcióban található elem, amelyre mutatunk a rendezés szerint kisebb, mint a jelöltünk, akkor csak a kosár mutatóját léptetjük, különben megállunk, mert biztosan nem tartalmazza a kosár a jelöltünket. Ha a jelölt utolsó eleme megegyezik a tranzakció valamely elemével, akkor az tartalmazz a jelöltet. Ez a módszer sajnos nagy elemszámú jelölteknél és tranzakcióknál igen lassú, ezért hogy az algoritmus futási ideje gyorsabb legyen, szokás a jelölteket szófába, vagy hash-fában tárolni. Az algoritmus Összefoglalva az algoritmusnak szüksége van a bemeneti tranzakciók sorozatára és egy minimális támogatottsági küszöbre, hogy a gyakori elemhalmazokat megtudjuk határozni. 7

8 Ezután az üres halmazból kiindulva meghatározza a támogatottságokat, majd azokból kiválogatja a gyakoriakat és eggyel nagyobb elemszámú jelölteket állít elő a gyakoriakból. Az algoritmus pszeudokódja a következő, ahol GY l az l elemű gyakori elemhalmazokat jelöli, bemenetként pedig meg kell adni a T tranzakciók halmazát, illetve a min supp -ot, azaz a minimális támogatottsági küszöböt: Apriori algoritmus - pszeudokód l := 0 J l := { } while J l 0 do támogatottság _ meghatározása(t,j l ) GY l :=gyakoriak_ kiválogatása(j l, min supp ) J l+1 =jelölt_ előállítás(gy l ) l := l + 1 end while ECLAT algoritmus Az Eclat algoritmus hasonlóan az Apriori algoritmushoz, az üres halmazból kiindulva állítja elő a jelölteket, ellenben egy rekurzív mélységi bejárással halad az elemhalmazokon szemben az Apriori algoritmussal. Továbbá amint előállított egy jelöltet azonnal meg is határozza annak a támogatottságát. Tehát az (l + 1) elemű, P prefixű jelölteket, ahol P = l 1 az l-elemű, P prefixű gyakori elemhalmazokból állítja elő, páronkénti unióképzéssel [2]. Az algoritmus erejét az úgynevezett TID (Transaction IDentifier) halmazok adják. Egy elemhalmaz TID-halmazának elemei azon tranzakciók sorszámai, amelyek tartalmazzák a vizsgált elemhalmazt. Az általánosság megsértése nélkül feltesszük, hogy a számozást nullától kezdjük és hogy egy tranzakció azonosítója megegyezik a bemeneti sorozatban elfoglalt helyével. Például legyen T = {XY, XY Z, X, Y Z}, ekkor az I = {Y Z} elemhalmaz TID-halmaza {1, 3}. A TID-halmazoknak két fontos tulajdonságuk van. Az I elemhalmaz TID-halmazának mérete megadja az I támogatottságát. Egy jelölt TID-halmazát megkaphatjuk a generátorainak TID-halmazából egy egyszerű unióképzéssel [2]. Tehát az algoritmus első lépésben meghatározza az elemek támogatottságát, majd kiválogatja a gyakoriakat. Ekkor látható, hogy az első iterációs lépés során előállított jelöltek megegyeznek az Apriori első lépésben előállított jelöltjeivel, azaz GY = GY 1. Ezután megadja a gyakori elemek TID-halmazait és csak ezek segítségével keresi a nagyobb méretű gyakori elemhalmazokat. Általánosan egy iteráció a következőképpen zajlik. Legyen GY P, a P prefixű, P + 1 méretű gyakori elemhalmaz család. Továbbá adott a 8

9 min supp. Jelölje gy a GY P egy rögzített elemét. Ekkor minden olyan gy GY P elemmel veszi az unióját gy -nek, melyre igaz, hogy gy gy az elemhalmazokon definiált rendezés szerint. Ezek lesznek a jelöltek, majd meghatározza a TID-halmazaikat, melyből könnyen kiolvasható ezen jelöltek támogatottsága. Ezután kiválogatja belőlük a gyakoriakat, melyeket hozzáad a GY gy halmazhoz. Ezután sorra veszi a GY P többi elemét is, amelyekből szintén kap egy egy gyakori elemhalmazt, majd veszi ezek unióját, amely megadja a GY P +1 -et. Például legyen T = {(XY ), (XY Z), (Y ), (Y Z)} és min supp = 2. Ekkor GY = {X, Y, Z}, a TID-halmazaik pedig rendre {0, 1}{0, 1, 2, 3}{1, 3}. Ezután vesszük az X többi elemmel képzett unióját, azaz {XY, XZ} melyeknek TID-halmazai {0, 1}{1}, ahol látható, hogy a Z-vel képzett uniója nem gyakori és mivel több részhalmazt nem tudunk előállítani ezen az ágon, így XY biztosan gyakori és következhet az Y Z, mert csak őt előzi meg a rendezésben elfoglalt helyével, melynek TID-halmaza {1, 3}, azaz mérete kettő, tehát ő is gyakori. Az általános lépés pszeudokódja - Eclat_segéd Input: P : prefix halmaz GY P : P prefixű, P -nél eggyel nagyobb méretű gyakori elemhalmazokból alkotott halmazcsalád min supp for all gy GY P do for all gy GY P, gy gy do j := gy gy j.t ID := gy.t ID gy.t ID if j.t ID min supp then GY gy := GY gy j end if end for if GY gy 2 then GY := GY GY gy Eclat_segéd(gy, GY gy, min supp ) else GY := GY GY gy end if end for return GY [2] Az algoritmus a jelölt-előállítások során nem ellenőrzi, hogy az unióképzéssel kapott halmaznak minden részhalmaza gyakori-e, szemben az Apriorival, bár erre nem is lenne lehetősége a mélységi bejárás miatt [2], mivel egyből meghatározza az elemhalmaz támogatottságát és tovább is megy az eggyel nagyobb méretűekre, továbbá a TID-halmazokból már nem tud erre következtetni, mert a bemeneti sorozatot már nem használja. Ebből kifolyólag legalább annyi jelöltet állít elő az Eclat, mint az Apriori, így több lesz a ritka jelöltje is. 9

10 Mindennek ellenére a nagy előnye az Apriorival szemben, hogy a jelöltek TID halmazainak előállítása egy rendkívül egyszerű és gyors folyamat, mivel minél nagyobb elemszámú jelöltet állít elő, úgy csökken a TID-halmazok mérete és így nagyon gyorsan megtudja adni azok támogatottságát, szemben az Apriorival, ahol minél nagyobb számú a jelöltek elemhalmazának mérete, úgy lassul az algoritmus futási ideje a támogatottságok meghatározásánál. Összefoglalva az algoritmus először meghatározza a jelölteket, majd azok TID-halmazait, melyből adott azok támogatottsága, ezután pedig kiválogatja közülük a gyakoriakat. Ezt a rekurziós eljárást addig ismételgeti, amíg be nem járja az egész teret és nem talál több gyakori elemhalmazt. 10

11 2. fejezet Gyakori részgráfok A gyakori részgráfok keresése, számos környezetben előforduló feladat. Ilyen terület például a webes szokások elemzése, a bioinformatika, illetve a félig strukturált és XML struktúrájú adatok vizsgálata. Mivel ezeket a hálózati rendszereket gráfokként tudjuk csak reprezentálni, azon belül is a legtöbb esetben irányított gráfokként, így a feladata következőkben gyakori mintázatok, vagy -részgráfok keresésére az adathalmazon Alapfogalmak 2.1. Definíció. Legyen G = (V, E) irányított gráf, ahol V { } és E V V, ahol V a csúcsok E pedig az élek halmaza. A G gráf irányítatlan, ha x, y V : (x, y) E (y, x) E Definíció. A G = (V, E, L, l) gráfot címkézett gráfnak nevezzük, ahol V a csúcsok, E V V élek, L pedig a címkék halmaza és l : V E L olyan függvény, amely megadja a csúcsok vagy élek címkéjét. [5] 2.3. Definíció. Sétának nevezzük a szomszédos csúcsok és élek egy váltakozó sorozatát. Ha a séta kezdő és végpontja nem egyezik meg és önmagát nem metsző akkor útnak, ha a kezdő és végpont megegyezik akkor pedig körnek nevezzük Definíció. Legyen G irányított gráf és x, y, z V, akkor ha út x-ből z-be, amely áthalad az y csúcson, azt mondjuk hogy y őse z-nek és z leszármazottja y-nak. Jelölésben y l z, ahol l az y-ból z-be vezető út hossza. Ha l = 1, akkor azt mondjuk hogy y szülője z-nek és fordítva z gyereke y-nak. Amennyiben két csúcsnak megegyezik a szülője, úgy őket testvéreknek definiáljuk Definíció. A G = (V, E ) gráf a G = (V, E) gráf részgráfja, ha V V, E E. A továbbiakban jelölje ezt G G Definíció. A G = (V, E) és a G = (V, E ) gráfok izomorfak, ha van olyan egy-egy értelmű megfeleltetés - bijekció - V és V között, hogy G-ben pontosan akkor szomszédos két pont, ha G -ben a nekik megfelelő pontok szomszédosak és szomszédos pontpárok esetén ugyanannyi él fut közöttük [3]. 11

12 2.7. Definíció. Legyen G = (V, E, L, l) egy címkézett irányított gráf és f : V (G) V (G ) egy bijektív függvény, akkor G izomorf G -vel ha: u V (G), l G (u) = l G (f(u)) és (u, v) E(G), (f(u), f(v)) E(G ) és l G (u, v) = l G (f(u), f(v)). [5] A gráfok izomorfiájának eldöntése nehéz feladat, mivel egy n csúcsú gráf esetében n! bijekció lehetséges. A feladat bizonyítottan NP-teljes [8]. A gráf izomorfia problémájából született a gráfok kanonikus kódolásának problémája [2] ábra. Példa kanonikus kódra: Definíció. A gráfok kanonikus kódolása (vagy kanonikus címkézése) egy olyan kódolás, amely az izomorf gráfokhoz és csak azokhoz azonos kódsorozatot rendel [2]. Megjegyzés: Egy gráfnak több kanonikus kódolása is lehet. Például ha a gyermekek sorrendje minden fában egyértelmű a címkéjük alapján, akkor az egy kanonikus kód. A továbbiakban a 2.1 példában ismertetett kódolást alkalmazzuk. Példa 2.1 A 2.1 ábrán látható példában mélységi bejárást alkalmazva, rendre feljegyezzük a látott csúcsok címkéjét és amennyiben nem tudunk tovább haladni, úgy a visszalépést a kódban -1-gyel jelöljük, így feltéve hogy nincs olyan csúcs a gráfban, amely ilyen címkével rendelkezne. A kódnak akkor van vége, ha visszaléptünk a kiindulási csúcsba Definíció. Azt mondjuk, hogy G előfordul G -ben, ha olyan G részgráfja G -nek, ahol G és G izomorfak. Legyen G = {G 1, G 2,..., G k } a bemeneti gráfok halmaza, továbbá G részgráfja G i - nek (i k). Ekkor jelölje δ Gi (G ) azon részgráfok számát G i -ben, melyek izomorfak G -vel. Ha δ Gi > 0 d Gi (G ) = 1 ha δ Gi = 0 d Gi (G ) = 0. 12

13 Így a σ(g ) = G i G d G i (G ) a G támogatottságával egyenlő, magyarán azon G i -k száma, melyek tartalmazzák G -t a G bemeneti halmazon. Szokás még súlyozott támogatottságot is számítani, ekkor σ w (G ) = G i G δ G i (G ), amely megadja G összes előfordulásainak számát G-n. Amennyiben ha egy a gyakori elemhalmazok keresésénél használt minimális támogatottsági küszöböt megadunk és a G részgráf támogatottsága nem kisebb mint ez a min supp, úgy azt mondjuk, hogy G gyakori részgráf a G halmazban. 13

14 3. fejezet TreeMiner algoritmus A Treeminer algoritmus, melyet Zaki publikált [4] a gyakori részfák keresésére alkotta. Az algoritmus irányítatlan, csúcs-címkézett, gyökeres és rendezett fákban keresi a gyakori részfákat, de egy kis módosítással az algoritmus általánosítható a címkézetlen gráfokban és erdőkben való keresésre is Alapfogalmak A fa definíció szerint egy összefüggő, körmentes gráf. Jelölje ezt T = (V, E), ahol V a csúcsok, E pedig az élek halmaza. Így egy n csúcsú fa esetén, a fa mérete T = n. A nem összefüggő, de körmentes gráfok összességét erdőnek nevezzük. Gyökeres egy fa, ha egy csúcsot a többitől kitüntetettként kezelünk, ez lesz a gyökér csúcs. Rendezettnek mondunk egy gyökeres fát, ha minden csúcsára teljesül, hogy a gyerekeik között adott egy rendezés. Ez a rendezés kiterjeszthető egy teljes rendezéssé a gráf pontjai között. A továbbiakban jelölje n i egy csúcs pozícióját/helyét annak függvényében, hogy a fát a gyökér csúcsból kiindulva, mint 0. lépésből mélységi bejárás szerint végiglátogatva, a csúcsot az i-dik lépésben fedeztük fel, ahol i = 0, 1,..., T 1. Legyen L = {0, 1,..., m 1} a címkék halmaza és l : V L olyan függvény mely megadja az n i csúcs címkéjét, azaz l(n i ) = y L. Jelölje a T fa egy élét az e = (n x, n y ) E, ami a továbbiakban egy rendezett pár, ahol n x szülője n y -nak. A fák egyszerűbb és helytakarékosabb tárolása végett, a Példa 2.1-ben bemutatott kanonikus kódolással reprezentáljuk. Ha elhagyjuk a kódból a -1-eket, akkor a T fa címke listáját (label sequence) kapjuk, jelölje ezt l(t ). Erre mutat példát a 3.1-es ábra. 14

15 3.1. ábra. Példa a kódos tárolásra, a címke listára (label sequence), valamint a csúcsok pozíciójára 3.1. Definíció. Azt mondjuk, hogy S = (V S, E S ) egy beágyazott részfa (embedded subtree) a T = (V, E) fában, jelölje ezt S T, ha i) V S V ii) e = (n x, n y ) E S akkor és csak akkor, ha n x l n y a T fában, azaz akkor tartalmaz egy élt S, ha n x leszármazottja az n y. Ha S T, akkor azt mondjuk, hogy T tartalmazza S-t. Egy részfa méretét jelölje k, ekkor őt k-részfának (k-subtree) nevezzük. Látható, hogy a fenti definíció némileg eltér az 2.9-es részgráfokra kimondott általános definíciótól, mert nem csak a szülő-gyerek éleket tartalmazhatja egy részfa, mint a részgráfoknál, hanem az ős-leszármazott éleket is [4]. Erre mutat példát a 3.2-es ábra, ahol a T fának részfái az a),b) és c) jelű fák. Jelölje T a fák halmazát és legyen S T, ahol T T. Ekkor S egy előfordulását T -ben az úgynevezett illeszkedési címkével (match label) kaphatjuk meg. Azaz legyen {t 1, t 2,..., t n } a T csúcsainak halmaza, {s 1, s 2,..., s m } az S csúcsainak halmaza, ahol T = n és S = m. Ekkor S illeszkedési címkéje {t i1, t i2,..., t im } akkor és csak akkor, ha i) l(s k ) = l(t ik ), k = 1,..., m ii) e = (s j, s k ) E S ha t ij őse t ik -nak T -ben. Megjegyzés: S összes csúcsának címkéje illeszkedik T -re. Valamint a csúcsok illeszkedésének topológiája T -ben és S-ben is megegyezik [4]. S előfordulásainak száma T -ben, azonos az 2.9-ben definiált támogatottsággal, illetve a 15

16 3.2. ábra. Példa egy fa lehetséges részfáira súlyozott támogatottság definíciójával. Ugyanígy érvényes a min supp támogatottsági küszöb is a gyakori részfák meghatározásához. A továbbiakban jelölje a k méretű gyakori részfák halmazát F k. Ahhoz, hogy könnyebben megtudjuk számolni a gyakori részfákat, szükséges definiálnunk az érvényességi tartomány (scope) fogalmát Definíció. Legyen T (n l ) egy n l gyökerű részfa és az n r csúcs, a T (n l ) fa legjobboldalibb levele, azaz a legnagyobb pozícióban lévő csúcs a részfában. Ekkor [l, r] intervallumot az n l csúcs érvényességi tartományának nevezzük, ahol l az intervallum alsó, r pedig a felső korlátja. Példa 3.1 A 3.3 ábrán látható egy T T fa, valamint annak két részfája S 1 és S 2. A már bevezetett n i csúcsjelölések mellett, az ehhez tartozó érvényességi tartomány, valamint a kanonikus kódjuk alatt, a címke listájuk is fel van tüntetve. Az illeszkedési címkék halmaza T azon pozícióit tartalmazza, melyekre illeszkedik a részfa címke listája. Látszik, hogy mindkét részfa támogatottsága 1, valamint a súlyozott támogatottság az S 1 részfa esetében 3, mivel kétféleképpen is illeszkedik a címke listája a T fa címke listájára Jelölt előállítás A Treeminer algoritmus az Apriori GYEK algoritmushoz hasonlóan a jelöltek előállításához az anti-monoton tulajdonságot használja fel. Azaz egy mintázat gyakorisága kisebb vagy egyenlő mint annak részmintáinak gyakorisága. Így hasonlóan a fentebb bemutatott GYEK algoritmusokhoz a (k + 1)-részfa jelölteket a gyakori k-részfákból állítja elő. Ekvivalencia osztály 16

17 3.3. ábra. Példa fa részfáira és a csúcsok érvényességi tartományára Azt mondjuk, hogy két k-részfa X, Y ugyanabban a prefix ekvivalencia osztályban van, akkor és csak akkor, ha a (k 1)-dik csúcsig a prefixük megegyezik. Formálisan legyen X, Y a két fa kanonikus kódja és p(x, i) olyan függvény, amely megadja X prefixszét az i-dik csúcsig. Ekkor X és Y ugyanabban a prefix osztályban van akkor és csak akkor, ha p(x, k 1) = p(y, k 1). Azaz a két részfa prefixsze legfeljebb az utolsó csúcsban térhet el egymástól [4]. Legyen P egy k 1 méretű részfa prefixsze és jelölje ezt az osztályt [P ] k 1. Jelölje (x, i) pár azt, hogy az x címkéjű csúcs, az i-dik pozícióban lévő csúcshoz csatlakozik a P prefixben.ekkor ha (x, i) eleme ennek az osztálynak, akkor az (x, i) [P ] jelölést használjuk. Amennyiben egy új prefixszű részfát alkotunk, úgy hogy (x, i) elemet hozzáadjuk a P -hez, úgy azt P x -szel jelöljük. Példa 3.2 A 3.4 ábrán látható, hogy az 5 pontú részfák közül, melyek azok amik a 4 hosszú prefixszükben egyeznek meg, tehát ugyanabban az osztályban vannak. Látszik, hogy az (x, 2) nem ilyen, mivel csak az utolsó (k 2) prefixszében egyezik meg az eredetivel, így a lehetséges jelöltek, amelyek egy prefix ekvivalencia osztályban vannak, csak a 0, 1, 3 17

18 3.4. ábra. Prefix ekvivalencia osztály pozíciókban csatlakozhatnak a részfához Lemma. Legyen P egy részfa prefix osztálya és n r a legjobboldalibb levél csúcs P - ben, amelynek az érvényességi tartománya [r, r]. Legyen (x, i) [P ]. Ekkor azon csúcsok pozíciói, melyek az x címkéjű csúcshoz csatlakozhatnak a P -ben az [i, r] érvényességi tartományba esnek, ahol n i az i-dik csúcs a P -ben és a hozzátartozó érvényességi tartomány az [i, r]. Azaz egy új csúcs, csak a legjobboldalibb csúcshoz csatlakozhat a prefixben, amely pozíciója az [i, r] érvényességi tartományba esik. Az (x, i) párokon definiálunk egy rendezést, miszerint először az x címkék, majd az i pozíciók szerint rendezzük őket. Az (x, i) < (y, j) akkor és csak akkor, ha x < y vagy x = y és i < j, akkor ez egy teljes rendezés a [P ] k 1 osztályban. Az osztályok kiterjesztése 3.4. Definíció. Legyen P egy prefix osztály, melynek kanonikus kódját jelölje P és (x, i), (y, j) ennek az osztálynak két eleme. Jelölje P x azt az osztályt, amely tartalmazza az (x, i) elemet. Definiáljuk az összekapcsolás (join) operátort a két elem között, azaz a (x, i) (y, j) művelet a következőket eredményezi, ha: i = j ha P, akkor adjuk hozzá (y, j) és (y, j + 1) elemet a [P x ] osztályhoz. ha P =, akkor adjuk hozzá (y, j) elemet a [P x ] osztályhoz. i > j: adjuk hozzá (y, j) elemet a [P x ] osztályhoz. i < j: nem tudunk jelöltet előállítani Tétel. Legyen [P ] k 1 egy prefix osztály teljes rendezés szerint rendezett elemekkel, azaz (x, i) < (y, j) akkor és csak akkor, ha x < y vagy x = y és i < j. Ekkor az osztályok kiterjesztésének módszere [P ] k osztályú, csúcsaiban rendezett jelölteket generál. 18

19 3.6. Tétel. Az osztályok kiterjesztésének módszere, az összes lehetséges részfa jelöltet előállítja helyesen és legfeljebb egyszer. Példa 3.3 A 3.5 ábrán X és Y részfákból jelölteket generálunk az összekapcsolás művelet segítéségével. Először a (2, 1) (2, 1) összekapcsolást hajtjuk végre, ahol a 3.4 definíció első esete szerint 1 = 1, így hozzácsatoljuk az X részfához a (2, 1) és a (2, 2) csúcsot (lásd 1.a)1.b)). Mind a kettőnél bővítjük a P 2 -t a megfelelő elemekkel. A következő összekapcsolás a (2, 1) (3, 0), melyre a második eset teljesül, miszerint 1 > 0, így az X fához és P 2 -hez hozzáadjuk a (3, 0) elemet (lásd 2.a)). A (3, 0) (3, 0) esetében szintén egyenlőség teljesül, azaz 0 = 0 tehát hozzáadjuk az Y fához a (3, 0) és a (3, 1) elemet, továbbá bővítjük a P 3 halmazt is. A (3, 0) (2, 1) műveletnél a tétel utolsó pontja teljesül, így ebből nem tudunk jelölteket generálni. Tehát az 15 prefixszű jelöltekből elő tudtunk állítani egy 152, illetve egy prefixszű jelöltet ábra. Jelöltek generálása, az összekapcsolás műveletének alkalmazása [4] 3.3. A Treeminer algoritmus menete Az algoritmus a gyakori részfákat a mélységi keresés segítségével kutatja fel. Annak érdekében, hogy a támogatottság kiszámításának művelete gyors legyen, úgynevezett érvényességi tartomány listákban tárolja a fákat. 19

20 Érvényességi tartomány lista Jelölje X, T egy részfáját, amelynek utolsó csúcsa x k. Jelölje L(X) az X részfa érvényességi tartomány listáját, amely (t, m, s) párokat tartalmaz, ahol t annak a fának az azonosítója, amely tartalmazza az X-et, m az X (k 1) hosszú prefixszének illeszkedési címkéje, valamint s az x k érvényességi tartománya. Ekkor a lista elemszáma, egyenlő a részfa súlyozott támogatottságával, ha a minimális támogatottsági küszöböt eléri. Megjegyzés Az egyelemű részfáknak üres a prefixszük, mert nincs nekik még illeszkedési címkéjük. Példa 3.4 A 3.6 ábrán a fák tárolására láthatunk példát. Az algoritmus horizontális és vertikális tárolást alkalmaz. Az 1. táblázat a horizontális tárolást mutatja be, ahol az első attribútum a fa ID-ja a második, pedig annak kanonikus kódja. A 2. táblázat az egyelemű fák vertikális tárolásra mutat példát. Azaz az érvényességi tartomány listára, ahol a fejlécben az egy elemű fák címkéi találhatóak, azon belül a felsorolásban pedig olyan párok, melyek első eleme annak a fának az azonosítója, amelyben az egyelemű fa megtalálható, a másik eleme pedig, a hozzá tartozó érvényességi tartomány. Mivel az egyelemű fáknak nincsen illeszkedési címkéje, így csak a fák ID-ját és az érvényességi tartományokat tartalmazzák a listák, az egyelemű fák esetében ábra. Példa a horizontális és vertikális tárolásra 1- és 2-elemű gyakori részfák meghatározása 20

21 Az F 1 -ek meghatározásánál a fák horizontális tárolását alkalmazza, azaz (faid, kanonikus kód ). Az 1 elemű fákat, egy 1-dimenziós tömbben számlálja meg, ahol az index jelöli a fát, a tömb elemei pedig a számlálókat tartalmazzák, akárcsak, mint az Apriori GYEK algoritmusnál. Ezután kiválogatja közülük a min supp segítségével a gyakoriakat és létrehozza az F 1 -et. Ekkor F 1 elemeinek prefixsze üres, azaz [P 0 ] =, ezeket jelölje: {(i, 1), i F 1 }. Ennek a lépésnek a lépésszáma O(n), ahol n = T. A kételemű gyakori részfák meghatározása a 3.4 definíció szerint történik, ahol a jelöltek osztálya [P ] 1 = [i] (i F 1 ), amely csak (j, 0) alakú elemeket tartalmazhat, ahol j > i. Ezek leszámlálására egy 2-dimenziós tömböt alkalmazunk, melynek mérete F 1 F 1 és az [i][j]-dik elem az ij 1 kanonikus kódú elem számlálóját tartalmazza. Miután végzett az algoritmus a leszámlálással, akkor a gyakoriak kiválogatása közben megalkotja F 2 érvényességi tartomány listáját is. A teljes lépés műveletszáma O(n 2 ). A kettőnél nagyobb elemszámú részfák meghatározása a jelöltek előállításánál az érvényességi tartomány listák összekapcsolásának műveletével hajtható végre, jelölése: L(x) L(y). Legyen két részfa érvényességi tartománya az s x = [l x, u x ] és az s y = [l y, u y ] a [P ] osztályban. Ekkor azt mondjuk, hogy s x szigorúan kisebb, mint az s y, azaz s x < s y, akkor és csak akkor, ha u x < l y. Továbbá s x tartalmazza az s y -t, jelölésben s y s x, akkor és csak akkor, ha l x l y és u y u x. Így két eset állhat fenn. Vagy y leszármazottja az x-nek, vagy x és y beágyazott testvérek (embedded sibilings), azaz x-nek és y-nak van közös ősük. A 3.4 definíció szerint az (x, i) (y, j) művelet két elemmel bővítheti a P x osztályt, vagy (y, j + 1)-gyel, vagy (y, j)-vel. Ha (y, j + 1)-et adjuk hozzá a [P x ] osztályhoz, akkor a tétel szerint szükségszerű, hogy i = j legyen és hogy y az x gyereke. Ekkor ezt a (P x y) kanonikus kóddal tudjuk reprezentálni, ahol P x az x prefix osztály kódja. Ahhoz, hogy leellenőrizzük, hogy ez a részfa előfordul-e a bemeneti T fában a t azonosítóval, úgy a (t y, s y, m y ) L(y)-ra és a (t x, s x, m x ) L(x)-re teljesülniük kell a következőknek: 1) t y = t x, azaz mind a két hármas előfordul ugyanabban a t azonosítójú fában. 2) m y = m x, x és y prefixsze megegyezik az m illeszkedési címkéjével. 3) s y s x, azaz x tartalmazza az y-t. Ha a fentiek teljesülnek a két hármasra, úgy találtunk egy jelöltet, ahol x-nek leszármazottja az y a T fában és bővíthetjük a P prefixet az m y illeszkedési címkével, így ezt az új prefixet jelöljük P x -szel és hozzáadjuk a (t y, s y, {m y l x }) hármast az (y, j + 1) érvényességi tartomány listájához a [P x ]-ben. Ha a (y, j) elemet adjuk hozzá a [P x ]-hez, akkor az a helyzet áll fenn, hogy y és x beágyazott testvérek a P prefixben és s x < s y. Az elem hozzáadása után annak kanonikus kódja (P x y) alakú lesz, ahol a 1-ek száma függ, a j-ből x-be menő út hosszától. Ekkor (y, j) előfordul a T fában a t azonosítóval, ha teljesülnek a (t y, s y, m y ) L(y)-ra és a (t x, s x, m x ) L(x)-re a következők: 21

22 1) t y = t x, azaz mind a két hármas előfordul ugyanabban a t azonosítójú fában. 2) m y = m x, x és y prefixsze megegyezik az m illeszkedési címkéjével. 3) s x < s y, azaz x-et előbb láttuk meg a mélységi bejárás során, mint az y-t és nincs átfedés a két csúcs érvényességi tartományán. Amennyiben a fentiek igazak a két hármas párra úgy (y, j) érvényességi tartomány listájához, hozzáadjuk a (t y, s y, {m y l x }) hármast a [P x ]-ben. A fentieket alkalmazva az F k -k meghatározása, ahol (k 2) a következőképpen történik. Bemenetként adott egy [P ] osztály, ami az elemeket és a hozzájuk tartozó érvényességi tartomány listákat tartalmazza. Ezután leellenőrzi, hogy a lista csak gyakori elemeket tartalmazzon, majd összekapcsolja az összes elem érvényességi tartomány listáját, beleértve az önmagával vett összekapcsolását is az elemeknek. Az (x, i) (y, j) összekapcsolás eredménye két jelölt lehet a tétel szerint, amiket az egyszerűség kedvéért egy R halmazban tárol az algoritmus és L(R) jelöli ezeknek az érvényességi tartomány listáját. Ha egy részfát gyakorinak talál egy szinten, akkor a következő szint megegyezik ezen elemek osztályával. Az eljárás a rekurziót addig ismételgeti, amíg elő tud állítani jelölteket. Ha [P ] n számú elemet tartalmaz, akkor a lépésszáma az algoritmusnak O(ln 2 ), ahol l az érvényességi tartományok listás összekapcsolásának műveletigénye. Valamint a memória használata is kicsi, mert csak a jelenlegi [P ] osztályt és az új jelöltek [P x ] osztályát tárolja el. A Treeminer algoritmus pszeudokódja TreeMiner (D, min supp ): F 1 = {gyakori 1-részfák} F 2 = { gyakori 2-részfák a [P ] 1 osztályon} for all [P ] 1 E do gyakori_részfák_előállítása([p ] 1 ); gyakori_részfák_előállítása([p ]): for each elem (x, i) [P ] do P x = ; for each elem (y, j) [P ] do R = {(x, i) (y, j)}; L(R) = {L(x) L(y)}; if for any R R, R gyakori then [P x ] = [P x ] {R}; gyakori_részfák_előállítása([p x ]); Példa 3.5 A 3.7 ábrán látható három különböző fa T 0, T 1, T 2 azonosítóval, amelyekben keressük a 22

23 3.7. ábra. 1-elemű jelöltek előállítása és érvényességi tartomány listájuk gyakori részfákat. Az ott látható táblázat, tartalmazza az 1-elemű fák érvényességi tartomány listáját. Legyen a min supp = 100%, azaz akkor tekintünk gyakorinak egy részfát, ha az mind a három bementi fában előfordul. A 3. táblázatban látszik, hogy a (2, 1) és (4, 1) elemek nem gyakoriak, így az L(2) és L(4)listáját a továbbiakban nem vesszük figyelembe. Ezután következik a két elemű részfák előállítása, ahol az érvényességi listákat fogjuk összekapcsolni. Mivel itt a gyakoriak prefixsze üres és az elemek, amikkel bővíthetjük a gyakoriakat (1, 1), (3, 1), (5, 1). Így a 3.4 definíció első esete áll fent, azon belül is az első állítás, miszerint a gyakori elemekhez az (x, i) (y, j) összekapcsolással, csak (y, j + 1) alakú elemeket adhatjuk hozzá. Továbbá legyen s x az x csúcs, s y az y csúcs érvényességi tartománya, akkor s y s x -nek teljesülnie kell, azaz x érvényességi tartománya tartalmazza az y érvényességi tartományát. Tehát legyen az érvényességi listák összekapcsolása a következő: L(x) L(y), ahol x, y = 1, 3, 5, ekkor: L(1) L(1): t = 0, s 1 = [0, 3] - mivel nincs s 2 így a T0 fa biztosan nem tartalmaz ilyen jelöltet. t = 1, s 1 = [0, 5], s 2 = [2, 3] s 2 s 1 így hozzáadhatjuk az (1, 1) elemhez az (1, 0) elemet, így a (1, 0, [2, 3]) hármast hozzáadjuk az új érvényességi tartomány listához. t = 2, s 1 = [0, 7], s 2 = [1, 3] s 2 s 1 (2, 0, [1, 3]). L(3) L(3): 23

24 t = 0, s 1 = [2, 2] - mivel nincs s 2 nem tudunk jelöltet előállítani. t = 1, s 1 = [3, 3] - mivel nincs s 2 nem tudunk jelöltet előállítani. t = 2, s 1 = [2, 3], s 2 = [4, 7] s 2 s 1 nem tudunk jelöltet előállítani. L(5) L(5): t = 0, s 1 = [3, 3] - mivel nincs s 2 nem tudunk jelöltet előállítani. t = 1, s 1 = [4, 4], s 2 = [5, 5] s 2 s 1 nem tudunk jelöltet előállítani. t = 2, s 1 = [6, 6] - mivel nincs s 2 nem tudunk jelöltet előállítani. L(1) L(3): t = 0, s 1 = [0, 3], s 2 = [2, 2] s 2 s 1 (0, 0, [2, 2]). t = 1, s 1 = [0, 5], s 2 = [3, 3] s 2 s 1 (1, 0, [3, 3]). t = 1, s 1 = [2, 3], s 2 = [3, 3] s 2 s 1 (1, 2, [3, 3]). t = 2, s 1 = [0, 7], s 2 = [2, 3] s 2 s 1 (2, 0, [2, 3]). t = 2, s 1 = [0, 7], s 2 = [4, 7] s 2 s 1 (2, 0, [4, 7]). t = 2, s 1 = [1, 3], s 2 = [2, 3] s 2 s 1 (2, 1, [2, 3]). L(1) L(5): t = 0, s 1 = [0, 3], s 2 = [3, 3] s 2 s 1 (0, 0, [3, 3]). t = 1, s 1 = [0, 5], s 2 = [4, 4] s 2 s 1 (1, 0, [4, 4]). t = 1, s 1 = [0, 5], s 2 = [5, 5] s 2 s 1 (1, 0, [5, 5]). t = 2, s 1 = [0, 7], s 2 = [6, 6] s 2 s 1 (2, 0, [6, 6]). L(3) L(1): t = 0, s 1 = [2, 2], s 2 = [0, 3] s 2 s 1 nem tudunk jelöltet előállítani. t = 1, s 1 = [3, 3], s 2 = [0, 5] s 2 s 1 nem tudunk jelöltet előállítani. t = 2 esetében nem tudunk jelöltet előállítani, mert az L(3) egyik érvényességi tartománya sem tartalmazza L(1) érvényességi tartományait. L(3) L(5): t = 0, s 1 = [2, 2], s 2 = [3, 3] s 2 s 1 nem tudunk jelöltet előállítani. t = 1, s 1 = [3, 3], s 2 = [4, 4] s 2 s 1 nem tudunk jelöltet előállítani. t = 1, s 1 = [3, 3], s 2 = [5, 5] s 2 s 1 nem tudunk jelöltet előállítani. t = 2, s 1 = [4, 7], s 2 = [6, 6] s 2 s 1 (2, 4, [6, 6]) nem tudunk jelöltet előállítani. L(5) L(1): t = 0, s 1 = [3, 3], s 2 = [0, 3] s 2 s 1 nem tudunk jelöltet előállítani. 24

25 t = 1 esetében nem tudunk jelöltet előállítani, mert az L(5) egyik érvényességi tartománya sem tartalmazza L(1) érvényességi tartományait. t = 2 esetében nem tudunk jelöltet előállítani, mert az L(5) egyik érvényességi tartománya sem tartalmazza L(1) érvényességi tartományait. L(5) L(3): t = 0, s 1 = [3, 3], s 2 = [2, 2] s 2 s 1 nem tudunk jelöltet előállítani. t = 1 esetében nem tudunk jelöltet előállítani, mert az L(5) egyik érvényességi tartománya sem tartalmazza L(1) érvényességi tartományait. t = 2 esetében nem tudunk jelöltet előállítani, mert az L(5) egyik érvényességi tartománya sem tartalmazza L(1) érvényességi tartományait. A fenti jelöltek alapján, két jelöltet nyilváníthatunk gyakorinak, L(1) L(3) és az L(1) L(5) eredményeképp kapott részfákat. A két részfa az 3.8 ábrán látható, valamint a hozzájuk tartozó érvényességi tartomány listát a 4. táblázat tartalmazza. Látható hogy mind a két részfának 1 a támogatottsága, valamint az elsőnek 6, a másodiknak, pedig 4 a súlyozott támogatottsága ábra. 2-elemű gyakori részfák és érvényességi tartomány listájuk Ezután következik a háromelemű jelöltek előállítása, ahol a prefix 1 hosszú és az elemek pedig a (3, 0) és a (5, 0). Így a következő összekapcsolások generálhatnak új háromelemű jelölteket [9]: L(3, 0) L(3, 0): t = 0, m = 0, s 1 = [2, 2] - mivel nincs s 2 nem tudunk jelöltet előállítani. 25

26 t = 1, m 1 = 1, m 2 = 2 m 1 m 2 - nem tudunk jelöltet előállítani. t = 2, m 1 = m 2 = 0, s 1 = [2, 3], s 2 = [4, 7] s 1 < s 2 (2, 02, [4, 7]) L(3, 0) L(5, 0): t = 0, m 1 = m 2 = 0, s 1 = [2, 2], s 2 = [3, 3] s 1 < s 2 (0, 02, [3, 3]) t = 1, m 1 = m 2 = 0, s 1 = [3, 3], s 2 = [4, 4] s 1 < s 2 (1, 03, [4, 4]) t = 1, m 1 = m 2 = 0, s 1 = [3, 3], s 2 = [5, 5] s 1 < s 2 (1, 03, [5, 5]) t = 2, m 1 = m 2 = 0, s 1 = [2, 3], s 2 = [6, 6] s 1 < s 2 (2, 02, [6, 6]) t = 2, m 1 = m 2 = 0, s 1 = [4, 7], s 2 = [6, 6] s 2 s 1 (2, 04, [6, 6]) (itt a fentiekkel ellentétben nem az (5, 0) elemet, hanem az (5, 1) elemet csatoljuk hozzá a részfához) L(5, 0) L(5, 0): t = 0, m = 0, s 1 = [3, 3] - mivel nincs s 2 nem tudunk jelöltet előállítani. t = 1, m 1 = m 2 = 0, s 1 = [4, 4], s 2 = [5, 5] s 1 < s 2 (1, 04, [5, 5]) előállítani. t = 2, s 1 = [6, 6] - mivel nincs s 2 nem tudunk jelöltet előállítani. L(5, 0) L(3, 0): t = 0, m = 0, s 1 = [3, 3], s 2 = [2, 2] s 1 s 2 és s 1 s 2 - nem tudunk jelöltet előállítani. t = 1 esetén L(5)-nek nincs olyan érvényességi tartománya, amely vagy tartalmazná, vagy kisebb lenne, mit az L(3) érvényességi tartományai. t = 2 esetén L(5)-nek nincs olyan érvényességi tartománya, amely vagy tartalmazná, vagy kisebb lenne, mit az L(3) érvényességi tartományai. A fentiek alapján látható, hogy csak a L(3, 0) L(5, 0) összekapcsolás eredményezett, olyan részfát, amelyet gyakorinak tekintünk, azaz mind a három bementi fában előfordul. Még egy utolsó szintje van az algoritmusnak, ahol a prefix 2 hosszú, illetve a hozzáadható elem az (5, 0). Mivel a L(5, 0) L(5, 0) összekapcsolással, csak egy jelöltet tudunk előállítani, ahol t 1 = t 2 = 1, m 1 = m 2 = 03, s 1 = [4, 4], s 2 = [5, 5] s 1 < s 2 (1, 034, [5, 5]) lesz a listabeli eleme, de mivel ez csak egy fában fordul elő nem lehet gyakori. Így az egyetlen gyakori részfa a 3.9 ábrán látható az érvényességi listájával, amiből látszik, hogy a támogatottsága 1, valamint a súlyozott támogatottsága 4. Összegzés A Treeminer algoritmus a bemeneti gyökeres és rendezett fákon, képes megtalálni a gyakori beágyazott részfákat, a jelölt előállítás módszerével, ahol minden jelöltet legfeljebb, csak egyszer állít elő. Továbbá a fákat egy úgynevezett kóddal látja el és így tárolja azokat az adatbázisban, majd ezekből generál egy érvényességi tartomány listát és a mélységi bejárás alkalmazásával ezen listákat összekapcsolja és legenerálja az eggyel nagyobb számú jelölteket és azok érvényességi tartomány listáját, majd meghatározza azok támogatottságát. 26

27 3.9. ábra. A 3-elemű gyakori részfák és érvényességi tartomány listájuk 27

28 4. fejezet AGM algoritmus Az apriori algoritmuson alapuló gyakori részgráfokat kereső algoritmus, a továbbiakban AGM (Apriori-based Graph Mining) a gráfokat szomszédsági mátrixokban reprezentálja és ezen mátrixokon definiál egy kanonikus kódot [6]. Az algoritmus erőssége, hogy irányított és irányítatlan, valamint címkézett gráfokban való keresésre is alkalmas, így könnyedén használható a való életben előforduló hálózatokban való keresésre Alapfogalmak Az él és csúcs címkézett gráfokat a következőképpen reprezentálhatjuk szomszédsági mátrixokban. Legyen G = (V (G), E(G), L(V (G)), L(E(G))) olyan címkézett gráf, ahol L(V (G)) a csúcsok címkéjének, L(E(G)) pedig az élek címkéjének a halmaza. Megjegyzés a gráf mérete megegyezik a csúcsainak számával Definíció. Adott egy G = (V (G), E(G), L(V (G)), L(E(G))) gráf, ahol az X szomszédsági mátrix (i, j)-dik eleme az x ij, ekkor { num(l),ha e = (vi, v x ij = j ) E(G) és l = l(e) 0,ha (v i, v j ) / E(G) (4.1) ahol num(l) a címkét jelöli, egy egész számnak megfeleltetve. Ezen felül a mátrix i-dik sorához (oszlopához) hozzárendelünk egy num(l) számot, ahol v i V (G) és l = l(v i ) Definíció. Egy G = (V (G), E(G), L(V (G)), L(E(G))) gráf egy tranzakció és jelölje G ezen tranzakciók egy halmazát, ahol G = {G 1, G 2,..., G n }. A továbbiakban egy k méretű gráf szomszédsági mátrixát jelölje X k, magát a gráfot pedig G(X k ) Definíció. A G(X k ) gráf X k szomszédsági mátrixának csúcsai rendezettek, ha num(l(v i )) num(l(v i+1 )) ( i = 1,..., k 1). 28

29 4.1. ábra. Példa a szomszédsági mátrix sorainak (oszlopainak) rendezésére Példa 4.1 A 4.3 definícióra látható példa a 4.1 ábrán, ahol az a) mátrix egy jó rendezettséget reprezentál a fenti definíció értelmében, a b) mátrix pedig egy helytelent Definíció. Egy írányítatlan gráf csúcsaiban rendezett X k szomszédsági mátrixának kódját jelölje code(x k ), ahol x 1,1 x 1,2... x 1,k x 2,1 x 2,2... x 2,k X k = x 3,1 x 3,2... x 3,k x k,1 x k,2... x k,k Ekkor irányítatlan gráf esetében az X k mátrix kódja: code(x k ) = x 1,1 x 1,2 x 2,2 x 1,3 x 2,3 x 3,3 x 1,4... x k 1,k x k,k (4.2) Azaz a felső háromszög mátrix elemei oszloponként felsorolva. Irányított gráf esetében az X k mátrix kódja: code(x k ) = x 1,1 x 1,2 x 2,1 x 2,2 x 1,3 x 3,1 x 2,3 x 3,2... x k 1,k x k,k 1 x k,k (4.3) Azaz a bal felső elemtől indulva háromszögekben sorolja fel az elemeket Definíció. Adott egy G = (V (G), E(G), L(V (G)), L(E(G))) gráf, akkor G s = (V (G s ), E(G s ), L(V (G s )), L(E(G s ))) részgráfja G-nek, ha teljesülnek rá a következők: V (G s ) V (G), E(G s ) E(G) u, v V (G s ), (u, v) E(G s ) (u, v) E(G) Azaz megegyezik a részgráf hagyományos definíciójával (lásd 2. fejezet). 29

30 4.2. Jelölt előállítás Az AGM az Apriori GYEK-hez hasonlóan először az 1 elemű gyakori gráfokat állítja elő. Az i-dik lépésben az (i 1) elemű gyakori részfgráfok segíségével előállítja a i elemű jelölteket, majd ellenőrzi, hogy azok gyakoriak-e. Egy gráf gyakoriságának eldöntéséhez szüksége van a gráf támogatottságának meghatározására. Ez a támogatottság megegyezik a 2. fejezetben kimondott támogatottsággal, azaz 4.6. Definíció. Adott egy G gráf és annak egy G gráfja. Ekkor G támogatottsága: sup(g ) = azon G tranzakciók száma, ahol G G G. (4.4) az összes G G tranzakciók száma Amennyiben a sup(g ) nem kisebb, mint a minimális támogatottsági küszöb (lásd. 1.3.) úgy azt mondjuk, hogy G gyakori részgráf. A jelöltek generálása a következőképpen zajlik. Legyen X k és Y k két a csúcsaiban rendezett szomszédsági mátrixa a G(X k ) és G(Y k ) gyakori k méretű feszített részgráfoknak. Ha X k és Y k elemei megegyeznek, kivéve a k-dik sort és k-dik oszlopot, úgy X k -t és Y k -t összekapcsolhatjuk (join) és megalkotjuk a Z k+1 mátrixot. ( Xk 1 x X k = 1 x T 2 x k,k ) ( ) Yk 1 y, Y k = 1 y2 T, Z y k+1 = k,k X k 1 x 1 y 1 x T 2 x k,k z k,k+1 y2 T z k+1,k y k,k (4.5) ahol az X k 1 egy k 1 méretű gráf szomszédsági mátrixa, x i és y i (i = 1, 2) (k 1) 1-es oszlopvektorok. A Z k+1 mátrixban található z k,k+1 és z k+1,k elemeknek, nincs meghatározva az X k és Y k mátrixok által az értékük, így azok bármilyen num(l) értéket felvehetnek, beleértve a 0-t is. Abban az esetben, ha a gráf irányítatlan, úgy z k,k+1 = z k+1,k és az értékük 1, ha megy közöttük él, ha nem akkor 0. Ha a gráf irányított, úgy 4 eset fordulhat elő. 1) A k-dik csúcsból él megy a k + 1-dik csúcsba. 2) A k + 1-dik csúcsból él megy a k-dik csúcsba. 3) Két irányú él van a k-dik és a k + 1-dik csúcs között. 4) Nincs él közöttük [7]. Ebben az esetben több különböző mátrixot generál az összekapcsolás művelete. Minden esetben X k -t első mátrixnak (first matrix), Y k -t pedig második mátrixnak (second matrix) nevezzük. Formálisan a (4.5) összekapcsolás, azaz ha a következő feltételek teljesülnek, úgy az X k, Y k, Z k+1 mátrixok megtartják a csúcsaikban a rendezettséget és elvégezhető rajtuk összekapcsolás művelete, mely megtartja ezt a rendezettséget. 30

31 l(v i v i V (G(X k ))) = l(v i v i V (G(Y k ))) = l(v i v i V (G(Z k+1 ))) l(v i v i V (G(X k ))) l(v i+1 v i+1 V (G(X k ))) l(v k v k V (G(X k ))) = l(v k v k V (G(Z k+1 ))) l(v k v k V (G(Y k ))) = l(v k+1 v k+1 V (G(Z k+1 ))) l(v k v k V (G(X k ))) l(v k v k V (G(Y k ))) (i = 1, 2,..., k 1) (4.6) Továbbá két szomszédsági mátrixot csak akkor kapcsolhatunk össze, ha teljesül rájuk, hogy: x k,k < y k,k. (4.7) Példa 4.2 (code(első mátrix) code(második mátrix) A 4.2 ábra a) és b) két négy csúcsú irányítatlan, csúcsaiban címkézett gráfjához tarto ábra. Példa két gráf összekapcsolására és annak eredményére zó szomszédsági mátrixok a következők, rendre jelölje őket X 4 és Y 4. Az X 4 és Y 4 mátrix 1. sora az 1-es, 2. sora a 2-es 3. sora a 3-as, 4. sora szintén a 3-as címkéhez tartozik, ugyanez igaz az oszlopokra is X 4 = , Y 4 = Ekkor a két mátrix kódja a következő: code(x 4 ) = code(y 4 ) = Látszik, hogy X 4 és Y 4 a bal felső 3 3-as részmátrixában megegyezik. Ekkor ellenőrizzük, hogy a címkéik sorrendje megfelelő-e, valamint a (4.8)-nak is teljesülnie kell, azaz x 4,3 y 4,3. Így összekapcsolhatjuk a két mátrixot és megalkotjuk a Z 5 mátrixot. 31

Gyakori elemhalmazok kinyerése

Gyakori elemhalmazok kinyerése Gyakori elemhalmazok kinyerése Balambér Dávid Budapesti M szaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Számítástudomány szakirány 2011 március 11. Balambér Dávid (BME) Gyakori

Részletesebben

Gyakori elemhalmazok

Gyakori elemhalmazok Gyakori elemhalmazok Bankó Tibor June 9, 2010 Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 1 / 26 Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok

Részletesebben

Gyakori elemhalmazok és asszociációs szabályok

Gyakori elemhalmazok és asszociációs szabályok Gyakori elemhalmazok és asszociációs szabályok Nagyméretű adathalmazok kezelése Ilsinszki Balázs! 2014. 03. 10. Anyag felosztása 1. Gyakori elemhalmazok 2. Asszociációs szabályok Anyag felosztása 1. Gyakori

Részletesebben

Gráfelméleti alapfogalmak

Gráfelméleti alapfogalmak 1 Gráfelméleti alapfogalmak Gráf (angol graph= rajz): pontokból és vonalakból álló alakzat. pontok a gráf csúcsai, a vonalak a gráf élei. GRÁ Irányítatlan gráf Vegyes gráf Irányított gráf G H Izolált pont

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. tavasz 1. Diszkrét matematika 2.C szakirány 1. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu Komputeralgebra Tanszék 2015. tavasz Gráfelmélet Diszkrét

Részletesebben

Gráfelméleti feladatok. c f

Gráfelméleti feladatok. c f Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,

Részletesebben

Diszkrét matematika 2. estis képzés

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 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

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

Részletesebben

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus GRÁFELMÉLET 7. előadás Javító utak, javító utak keresése, Edmonds-algoritmus Definíció: egy P utat javító útnak nevezünk egy M párosításra nézve, ha az út páratlan hosszú, kezdő- és végpontjai nem párosítottak,

Részletesebben

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit

Részletesebben

III. Gráfok. 1. Irányítatlan gráfok:

III. Gráfok. 1. Irányítatlan gráfok: III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa: Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2016. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2.C szakirány

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.

Részletesebben

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Összefoglaló Gráfok / EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Adott a G = (V, E) gráf ahol a V a csomópontok, E az élek halmaza E = {(x, y) x, y V, x y (nincs hurokél) és (x, y) = (y, x)) Jelölések:

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

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

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. Mérai László előadása alapján Készítette: Nagy Krisztián 1. előadás Gráfok halmaza, gráf, ahol a csúcsok halmaza, az élek illesztkedés reláció: illesztkedik az élre, ha ( -él illesztkedik

Részletesebben

Diszkrét matematika 2. estis képzés

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 7. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Struktúra nélküli adatszerkezetek

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

Részletesebben

Diszkrét matematika 2. estis képzés

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

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. 2018. szeptember 21. 1. Diszkrét matematika 2. 2. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. szeptember 21. Gráfelmélet

Részletesebben

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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á

Részletesebben

Diszkrét matematika 2. estis képzés

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 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 3 III. MEGFELELTETÉSEk, RELÁCIÓk 1. BEVEZETÉS Emlékeztetünk arra, hogy az rendezett párok halmazát az és halmazok Descartes-féle szorzatának nevezzük. Más szóval az és halmazok

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

Részletesebben

1. tétel - Gráfok alapfogalmai

1. tétel - Gráfok alapfogalmai 1. tétel - Gráfok alapfogalmai 1. irányítatlan gráf fogalma A G (irányítatlan) gráf egy (Φ, E, V) hátmas, ahol E az élek halmaza, V a csúcsok (pontok) halmaza, Φ: E {V-beli rendezetlen párok} illeszkedési

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

Amortizációs költségelemzés

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

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI 19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg-

Részletesebben

Gráfalgoritmusok ismétlés ősz

Gráfalgoritmusok ismétlés ősz Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf

Részletesebben

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk 1. Kódelmélet Legyen X = {x 1,..., x n } egy véges, nemüres halmaz. X-et ábécének, elemeit betűknek hívjuk. Az X elemeiből képzett v = y 1... y m sorozatokat X feletti szavaknak nevezzük; egy szó hosszán

Részletesebben

Nagyméretű adathalmazok kezelése (BMEVISZM144) Reinhardt Gábor április 5.

Nagyméretű adathalmazok kezelése (BMEVISZM144) Reinhardt Gábor április 5. Asszociációs szabályok Budapesti Műszaki- és Gazdaságtudományi Egyetem 2012. április 5. Tartalom 1 2 3 4 5 6 7 ismétlés A feladat Gyakran együtt vásárolt termékek meghatározása Tanultunk rá hatékony algoritmusokat

Részletesebben

Leképezések. Leképezések tulajdonságai. Számosságok.

Leképezések. Leképezések tulajdonságai. Számosságok. Leképezések Leképezések tulajdonságai. Számosságok. 1. Leképezések tulajdonságai A továbbiakban legyen A és B két tetszőleges halmaz. Idézzünk fel néhány definíciót. 1. Definíció (Emlékeztető). Relációknak

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak

Részletesebben

Felvételi tematika INFORMATIKA

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.

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a Feladatok, amelyek gráfokkal oldhatók meg ) A königsbergi hidak problémája (Euler-féle probléma) a b d c A megfelelő gráf: d a b c ) Egy szórakoztató feladat (Hamilton-féle probléma) Helyezzük el az,,,...,

Részletesebben

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

Részletesebben

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n). Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPé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 () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

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. 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

Részletesebben

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz A vizsga menete: a vizsga írásbeli és szóbeli részből áll. Az írásbeli beugrón az alábbi kérdések közül szerepel összesen 12 darab, mindegyik egy pontot

Részletesebben

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. 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

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek 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 B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Shannon és Huffman kód konstrukció tetszőleges. véges test felett 1 Shannon és Huffman kód konstrukció tetszőleges véges test felett Mire is jók ezek a kódolások? A szabványos karakterkódolások (pl. UTF-8, ISO-8859 ) általában 8 biten tárolnak egy-egy karaktert. Ha tudjuk,

Részletesebben

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként. Számításelmélet Kiszámítási problémának nevezünk egy olyan, a matematika nyelvén megfogalmazott kérdést, amire számítógéppel szeretnénk megadni a választ. (A matematika nyelvén precízen megfogalmazott

Részletesebben

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Hadamard-mátrixok Előadó: Hajnal Péter február 23. Szimmetrikus kombinatorikus struktúrák MSc hallgatók számára Hadamard-mátrixok Előadó: Hajnal Péter 2012. február 23. 1. Hadamard-mátrixok Ezen az előadáson látásra a blokkrendszerektől független kombinatorikus

Részletesebben

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. 5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan

Részletesebben

ELTE IK Esti képzés tavaszi félév. Tartalom

ELTE IK Esti képzés tavaszi félév. Tartalom Diszkrét Matematika 2 vizsgaanyag ELTE IK Esti képzés 2017. tavaszi félév Tartalom 1. Számfogalom bővítése, homomorfizmusok... 2 2. Csoportok... 9 3. Részcsoport... 11 4. Generátum... 14 5. Mellékosztály,

Részletesebben

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának feladatai. INFORMATIKA II. (programozás) kategória

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának feladatai. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 1/18 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának feladatai INFORMATIKA II. (programozás) kategória 1. feladat: K-homogén sorozat ( pont) Azt mondjuk, hogy az

Részletesebben

32. A Knuth-Morris-Pratt algoritmus

32. A Knuth-Morris-Pratt algoritmus 32. A Knuth-Morris-Pratt algoritmus A nyers erőt használó egyszerű mintaillesztés műveletigénye legrosszabb esetben m*n-es volt. A Knuth-Morris-Pratt algoritmus (KMP-vel rövidítjük) egyike azon mintaillesztő

Részletesebben

Javító és majdnem javító utak

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

Részletesebben

Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna

Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna 2010. 10. 18. 2 7. Párosítási tételek.nb 7. Előadás Emlékeztető: Javító út, Javító

Részletesebben

2. Visszalépéses stratégia

2. Visszalépéses stratégia 2. Visszalépéses stratégia A visszalépéses keres rendszer olyan KR, amely globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai:

Részletesebben

Gráfelmélet jegyzet 2. előadás

Gráfelmélet jegyzet 2. előadás Gráfelmélet jegyzet 2. előadás Készítette: Kovács Ede . Fák Tétel. : A következők ekvivalensek a T gráfra: (i) T összefüggő, e E. T e már nem összefüggő (ii) T összefüggő és körmentes. (iii) x, y V T!

Részletesebben

15. A VERSENYRENDEZÉS

15. A VERSENYRENDEZÉS 15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás

Részletesebben

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott . Minimális súlyú feszítő fa keresése Képzeljük el, hogy egy útépítő vállalat azt a megbízást kapja, hogy építsen ki egy úthálózatot néhány település között (a települések között jelenleg nincs út). feltétel

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

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

Részletesebben

Algoritmuselmélet 1. előadás

Algoritmuselmélet 1. előadás Algoritmuselmélet 1. 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 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1 Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,

Részletesebben

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 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

Részletesebben

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.

Részletesebben

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása Oktatási Hivatal Országos Középiskolai Tanulmányi Verseny / Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása. Oldja meg a valós számok legbővebb részhalmazán a egyenlőtlenséget!

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1 Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival

Részletesebben

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.

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

Részletesebben

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

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

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat PM-07 p. 1/13 Programozási módszertan Dinamikus programozás: A leghosszabb közös részsorozat Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-07

Részletesebben

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk. Osztók és többszörösök 1783. A megadott számok elsõ tíz többszöröse: 3: 3 6 9 12 15 18 21 24 27 30 4: 4 8 12 16 20 24 28 32 36 40 5: 5 10 15 20 25 30 35 40 45 50 6: 6 12 18 24 30 36 42 48 54 60 1784. :

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor  compalg.inf.elte.hu/ nagy Diszkrét matematika 1. középszint 2017. ősz 1. Diszkrét matematika 1. középszint 5. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján Komputeralgebra

Részletesebben

SzA II. gyakorlat, szeptember 18.

SzA II. gyakorlat, szeptember 18. SzA II. gyakorlat, 015. szeptember 18. Barátkozás a gráfokkal Drótos Márton drotos@cs.bme.hu 1. Az előre megszámozott (címkézett) n darab pont közé hányféleképp húzhatunk be éleket úgy, hogy egyszerű gráfhoz

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen

Részletesebben

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. 15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re

Részletesebben

17. előadás: Vektorok a térben

17. előadás: Vektorok a térben 17. előadás: Vektorok a térben Szabó Szilárd A vektor fogalma A mai előadásban n 1 tetszőleges egész szám lehet, de az egyszerűség kedvéért a képletek az n = 2 esetben szerepelnek. Vektorok: rendezett

Részletesebben

Visszalépéses kiválogatás

Visszalépéses kiválogatás elépő a tudás közösségébe Informatika szakköri segédanyag Heizlerné akonyi iktória, Horváth Győző, Menyhárt László, Szlávi Péter, Törley Gábor, Zsakó László Szerkesztő: Abonyi-Tóth Andor, Zsakó László

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Diszkrét matematika II., 8. előadás. Vektorterek

Diszkrét matematika II., 8. előadás. Vektorterek 1 Diszkrét matematika II., 8. előadás Vektorterek Dr. Takách Géza NyME FMK Informatikai Intézet takach@inf.nyme.hu http://inf.nyme.hu/ takach/ 2007.??? Vektorterek Legyen T egy test (pl. R, Q, F p ). Definíció.

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban

Részletesebben

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) 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

Részletesebben

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1. Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok

Részletesebben