Gráfalgoritmusok: összefüggőség, párosítás páros gráfban

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

Download "Gráfalgoritmusok: összefüggőség, párosítás páros gráfban"

Átírás

1 Gráfalgoritmusok: összefüggőség, párosítás páros gráfban Horváth Gyula

2 1. Elvágópontok és hidak 1.1. definíció. Egy G = (V, E) összefüggő irányítatlan gráf p V pontját elvágópontnak nevezzük, ha p-t (és a hozzá kapcsolódó minden élet) törölve, a gráf nem lesz összefüggő Elvágópontok Legyen G = (V, E) irányítatlan gráf. Feladat: határozzuk meg G mindazon pontját, amelyek benne vannak legalább egy körben! 1.2. Állítás. Irányítatlan gráf bármely mélységi bejárása esetén minden él vagy faél, vagy visszaél Állítás. Egy G = (V,E) irányítatlan gráf p V pontja akkor és csak akkor van körben, ha van olyan u V és v V pont, hogy p = u vagy u leszármazottja p-nek, és (u,v) visszaél G valamely MFF mélységi feszítőfájában.

3 Legyen G = (V, E) irányítatlan gráf, és tekintsük egy r-gyökerű MFF mélységi feszítőfáját. Legyen D(p) a p elérési ideje a mélségi bejárás során. Definiáljuk az L : V N függvényt a következőképpen: r q p u 1. ábra. L(p) = min { D(p) D(q) : van olyan u leszármazottja p-nek, hogy u q visszaél

4 1.4. Állítás. Az L függvény kiszámítható az élek számával arányos időben (O(E)) a mélységi bejárás során. D(p) L(p) = min D(q) : p q visszaél p q L(q) : p q faél r q p q u 2. ábra.

5 1 void MelyBejar ( i n t p ) { 2 / / Global : G, ido, D, Szin, Apa, L 3 D[ p]= ido ++; 4 L [ p]= ido ; 5 Szin [ p]= Szurke ; 6 for ( i n t q :G[ p ] ) 7 i f ( Szin [ q]==feher ) { / / p >q f a é l 8 Apa[ q]=p ; 9 MelyBejar ( q ) ; 0 L [ p]=min ( L [ p ], L [ q ] ) ; 1 } else i f (Apa[ p ]! = q && D[ q] <L [ p ] ) / / visszaél 2 L [ p]=d[ q ] ; 3 } 1.5. Állítás. Irányítatlan gráf bármely p pontja akkor és csak akkor van benne legalább egy körben, ha L(p) < D(p)) vagy p-nek van olyan u fia a mélységi feszítőfában, hogy L(u) D(p) Állítás. Irányítatlan gráf bármely p pontja akkor és csak akkor elvágópont, ha p r és van olyan q fia a mélységi feszítőfában, hogy L(q) D(p)) Állítás. Irányítatlan gráf esetén a mélységi feszítőfa gyökere akkor és csak akkor elvágópont, ha egynél több fia van a feszítőfában.

6 1 void Elvágopntok ( i n t p ) { 2 / / Global : G, ido, D, Szin, L, ElvagoP 3 D[ p]= ido ++; 4 L [ p]= ido ; 5 Szin [ p]= Szurke ; 6 i n t fiuk =0; 7 for ( i n t q :G[ p ] ) 8 i f ( Szin [ q]==feher ) { / / p >q f a é l 9 fiuk ++; 0 Apa[ q]=p ; 1 MelyBejar ( q ) ; 2 L [ p]=min ( L [ p ], L [ q ] ) ; 3 i f (D[ p] >1 && L [ q]>=d[ p ] ) 4 ElvagoP [ p]= true ; 5 } else i f (Apa[ p ]! = q && D[ q] <L [ p ] ) / / visszaél 6 L [ p]=d[ q ] ; 7 8 i f (D[ p]==1 && fiuk >1) 9 ElvagoP [ p]= true ; 0 }

7 1.2. Hidak 1.8. definíció. Egy irányítatlan G = (V,E) gráf (p,q) E éle akkor és csak akkor híd, ha az élet elhagyva a gráf nem lesz összefüggő Állítás. Egy irányítatlan G = (V,E) gráf (p,q) E éle akkor és csak akkor híd, ha nincs benne egyetlen körben sem Állítás. Egy irányítatlan G = (V, E) gráf (p, q) E éle akkor és csak akkor híd, ha valamely mélységi feszítőfa szerint faél, és számított L fügvénnyel teljesül, hogy L(q) = D(q) következmény. Egy gráf minden hídja az élek számával arányos időben kiszámítható.

8 1 / / I r á n y í t a t l a n gráf h i d j a i 2 #include < bits / stdc ++.h> 3 # define maxn using namespace std ; 5 struct El { 6 i n t p, q ; 7 El ( ) { } ; 8 El ( i n t x, i n t y ) { p=x ; q=y ; } 9 } ; 0 i n t n ; / / pontok száma 1 vector <int > G[maxN] ; 2 3 void BeOlvas ( ) { 4 / / Global : n,g 5 i n t m, p, q ; 6 scanf ( "%d %d", &n,&m) ; 7 for ( i n t i =0; i <m; i ++){ 8 scanf ( "%d %d", &p,&q ) ; 9 G[ p ]. push_back ( q ) ; 0 G[ q ]. push_back ( p ) ; 1 } 2 }

9 3 enum Paletta { Feher, Szurke, Fekete } ; 4 Paletta Szin [maxn] ; 5 i n t D[maxN] ; 6 i n t L [maxn] ; 7 i n t Apa[maxN] ; 8 vector <El > Hidak ; 9 i n t ido ; 0 1 void MelyBejar ( i n t p ) { 2 / / Global : G, ido, D, Szin, L, Hidak 3 D[ p]=++ ido ; 4 L [ p]= ido ; 5 Szin [ p]= Szurke ; 6 for ( i n t q :G[ p ] ) 7 i f ( Szin [ q]==feher ) { / / p >q f a é l 8 Apa[ q]=p ; 9 MelyBejar ( q ) ; 0 L [ p]=min ( L [ p ], L [ q ] ) ; 1 i f ( L [ q]==d[ q ] ) 2 Hidak. push_back ( El ( p, q ) ) ; 3 } else i f (Apa[ p ]! = q && D[ q] <L [ p ] ) / / visszaél 4 L [ p]=d[ q ] ; 5 }

10 6 i n t main ( ) { 7 BeOlvas ( ) ; 8 ido =0; 9 for ( i n t p=1;p<=n ; p++) Szin [ p]= Feher ; 0 for ( i n t p=1;p<=n ; p++) 1 i f ( Szin [ p]==feher ) 2 MelyBejar ( p ) ; 3 4 p r i n t f ( "%d \ n", Hidak. size ( ) ) ; 5 for ( El e : Hidak ) 6 p r i n t f ( "%d %d \ n", e. p, e. q ) ; 7 }

11 2. Kétszeresen összefüggő komponensek 2.1. definíció. Azt mondjuk, hogy egy G = (V, E) irányítatlan gráf kétszeresen összefüggő, ha V > 1, összefüggő és bármely élét törölve a gráf továbbra is összefüggő marad Állítás. Egy G = (V,E) irányítatlan gráf akkor és csak akkor kétszeresen összefüggő, ha verv > 1 vagy bármely éle benne van egy körben ábra.

12 Példa bemenet és kimenet bemenet kimenet

13 Belátható, hogy a kétszeresen összefüggő komponenseket úgy kapjuk, hogy töröljük a gráf élei közül a hidakat. 1 / / I r á n y í t a t l a n gráf kétszeresen összefüggő ( biconnected ) komponensek 2 #include < bits / stdc ++.h> 3 # define maxn using namespace std ; 5 struct El { 6 i n t p, q ; 7 El ( ) { } ; 8 El ( i n t x, i n t y ) { p=x ; q=y ; } 9 } ; 0 i n t n ; / / pontok száma 1 vector <int > G[maxN] ; 2 void BeOlvas ( ) ; 3 4 enum Paletta { Feher, Szurke, Fekete } ; 5 Paletta Szin [maxn] ; 6 i n t D[maxN] ; 7 i n t L [maxn] ; 8 i n t Apa[maxN] ; 9 stack <El > V; 0 vector <vector <El >> H; 1 i n t ido ;

14 2 void MelyBejar ( i n t p ) { 3 / / Global : G, ido, D, Szin, L, V,H 4 D[ p]=++ ido ; 5 L [ p]= ido ; 6 Szin [ p]= Szurke ; 7 for ( i n t q :G[ p ] ) { 8 i f ( Szin [ q]==feher ) { / / p >q f a é l 9 V. push ( El ( p, q ) ) ; 0 Apa[ q]=p ; 1 MelyBejar ( q ) ; 2 L [ p]=min ( L [ p ], L [ q ] ) ; 3 i f ( L [ q]>=d[ p ] ) { / / t a l á l t u n k egy komponenst 4 i f (V. top ( ). p==p && V. top ( ). q==q ) { / / p q híd 5 V. pop ( ) ; 6 } else { 7 El pq ; 8 vector <El > Hp; 9 do{ 0 pq=v. top ( ) ; V. pop ( ) ; 1 Hp. push_back ( pq ) ; 2 } while ( pq. p!=p pq. q!=q ) ; 3 H. push_back (Hp ) ; 4 } 5 }

15 6 } else i f ( q!=apa[ p ] && Szin [ q]==szurke ) { / / p >q visszaél 7 L [ p]=min ( L [ p ],D[ q ] ) ; 8 V. push ( El ( p, q ) ) ; 9 } 0 } 1 Szin [ p]= Fekete ; 2 }

16 3 void Komponensek ( ) { 4 / / global : G, H 5 for ( i n t p=1; p<=n ; p++) Szin [ p]= Feher ; 6 ido =0; 7 for ( i n t p=1; p<=n ; p++) 8 i f ( Szin [ p]==feher ) MelyBejar ( p ) ; 9 vector <El > Hp; 0 / / a veremben maradt komponens k i í r á s a 1 while (V. size ( ) > 0 ) { 2 El pq=v. top ( ) ; V. pop ( ) ; 3 Hp. push_back ( pq ) ; 4 } 5 i f (Hp. size () >0) H. push_back (Hp ) ; 6 }

17 7 i n t main ( ) { 8 ios_base : : sync_with_stdio ( false ) ; 9 cin. t i e (NULL) ; 0 BeOlvas ( ) ; 1 Komponensek ( ) ; 2 cout<<h. size () < < endl ; 3 for ( vector <El > komp: H) { 4 for ( El e : komp) 5 cout<<e. p<<" "<<e. q ; 6 cout <<endl ; 7 } 8 } 9 void BeOlvas ( ) { 0 / / Global : n,g 1 i n t m, p, q ; 2 cin >>n>>m; 3 for ( i n t i =0; i <m; i ++){ 4 cin >>p>>q ; 5 G[ p ]. push_back ( q ) ; 6 G[ q ]. push_back ( p ) ; 7 } 8 }

18 3. Erősen összefüggő komponensek 3.1. Feladat: Iskolahálózat (IOI96) Néhány iskola számítógépes hálózatba van kötve. Az iskolák a szabadon terjeszthető programok elosztására megállapodást kötöttek: minden iskola egy listát vezet azokról az iskolákról ("címzett iskolákról"), amelyek számára a programokat továbbküldi. Megjegyzés: ha B iskola szerepel az A iskola terjesztési listáján, akkor A nem feltétlenül szerepel B terjesztési listáján. Írjon programot, amely meghatározza azt a legkisebb számot, ahány iskolához egy új programot el kell juttatni ahhoz, hogy - a megállapodás alapján, a hálózaton keresztül terjesztve - végül minden iskolába eljusson. Bemenet A bementi állomány első sora egy egész számot, a hálózatba kapcsolt iskolák n; számát tartalmazza (2 n 1000). Az iskolákat az elsoő n pozitív egész számmal azonosítjuk. A következő n sor mindegyike egy-egy terjesztési listát ír le. Az i+1-edik sor az i-edik iskola terjesztési listáján szereplő iskolák azonosítóit tartalmazza. Minden lista végén egy 0 szám áll. Az üres lista csak egy 0 számból áll. Kimenet A kimenti állomány első sorába azt a legkisebb m számot kell írni, ahány iskolához egy új programot el kell juttatni ahhoz, hogy - a megállapodás alapján, a hálózaton keresztül terjesztve - végül minden iskolába eljusson. A második sor pontosan m egész számot tartalmazzon egy-egy szóközzel elválasztva, azon iskolák sorszámait, ahova kezdetben el kell juttatni az új programot. Több megoldás esetén bármelyik megadható.

19 Példa bemenet és kimenet bemenet kimenet 2 1 5

20 Elvi megoldás Legyen G = (V,E) az iskolahálózatot leíró irányított gráf, tehát V = {1,...,n} és (p,q) E akkor és csak akkor, ha a p iskola terjesztési listájában szerepel q. A megoldás egy olyan D V, amelyre teljesül: ( q V )( p D)(p q) A legkisebb elemszámú ilyen D halmazt keressük. A megoldást lépésenként építhetjük: Adott p pontra jelölje Eler(p) a p pontból elérhető pontok halmazát: D := /0; DbolElert := /0; p V p / DbolElert { D := D Eler(p) {p} DbolElert := DbolElert Eler(p) } Eler(p) = {q V : p q} Az algoritmus futási ideje legrosszabb esetben O(n 3 ). Megmutatjuk, hogy lényegesen gyorsabban is lehet számítani.

21 ábra. A hálózat gráfja

22 Soroljuk egy osztályba azokat a pontokat, amelyek egymásból elérhetők, jelölje ezt az eqvivalencia relációt. Tehát p q akkor és csak akkor, ha p q és q p. A p q reláció nyilvánvalóan eqvivalencia-reláció. Jelölje [p] a p pontot tartalmazó eqvivalencia-osztályt, tehát minden olyan komponensből kell egy-egy pontot választani, amely komponensbe nem vezet él a [p] = {q : p q és q p} A [p] halmazokat a gráf erősen összefüggő komponenseinek nevezzük. Tekintsük azt a gráfot, amelynek pontjai a G gráf erősen összefüggő komponensei, és [p] [q] akkor és csak akkor él, ha van olyan u [p] és van olyan v [q] hogy u v él az eredeti G gráfban. Ezt a gráfot G komponens-gráfjának nevezzük. Nyilvánvaló, hogy a komponens-gráf körmentes. A megoldás kiolvasható a komponens-gráfból: ábra. Erősen összefüggő komponensek

23 ábra. Komponens-gráf

24 komponens-gráfban. A feladat megoldásához nem kell feltétlenül előállítani a komponens-gráfot. Tegyük fel, hogy a G gráfnak k komponense van (ha k=1, akkor a gráfot erősen össefüggőnek mondjuk). Végezzünk egy mélységi bejárást, és legyenek p 1,..., p k az egyes komponensek azon elemei, amelyeket elsőnek érjük el a mélységi bejárás során. Ezeket a pontokat a komponens ősapjának nevezzük. Rakjuk sorba a gráf pontjait úgy, hogy amikor a mélységi bejárás során a pontot feketére színezzük, akkor a pontot a sor elejére rakjuk. Ebben a sorrendben az ősapák olyan sorrendben lesznek, hogy ha van p i p j út, akkor p i előbb szerepel a sorban, mint p j. Tehát a sorban az első pont olyan ősapa, amely komponense 0-befokú. Vegyük be ezt a megoldáshalmazbe, majd fessük be a belőle elérhető pontokat. Így az első be nem festett pont ismet egy olyan ősapa, amelynek komponense 0-befokú. Folytatva a beválasztás, befestés eljárást, amíg minden pontot be nem festettünk, megkapjuk a megoldást. Ez az algoritmus az élek számával arányos futási idejű lesz.

25 1 vector <int > G[maxN] ; 2 3 enum Paletta { Feher, Szurke, Fekete } ; 4 i n t T [maxn] ; 5 Paletta Szin [maxn] ; 6 i n t n, nn ; 7 8 void MelyBejar1 ( i n t p ) { 9 Szin [ p]= Szurke ; 0 for ( i n t q :G[ p ] ) 1 i f ( Szin [ q]==feher ) 2 MelyBejar1 ( q ) ; 3 T [ nn ]=p ; 4 } 5 void MelyBejar2 ( i n t p ) { 6 Szin [ p]= Szurke ; 7 for ( i n t q :G[ p ] ) 8 i f ( Szin [ q]==feher ) 9 MelyBejar2 ( q ) ; 0 } 1 void Beolvas ( ) { }

26 2 i n t main ( ) { 3 Beolvas ( ) ; 4 for ( i n t i =1; i <=n ; i ++) Szin [ i ]= Feher ; 5 nn=n ; 6 for ( i n t x=1;x<=n ; x++) 7 i f ( Szin [ x]==feher ) 8 MelyBejar1 ( x ) ; 9 for ( i n t i =1; i <=n ; i ++) Szin [ i ]= Feher ; 0 vector <int > mego; 1 for ( i n t i =1; i <=n ; i ++){ 2 i n t x=t [ i ] ; 3 i f ( Szin [ x]==feher ) { 4 mego. push_back ( x ) ; 5 MelyBejar2 ( x ) ; 6 } 7 } 8 cout<<mego. size () < < endl ; 9 for ( i n t x :mego) 0 cout<<x<<" " ; 1 cout <<endl ; 2 return 0; 3 }

27 Ha elő kell állítani az erősen összefüggő pomponenseket, akkor az előző algoritmust annyiban kell módosítani, hogy a festés helyett a transzponált gráfban az eléhető pontok kerülnek egy-egy komponensbe. 1 / / I r á n y í t o t t gráf erősen összefüggő komponensei 2 #include < bits / stdc ++.h> 3 # define maxn using namespace std ; 5 struct El { 6 i n t p, q ; 7 El ( ) { } ; 8 El ( i n t x, i n t y ) { p=x ; q=y ; } 9 } ; 0 i n t n ; / / pontok száma 1 i n t ido ; 2 vector <int > G[maxN] ; 3 vector <int > Gt [maxn] ; / / a transzponált gráf

28 4 void BeOlvas ( ) { 5 / / Global : n,g 6 i n t m, p, q ; 7 cin >>n>>m; 8 for ( i n t i =0; i <m; i ++){ 9 cin >>p>>q ; 0 G[ p ]. push_back ( q ) ; 1 Gt [ q ]. push_back ( p ) ; 2 } 3 } 4 enum Paletta { Feher, Szurke, Fekete } ; 5 Paletta Szin [maxn] ; 6 i n t T [maxn] ; 7 vector <vector <int >> H;

29 8 void MelyBejar ( i n t p ) { 9 / / Global : G, ido, D, Szin 0 Szin [ p]= Szurke ; 1 for ( i n t q :G[ p ] ) 2 i f ( Szin [ q]==feher ) 3 MelyBejar ( q ) ; 4 T [ ido ++]=p ; 5 } 6 vector <int > Hp; 7 void MelyBejarT ( i n t p ) { 8 / / Global : Gt, Szin, Hp 9 Hp. push_back ( p ) ; 0 Szin [ p]= Fekete ; 1 for ( i n t q : Gt [ p ] ) 2 i f ( Szin [ q]==szurke ) 3 MelyBejarT ( q ) ; 4 }

30 5 i n t main ( ) { 6 BeOlvas ( ) ; 7 for ( i n t p=1; p<=n ; p++) Szin [ p]= Feher ; 8 ido =1; 9 for ( i n t p=1; p<=n ; p++) 0 i f ( Szin [ p]==feher ) MelyBejar ( p ) ; 1 for ( i n t i =n ; i >0; i ){ 2 i f ( Szin [ T [ i ]]== Szurke ) { 3 Hp. clear ( ) ; 4 MelyBejarT ( T [ i ] ) ; 5 H. push_back (Hp ) ; 6 } 7 } 8 cout<<h. size () < < endl ; 9 for ( vector <int > h : H) { 0 for ( i n t x : h ) 1 cout<<x<< " " ; 2 cout <<endl ; 3 } 4 return 0; 5 }

31 4. Párosítás páros gráfban 4.1. definíció. A G = (V, E) irányítatlan gráfot páros gráfnak nevezzük, ha a V ponthalmaz felbontható két diszjunkt A és B részhalmazra úgy, hogy bármely (u,v) E él esetén vagy u A és v B, vagy u B és v A definíció. A G = (V, E) irányítatlan páros gráf esetén egy P E élhalmazt párosításnak nevezünk, ha bármely két P-beli élnek nincs közös pontja.

32 4.1. Maximális párosítás: magyar módszer Legyen P egy párosítása a G = (V,E) páros gráfnak, ahol A + B = V. Azt mondjuk, hogy egy p V pont párosított, ha valamely q pontra (p,q) P. Az a 0,b 1,a 1,...,b k,a k,b k+1 pontsorozatot növelő útnak nevezzük, ha az alábbiak teljesülnek. 1. a 0 és b k+1 nem párosított és a 0 A és b k+1 B vagy a 0 B és b k+1 A 2. (a i,b i ) P; i = 1,...,k 3. (a i,b i+1 ) E; i = 0,...,k b1 b2 b3 b4 a0 a1 a2 a3 7. ábra. Növelő út Nyilvánvaló, hogy ha a fenti pontsorozat növelőút, akkor a P {(a i,b i ) : i = 1,...,k} {(a i,b i+1 ) : i = 1,...,k + 1} is párosítás és eggyel több párt tartalmaz, mint P. A megyar módszer (Kőnig Dénes és Egervári Károly munkája alapján) olyan algoritmus maximális párosítás előállításáa, amely növelő utak keresésén alapszik. Az algoritmus helyességét az alábbi állítás bizonyítja Állítás. Legyen P egy olyan párosítása a G = (V,E) páros gráfnak, hogy nincs növelő út a gráfban. Ekkor P maximális párosítás.

33 1 #include < bits / stdc ++.h> 2 # define maxn using namespace std ; 4 5 vector <int > G[maxN] ; 6 bool Nemvolt [maxn] ; 7 i n t Par [maxn] ; 8 i n t n ;

34 9 bool NoveloUtKeres ( i n t a ) { 0 / / Globalis : G, Par, Nemvolt 1 Nemvolt [ a]= false ; 2 for ( i n t b :G[ a ] ) { 3 i f ( Nemvolt [ b ] ) { 4 i f ( Par [ b]==b ) { 5 Par [ a]=b ; Par [ b]=a ; 6 return true ; 7 } else { 8 Nemvolt [ b]= false ; 9 i f ( NoveloUtKeres ( Par [ b ] ) ) { 0 Par [ a]=b ; Par [ b]=a ; 1 return true ; 2 } 3 } 4 } 5 } 6 return false ; 7 }

35 8 i n t MagyarModszer ( ) { 9 / / A+B p r a ríció meghatározása 0 bool A[maxN] ; 1 queue<int > S; 2 for ( i n t x=1;x<=n ; x++){ 3 A[ x]= false ; 4 Nemvolt [ x]= true ; 5 } 6 A[1]= true ; Nemvolt [1]= false ; 7 S. push ( 1 ) ; 8 while (! S. empty ( ) ) { 9 i n t x=s. front ( ) ; S. pop ( ) ; 0 for ( i n t y :G[ x ] ) 1 i f ( Nemvolt [ y ] ) { 2 Nemvolt [ y]= false ; 3 A[ y ] =!A[ x ] ; 4 } 5 } 6 i n t parokszama =0; 7 for ( i n t i =1; i <=n ; i ++) Par [ i ]= i ;

36 8 / / Növelo utak keresése 9 for ( i n t a=1;a<=n ; a++) 0 i f (A[ a ] && Par [ a]==a ) { 1 for ( i n t x=1;x<=n ; x++) Nemvolt [ x]= true ; 2 i f ( NoveloUtKeres ( a ) ) 3 parokszama++; 4 } 5 return parokszama ; 6 }

37 7 void Beolvas ( ) { 8 i n t m, x, y ; 9 cin >>n>>m; 0 for ( i n t i =1; i <=m; i ++){ 1 cin >>x>>y ; 2 G[ x ]. push_back ( y ) ; 3 G[ y ]. push_back ( x ) ; 4 } 5 } 6 i n t main ( ) { 7 Beolvas ( ) ; 8 i n t m=magyarmodszer ( ) ; 9 cout <<m<<endl ; 0 for ( i n t a=1;a<=n ; a++) 1 i f ( Par [ a ]! = a ) { 2 cout<<a<<" "<<Par [ a]<<endl ; 3 Par [ Par [ a ] ] = Par [ a ] ; 4 } 5 return 0; 6 }

38 4.2. Minimális lefedő halmazok Tekintsünk egy G = (V,E) páros gráfot, ahol V = A+B és legyen P egy maximális párosítása G-nek definíció. Egy p 1,..., p k utat alternáló útnak vezünk, ha az egymást követő élek közül az egyik P-beli, a másik nem P-beli. A gráf éleit irányítsuk úgy, hogy u v ha u A és (u,v) nem párosított, vagy u B és (u,v) párosított. Jelölje A(x) azt a logikai függvényt, amleyre A(x) akkor és csak akkor igaz, ha x A. Ha az x pont párosított, akkor Par(x) jelölje x párját, egyébként legyen Par(x) = x Definiáljuk az L logikai függvényt az V ponthalmazon úgy, hogy L(x) akkor és csak akkor igaz, ha van olyan a A pont, hogy x elérhető a-ból alternáló úton. Ha L(x) igaz, akkor azt mondjuk, hohy x L-cimkézett. Soroljuk a gráf pontjait az A1, A2, A3, B1, B2, B3 diszjunk részhalmazokba az alábbiak szerint. A1(x) = A(x) Par(x) = x: nem párosított A-beli pontok halmaza A2(x) = A(x) Par(x) x L(x): párosított A-beli L-címkézett pontok halmaza A3(x) = A(x) Par(x) x!l(x): párosított A-beli nem L-címkézett pontok halmaza B1(x) =!A(x) Par(x) = x: nem párosított B-beli pontok halmaza B2(x) =!A(x) Par(x) x L(x): párosított B-beli L-címkézett pontok halmaza B3(x) =!A(x) Par(x) x!l(x): párosított B-beli nem L-címkézett pontok halmaza

39 A3 B3 A2 B2 A1 B1 8. ábra. Pontok osztályozása (maximális) párosítás alapján.

40 4.3. Minimális lefedő ponthalmaz 4.5. definíció. Egy G = (V, E) irányítatlan gráf F V ponthalmazát lefedő ponthalmaznak nevezzük, ha bármely (u,v) E élre u F vagy v F Állítás. A3 B2 halmaz minimális feledő ponthalmaz Állítás. A minimális feledő ponthalmaz elemszáma megegyezik a maximális párosítás elemszámával Maximális független ponthalmaz 4.8. definíció. Egy G = (V, E) irányítatlan gráf F V ponthalmazát független ponthalmaznak nevezzük, ha bármely (u,v) E élre u / F vagy v / F Állítás. A1 A2 B1 B3 maximális független ponthalmaz Minimális lefedő élhalmaz definíció. Egy G = (V, E) irányítatlan gráf F E élhalmazát lefedő élhalmaznak nevezzük, ha bármely u V pontra van olyan v V hogy (u,v) F Állítás. Párosító élek + egy-egy A1 B2 és B1 A3 él minimális lefedő élhalmazt alkot.

41 1 #include < bits / stdc ++.h> 2 # define maxn using namespace std ; 4 5 vector <int > G[maxN] ; 6 bool Nemvolt [maxn] ; 7 i n t Par [maxn] ; 8 bool A[maxN] ; 9 bool L [maxn] ; 0 bool C[maxN] ; 1 i n t n ;

42 2 bool NoveloUtKeres ( i n t a ) { 3 / / Globalis : G, Par, Nemvolt 4 Nemvolt [ a]= false ; 5 for ( i n t b :G[ a ] ) { 6 i f ( Nemvolt [ b ] ) { 7 i f ( Par [ b]==b ) { 8 Par [ a]=b ; Par [ b]=a ; 9 return true ; 0 } else { 1 Nemvolt [ b]= false ; 2 i f ( NoveloUtKeres ( Par [ b ] ) ) { 3 Par [ a]=b ; Par [ b]=a ; 4 return true ; 5 } 6 } 7 } 8 } 9 return false ; 0 }

43 1 i n t MagyarModszer ( ) { 2 / / A+B p r a ríció meghatározása 3 queue<int > S; 4 for ( i n t x=1;x<=n ; x++){ 5 A[ x]= false ; 6 Nemvolt [ x]= true ; 7 } 8 A[1]= true ; Nemvolt [1]= false ; 9 S. push ( 1 ) ; 0 while (! S. empty ( ) ) { 1 i n t x=s. front ( ) ; S. pop ( ) ; 2 for ( i n t y :G[ x ] ) 3 i f ( Nemvolt [ y ] ) { 4 Nemvolt [ y]= false ; 5 A[ y ] =!A[ x ] ; 6 } 7 } 8 i n t parokszama =0; 9 for ( i n t i =1; i <=n ; i ++) Par [ i ]= i ;

44 0 / / Növelo utak keresése 1 for ( i n t a=1;a<=n ; a++) 2 i f (A[ a ] && Par [ a]==a ) { 3 for ( i n t x=1;x<=n ; x++) Nemvolt [ x]= true ; 4 i f ( NoveloUtKeres ( a ) ) 5 parokszama++; 6 } 7 return parokszama ; 8 } 9 0 void AltBejar ( i n t a ) { 1 L [ a]= true ; 2 Nemvolt [ a]= false ; 3 for ( i n t b :G[ a ] ) i f ( Nemvolt [ b ] && Par [ b ]! = b ) { 4 L [ b]= true ; Nemvolt [ b]= false ; 5 AltBejar ( Par [ b ] ) ; 6 } 7 }

45 8 void Beolvas ( ) { 9 i n t m, x, y ; 0 cin >>n>>m; 1 for ( i n t i =1; i <=m; i ++){ 2 cin >>x>>y ; 3 G[ x ]. push_back ( y ) ; 4 G[ y ]. push_back ( x ) ; 5 } 6 }

46 7 i n t main ( ) { 8 Beolvas ( ) ; 9 i n t m=magyarmodszer ( ) ; 0 cout <<m<<endl ; 1 / / minimális lefedő élhalmaz 2 for ( i n t a=1;a<=n ; a++) 3 i f ( Par [ a ]! = a ) { 4 cout<<a<<" "<<Par [ a]<<endl ; 5 Par [ Par [ a ] ] = Par [ a ] ; 6 } 7 / / minimális lefedő ponthalmaz 8 for ( i n t x=1;x<=n ; x++){ 9 Nemvolt [ x]= true ; 0 L [ x ] =!A[ x ] ; 1 C[ x]= false ; 2 } 3 for ( i n t x=1;x<=n ; x++) 4 i f (!A[ x ] ) AltBejar ( x ) ; 5 for ( i n t x=1;x<=n ; x++) 6 C[ x]= A[ x ] &&! L [ x ]!A[ x ] && L [ x ] ; 7 8 return 0; 9 }

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Neumann János Tehetséggondozó Program Gráfalgoritmusok II. Neumann János Tehetséggondozó Program Gráfalgoritmusok II. Horváth Gyula horvath@inf.elte.hu 1. A szélességi bejárás alkalmazásai. Nyilvánvaló, hogy S(0) = {r}. Jelölés: D(p) = δ(r, p) Nyilvánvaló, hogy

Részletesebben

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 Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 7. Gráfalgoritmusok II. 7.1. Feladat: Útcaseprő A város utcáinak takarítását úgy szervezték

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

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)} Példa Adott egy n n-es sakktábla. Az (1,1) mezőn áll egy huszár. Határozzuk meg eljuthat -e az (u,v) mezőre, ha igen adjunk meg egy legkevesebb lépésből álló utat! Adjunk algoritmust, ami megoldja a feladatot.

Részletesebben

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók STL Elsődleges komponensek: Tárolók Algoritmusok Bejárók Másodlagos komponensek: Függvény objektumok Adapterek Allokátorok (helyfoglalók) Tulajdonságok Tárolók: Vektor (vector) Lista (list) Halmaz (set)

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

Geometriai algoritmusok

Geometriai algoritmusok Geometriai algoritmusok Horváth Gyula horvath@inf.elte.hu Számos olyan gyakorlati számítási probléma van, amely megoldható olyan geometriai modellben, amelyben csak egyszerű objektumok, pontok, egyenesek,

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

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

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

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

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

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)} Példa Adott egy sziget ahol 42 kaméleon lakik. A kaméleonok három színt vehetnek fel piros, kék és zöld. Ha két különböző színű kaméleon találkozik, akkor megijednek és mindkettő átváltoztatja a színét

Részletesebben

INFORMATIKA tétel 2019

INFORMATIKA tétel 2019 INFORMATIKA tétel 2019 ELIGAZÍTÁS: 1 pont hivatalból; Az 1-4 feladatokban (a pszeudokód programrészletekben): (1) a kiír \n utasítás újsorba ugratja a képernyőn a kurzort; (2) a / operátor osztási hányadost

Részletesebben

Diszkrét matematika II. gyakorlat

Diszkrét matematika II. gyakorlat Diszkrét matematika II. gyakorlat 9. Gyakorlat Szakács Nóra Helyettesít: Bogya Norbert Bolyai Intézet 2013. április 11. Bogya Norbert (Bolyai Intézet) Diszkrét matematika II. gyakorlat 2013. április 11.

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

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

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

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód:

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód: Szerző Név: Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: vp.05@hotmail.com Kurzuskód: IP-08PAEG/27 Gyakorlatvezető neve: Kőhegyi János Feladatsorszám: 20 1 Tartalom Szerző... 1 Felhasználói dokumentáció...

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

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

Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu. Gráfos feladatok.. Feladat: Kiút keresés labirintusban. Egy négyzetrácsos hálózattal

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

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

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

117. AA Megoldó Alfréd AA 117.

117. AA Megoldó Alfréd AA 117. Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,

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

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális Elmaradó óra A jövő heti, november 0-dikei óra elmarad. Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v)

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

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

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

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

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

Adatszerkezetek II. 2. előadás

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

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

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

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

Részletesebben

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

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

Részletesebben

Algoritmuselmélet 11. előadás

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

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Részletesebben

A számítástudomány alapjai

A számítástudomány alapjai A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Legszélesebb utak Katona Gyula Y. (BME SZIT) A számítástudomány

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

Rekurzió. Horváth Gyula. horvath@inf.elte.hu

Rekurzió. Horváth Gyula. horvath@inf.elte.hu 1. ábra. Rekurzió Horváth Gyula horvath@inf.elte.hu 1. Feladat: Sorbaállítások száma Hány féleképpen lehet sorbaállítani az osztály tanulóit? Bemenet: a tanulók n száma. Kimenet: ahány félekeppen az n

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 alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető

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

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

Tuesday, March 6, 12. Hasító táblázatok

Tuesday, March 6, 12. Hasító táblázatok Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok

Részletesebben

INFORMATIKA tétel 2018

INFORMATIKA tétel 2018 INFORMATIKA tétel 2018 ELIGAZÍTÁS: 1 pont hivatalból; Az 1-4 feladatokban (a pszeudokód programrészletekben): (1) a kiír \n utasítás újsorba ugratja a képernyőn a kurzort; (2) a minden i = n,1,-1 végezd

Részletesebben

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

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte. Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció

Részletesebben

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic

Részletesebben

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1 2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának

Részletesebben

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése Készítette: Bognár Gergő Témavezető: Veszprémi Anna Eötvös Loránd Tudományegyetem Informatikai Kar Algoritmusok és Alkalmazásaik Tanszék Budapest,

Részletesebben

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

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t.. A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007 Hálózatok II 2007 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Szerda 17:00 18:30 Gyakorlat: nincs Vizsga írásbeli Honlap: http://people.inf.elte.hu/lukovszki/courses/g/07nwii

Részletesebben

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library) Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 12. előadás (Standard Template Library) 2014.05.19. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

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

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

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

Számítógép hálózatok, osztott rendszerek 2009

Számítógép hálózatok, osztott rendszerek 2009 Számítógép hálózatok, osztott rendszerek 2009 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Hétfő 10:00 12:00 óra Gyakorlat: Hétfő 14:00-16:00 óra Honlap: http://people.inf.elte.hu/lukovszki/courses/0910nwmsc

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Bevezetés a programozásba. 9. Előadás: Rekordok

Bevezetés a programozásba. 9. Előadás: Rekordok Bevezetés a programozásba 9. Előadás: Rekordok ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double terulet(double

Részletesebben

Függvények int, long 1. Adott a mellékelt f alprogram.

Függvények int, long 1. Adott a mellékelt f alprogram. Függvények int, long 1. Adott a mellékelt f alprogram. Határozzon meg két különböző természetes értéket az [1,50] intervallumból, amelyeket felvehet az x egész változó, úgy hogy az f(30,x) térítse vissza

Részletesebben

Diszkrét Matematika GYAKORLAT, Levelező MSc hallgatók számára. 3. Feladatsor

Diszkrét Matematika GYAKORLAT, Levelező MSc hallgatók számára. 3. Feladatsor Diszkrét Matematika GYAKORLAT, Levelező MSc hallgatók számára 3. Feladatsor Gyakorlatvezetõ: Hajnal Péter 2011. november 2-ától 1. Párosítások gráfokban 1.1. Alapok 1. Feladat. (i) Bizonyítsuk be, hogy

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó

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

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

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t

Részletesebben

Körkörös listák. fej. utolsó. utolsó. fej

Körkörös listák. fej. utolsó. utolsó. fej Körkörös listák fej utolsó fej utolsó Példa. Kiszámolós játék. Körben áll n gyermek. k-asával kiszámoljuk őket. Minden k-adik kilép a körből. Az nyer, aki utolsónak marad. #include using namespace

Részletesebben

Bevezetés a programozásba 2

Bevezetés a programozásba 2 Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i

Részletesebben

Adatszerkezetek II. 1. előadás

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

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

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

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

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

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

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18 Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda

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

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

Formális nyelvek - 9.

Formális nyelvek - 9. Formális nyelvek - 9. Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu 1 Véges

Részletesebben

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1 C++ I/O Bevezetés Izsó Tamás 2014. február 20. Izsó Tamás C++ I/O / 1 Section 1 Bevezetés Izsó Tamás C++ I/O / 2 Irodalom Izsó Tamás C++ I/O / 3 Paraméter illesztés függvénynév túlterhelés esetén 1 Pontos

Részletesebben

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus Csíkszereda IRT-. kurzus 3. Előadás: A mohó algoritmus 1 Csíkszereda IRT. kurzus Bevezetés Az eddig tanult algoritmus tipúsok nem alkalmazhatók: A valós problémák nem tiszta klasszikus problémák A problémák

Részletesebben

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

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

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

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

Felhasználó által definiált adattípus

Felhasználó által definiált adattípus Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

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

7 7, ,22 13,22 13, ,28 Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem

Részletesebben

10. Gráf absztrakt adattípus, gráfok ábrázolása

10. Gráf absztrakt adattípus, gráfok ábrázolása Gráf absztrakt adattípus, gráfok ábrázolása Definíciók Irányítatlan gráf:g = (V, E) 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 Multigráf: G

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

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Bevezetés a programozásba. 11. Előadás: Esettanulmány Bevezetés a programozásba 11. Előadás: Esettanulmány ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double

Részletesebben

Totális Unimodularitás és LP dualitás. Tapolcai János

Totális Unimodularitás és LP dualitás. Tapolcai János Totális Unimodularitás és LP dualitás Tapolcai János tapolcai@tmit.bme.hu 1 Optimalizálási feladat kezelése NP-nehéz Hatékony megoldás vélhetően nem létezik Jó esetben hatékony algoritmussal közelíteni

Részletesebben

XIII. STL. Tároló Bejáró Algoritmus. XIII.1 A vector #include <vector> #include <vector> #include <algorithm> using namespace std;

XIII. STL. Tároló Bejáró Algoritmus. XIII.1 A vector #include <vector> #include <vector> #include <algorithm> using namespace std; XIII. STL Tároló Bejáró Algoritmus #include #include using namespace std; vector vect; // a vect adatainak megadása sort(vect.begin(),vect.end()); XIII.1 A vector #include

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

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

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben