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: Egy adott pontból kiinduló (beérkező) élek számát az adott csomópont fokszámának nevezzük. Jelölése: d(x) Egy olyan csomópontot, amelynek a fokszáma 0 izolált pontnak nevezünk. Tétel: Egy gráfban a csomópontok fokszámainak összege egyenlő az élek számának kétszeresével. n csomópontok száma, m élek száma d(1)+d(2)+d(3)+...+d(n)=2m Következmény: Egy gráfban páros számú olyan csomópont van, amelynek a fokszáma páratlan. Tulajdonság: 2 n(n-1)/2 -en olyan gráf létezik, amely csomópontjainak száma n. 2. Részgráf, algráf: Egy gráfban, ha letörölünk éleket, akkor az eredeti gráf egy részgráfjához jutunk, ha csomópontokat törölünk a hozzátartozó élekkel együtt, akkor a gráf egy algráfját kapjuk. 3. Teljes gráf, kiegészítő gráf: Egy gráf akkor teljes gráf, ha bármely 2 csomópontja között van él. Egy gráfnak a kiegészítő gráfját úgy kapjuk meg, hogy megtartjuk a csomópontokat és meghúzzuk azokat az éleket, amelyek nincsenek meg az eredeti gráfban. Ha a gráfot és a kiegészítő gráfját egymásra helyeznénk, teljes gráfot kapnánk. Egy teljes gráf éleinek száma: n*(n-1)/2, mert minden csomópont fokszáma n-1, tehát ha a fenti tételbe behelyettesítünk a bal oldalon n(n-1)-et kapunk, és kifejezzük m-et. 4. Séta, vonal, út, kör: Egy gráfban élek sorozatát sétának nevezzük. Ha a séta végpontja egybeesik a kezdőpontjával, akkor zárt sétáról beszélünk. A vonal egy olyan séta, amelyben az élek egymástól különböznek. Az út egy olyan séta, amelyben minden csomópont különböző. A kör egy olyan út, amelynek kezdőpontja megegyezik a végpontjával. Az út, vonal, kör hosszán, az út alkotó élek számát értjük. 5. Összefüggő gráf: Ha egy gráf bármely két csomópontja között van út, akkor ez a gráf összefüggő. Ha egy gráf nem összefüggő, akkor több összefüggő komponensből áll.
6. Hamilton-gráf: Ha egy út átmegy egy gráf minden csomópontján, akkor ez az út Hamilton-út. Ha az út kör, akkor Hamiltonkörről beszélünk. Ha egy gráfban van Hamilton-kör, akkor a gráf Hamilton-gráf. Ha egy gráfban minden csomópont fokszáma nagyobb vagy egyenlő a csomópontok felénél, akkor a gráf Hamilton-gráf. Ha G egy n csomópontú gráf, és d(x) n/2, bármely x csomópontra, akkor G Hamilton-gráf. Figyelem!!! Ha nem teljesül a feltétel, nem jelenti azt, hogy nem Hamilton-gráf. Tehát elégséges, de nem szükséges feltételről van szó. 7. Euler-gráf: Egy gráf minden élét tartalmazó vonalat, Euler-vonalnak nevezünk. Ha egy gráfban van egy zárt Euler-vonal, akkor a gráf Euler-gráf. Egy gráf akkor és csak akkor Euler-gráf, ha minden csomópontjának fokszáma páros. Ez egy szükséges és elégséges feltétel, tehát ha van olyan csomópont, aminek a fokszáma páratlan, akkor a gráf nem Euler-gráf. 8. Gráfok ábrázolása a számítógép memóriájában: 1. Szomszédsági mátrix (csúcsmátrix) segítségével: a[i,j]=1, ha i-ből j-be van él a[i,j]=0, ha i-ből j-be nincs él Pl: a fenti gráf esetén: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 Észrevehetjük, hogy a mátrix szimmetrikus a főátlóra nézve. A mátrix 2-szer annyi 1-est tartalmaz, mint amennyi él van. 2. Éllista segítségével: minden csomópont esetén, tároljuk a szomszédos éleket Pl: a fenti gráf esetén: 1: 2,4,6 2: 1,3,5 3: 2,4,5 4: 1,3,5 5: 2,3,4,6 6: 1,5 9. Fa, gyökeres fa: A fa egy összefüggő, körmentes gráf. A fa értelmezéséből => minden n csomópontból álló fának n-1 éle van. Ha egy fában meghúzunk egy élet két nem szomszédos csomópont között, akkor kör alakul ki. Ha egy fában letörölünk egy élet, akkor nem lesz többé összefüggő, hanem két összefüggő komponensre bomlik. Egy fában két csomópont között pontosan egy út létezik. A gyökeres fa olyan fa, amelyben az egyik csomópontnak kitüntetett szerepe van, ez a gyökér, a többi csomópont szintekbe van rendezve. Pl:
A gyökér a 0. szinten van. Apa (közvetlen ős): 1 apja 2-nek Fiú (közvetlen leszármazott): 3 fia 1-nek Testvér: 2, 3, 4 testvérek Levél: olyan csomópontok, amelyeknek nincsen leszármazottja: 5, 6, 7 Ábrázolás: ősvektorral, minden csomópontnak megadjuk az apját: t=(0, 1, 1, 1, 2, 2, 4) 10. Sajátos gyökeres fák: Bináris fa: minden csomópontjának legtöbb 2 fia van. Teljes bináris fa: olyan bináris fa, amelyben csomópontnak pontosan 2 fia van, kivéve a leveleket. 1. Irányított 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,6), (2,3), (2,5), (3,5), (4,1), (4,2), (5,4), (6,5)} Értelmezések: 1. Kifokszám: Egy adott pontból kiinduló élek számát az adott csomópont kifokszámának nevezzük. Jelölése: d + (x). Befokszám: Egy adott pontba beérkező élek számát az adott csomópont befokszámának nevezzük. Jelölése: d - (x) 2. Részgráf, algráf: azonos az irányítatlan gráfnál megadottal 3. Teljes gráf, kiegészítő gráf: azonos az irányítatlan gráfnál megadottal 4. Séta, vonal, út, kör: azonos az irányítatlan gráfnál megadottal, csak mindenhol irányított élekről van szó
5. Erősen összefüggő gráf: Ha egy irányított gráf bármely két csomópontja között van irányított út, akkor ez a gráf erősen összefüggő. Ha egy gráf nem erősen összefüggő, akkor több erősen összefüggő komponensből áll. Feladatok: 1. Adott egy 12 csomópontból és 7 élből álló, irányítatlan G gráf. Legtöbb hány összefüggő komponensből épülhet fel a G gráf? (6 p) 2. Adott egy 50 csomópontból és 32 élből álló irányítatlan gráf. Legtöbb hány olyan csomópontja lehet a gráfnak, amelynek fokszáma 0? (4 p) a. 45 b. 40 c. 41 d. 50 A fenti 2 feladatot hasonlóan oldjuk meg. Mindkét feladatban arra kell törekednünk, hogy a gráfnak maximális számú izolált pontja legyen. Ehhez arra van szükségünk, hogy meghatározzuk, hogy a megadott élek számához, hány csomópontra van szükség. Ismerve a teljes gráf éleinek számát, kapjuk: 7 élhez 5 csomópontra van szükség, mert az 5 csomópont esetén meghúzható élek száma: 5*4/2= 10. Nem el;g 4 csomópont, mert 4 csomópont esetén, csak 4*3/2=6 él húzható meg. => 7 élhez szükséges 5 csomópont, tehát marad 12-5=7 izolált pont => összesen legtöbb 8 összefüggő komponensünk lesz. 32 élhez 9 csomópont szükséges, mert 9*8/2=36. => legtöbb 50-9=41 izolált pont lehet a gráfban 3. Hány levele van annak a gyökeres fának, amely esetén az apák tömbje: (6,5,5,2,0,3,3,3,8,7,7)? (4 p) a. 1 b. 2 c. 5 d. 4 Ha megszámoljuk az ősvektor elemeit, megtudjuk a fa csomópontjainak számát: 11. Tudjuk azt, hogy az ősvektorban a csomópontok apját tároljuk. => azok a csomópontok, amelyek nem jelennek meg az ősvektorban nem apák, tehát levelek => a fenti gyökeres fa levelei: 1, 4, 9, 10, 11, tehát 5 levele van a fának => a helyes válasz c. 4. Hány testvére van az 1-es csomópontnak, abban a gyökeres fában, amelynek 7 csomópontja van, csomópontjait 1-től 7-ig jelöljük, és az apák tömbje: (5,1,5,1,0,7,5)? (4 p) a. 3 b. 1 c. 0 d. 2 Az 1-es csomópont testvéreit úgy kaphatjuk meg, hogy megkeressük annak apját, majd megvizsgáljuk, hogy mely csomópontok apja egyezik meg ezzel az értékkel. Az 1-es csomópont apja: 5. Az 5-ös csomópont a 3-as és 7-es csomópontnak is apja => az 1-es csomópont testvérei: 3, 7. => a helyes válasz d. IV. Backtracking A backtrackinges feladatoknál arra kell figyelni, hogy mindig a verembe utolsónak betett értéket kell előbb módosítani, s ha ez nem lehetséges, akkor visszalépünk az előző szintre, majd itt az első lehetőséggel próbálkozunk. Klasszikus feladatoknak számítanak a permutációk, variációk illetve kombinációk generálása. Itt fontos tudni, hogy a permutáció csak az elemek sorrendjét cseréli fel. A variáció és kombináció esetén n elem közül, csak m-et választunk ki. A különbség az, hogy a variáció esetén a kiválasztási sorrend is fontos, míg a kombinációnál nem. Feladatok: 1. A backtracking módszert használva egy természetes szám összes lehetséges felbontására, mint egy, nem zéró, természetes számokból álló összeg, n=3-ra, a megoldások sorrendje: 1+1+1; 1+2; 2+1; 3. Egy felbontásban a tagok sorrendje jelentős. Hasonló módszert használva n=10-re, menyi lesz a generált megoldás mindjárt: 1+1+3+5 után? (4 p) a. 1+1+4+1+1+1+1 b. 1+1+7+1 c. 1+2+7 d. 1+1+4+4 Előbb az utolsónak beírt 5-ös érték helyett próbálunk más értéket tenni, de ez nem lehetséges, ezért visszalépünk az előző szintre. Így a 3-as helyett 4-es értéket írunk és lépünk a következő szintre. Itt az első lehetséges érték az 1-es, ami megfelel, ezért ismét tovább lépünk egy szintet. Itt is az 1-es érték az első lehetőség, és így tovább. Tehát a helyes megoldás: a.
2. Felépítjük a c1c2c3c4 szó anagrammáit generálva a szó betűindexeinek permutációját lexikográfiai sorrendbe és a c1c2c3c4 c1c2c4c3 c1c3c2c4 c4c3c1c2 c4c3c2c1. kapjuk. A rateu szó anagrammái mindjárt raetu, raeut, raute sorozat utána következők: (4p.) a. rauet és rtaeu b. rtaeu és rtaue c. rauet és rtaue d. rtaeu és ratue Ha megszámozzuk az eredeti szó betűit, akkor: r=1, a=2, t=3, e=4, u=5. => a raute szó az az 12543-nak felel meg. Ezután következők pedig: 13245 és 13254, melyek megfelelői: rtaeu és rtaue => helyes válasz: b. 3. Egy LOTTO szelvény kitöltése esetén 6 számot kell megjelölni a szelvényen feltüntetett 49 szám közül. Egy statisztikai kimutatás szerint egy adott időszakban a leggyakrabban kihúzott számok a: 2, 20, 18, 38, 36, 42, 46, 48. Hány darab 6 számos szelvényt lehet kitölteni kizárólag a fenti számokat használva, tudva azt, hogy a 42 minden szelvényen meg lesz jelölve? (4 p) a. 21 b. 6! c. 42 d. 56 Tudjuk, hogy 6 számot kell kiválasztanunk a fentiek közül és azt is, hogy a 42 minden szelvényen be van jelölve => megmarad összesen 7 szám, amiből 5 számot kell kiválasztanunk és a kiválasztás sorrendje nem számít, tehát kombinációval tudjuk kiszámolni, 7 szám 5-önkénti kombinációja: 7! / ( 5! * (7-5)!) = (7*6*5!) /(5! * 2!) = 42/2=21.