Az oszd meg és uralkodj (Divide et Impera) programozási módszer
Általános bemutatás Az oszd meg és uralkodj módszer akkor alkalmazható, ha a feladat egymástól független részfeladatokra bontható. Ötlet a feladatot felosztjuk két vagy több az eredetivel megegyező típusú részfeladatra. a részfeladatok megoldása elvezet az eredeti feladat megoldásához
Általános bemutatás A megoldás általános lépései A feladat felbontása kettő vagy több részfeladatra (Divide) A részfeladatok külön megoldása (Impera) Részleges eredmények kombinációja
Általános bemutatás A dvide et impera módszer rekurzív jellegű, minden felbontás esetén két lehetséges eset van: eljutunk egy részfeladathoz mely megoldása egyszerű (elemi eset, megállási feltétel) ha nem elemi esetünk van, felbontjuk a feladatot részfeladatokra és az alprogram ezekre meghívja önmagát
Példák és Megoldott Feladatok 1. Maximum és Minimum keresés
Példa:Keresd ki egy számsorozat legnagyobb elemét! 4 7 7
Példa:Keresd ki egy számsorozat legnagyobb elemét! 7 9 4 5 7 9 9
Feladat: Keresd ki az alábbi számsorozat legnagyobb elemét! 1 2 3 4 5 6 7 8 -7 -1 1 2 3 4 5 6 7 8 9 10 11 -7 -1
Példa Pascalban: Keresd ki egy számsorozat legnagyobb elemét Divide et Impera modszerrel! 1 2 3 4 5 6 7 8 -7 -1 u e k Jelölések e – a vizsgált részsorozat első indexe u – a vizsgált részsorozat utolsó indexe k – ahol ketté osztjuk a sorozatot max – résztömb maximuma
Példák és Megoldott Feladatok 2. Bináris Keresés
Példa: Keressük ki az alábbi rendezett számsorban egy x=4 értéket. 1 2 3 4 5 6 7 8 9 10 11 13 16 21 23 45 51 x<13 1 2 3 4 5 10 11 x<5 2 4 x>2 4
Feladat: Keresd ki az alábbi számsorozatban az x=41 számot 2 3 4 5 6 7 8 11 14 17 23 42 49 1 2 3 4 5 6 7 8 9 10 11 14 18 23 32 41 48 52 60
Példa Pascalban: Keresd ki egy számsorozat legnagyobb elemét Divide et Impera modszerrel! 1 2 3 4 5 6 7 8 14 17 23 32 41 u e k Jelölések e – a vizsgált részsorozat első indexe u – a vizsgált részsorozat utolsó indexe k – ahol ketté osztjuk a sorozatot keresett – résztömb keresett eleme
Bináris keresés Rendezett sorozatban: Elve: az intervallumfelezés Megvizsgáljuk a sorozat középső elemét: ha a keresett elem ennél nagyobb, akkor a továbbiakban csak a sorozat második felével foglalkozunk, ha nem, akkor az elejével
FELADATOK Irj Pascal Progrmot amely kikeresi egy számsorozat legnagyobb elemét Divide et Impera modszerrel! Irj Pascal Progrmot amely kikeresi egy rendezett számsorozat egy adott elemét Divide et Impera modszerrel! Adott egy n elemet tartalamazo sorozat. Hany prim eleme van a sorozatnak? Adott egy n elem– sorozat. Hatrozzuk meg a sorozat paros elemeinek szamat