Optimalizációs stratégiák 2.

Hasonló dokumentumok
Visszalépéses keresés

Optimalizációs stratégiák 1.

Programozás II. előadás

Rekurzió. Témakörök. Rekurzió alapelve. Rekurzió alapjai Rekurzív algoritmusok végrehajtása Visszalépéses keresés Programtranszformációk

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

Programozási módszertan. Mohó algoritmusok

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Egyszerű programozási tételek

Algoritmizálás, adatmodellezés tanítása 8. előadás

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Általános algoritmustervezési módszerek

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Informatikai tehetséggondozás:

Haladó rendezések. PPT 2007/2008 tavasz.

Algoritmizálás, adatmodellezés tanítása 7. előadás

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

29. Visszalépéses keresés 1.

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Összetett programozási tételek

Algoritmusok és adatszerkezetek I. 1. előadás

2017/ Szegedi Tudományegyetem Informatikai Intézet

BACKTRACKING Visszalépéses keresés

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Partíció probléma rekurzíómemorizálással

Dinamikus programozás vagy Oszd meg, és uralkodj!

Programozási segédlet

Algoritmizálás és adatmodellezés tanítása 2. előadás

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Struktúra nélküli adatszerkezetek

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Bevezetés a programozásba. 5. Előadás: Tömbök

Visszalépéses kiválogatás

Rekurzió. Dr. Iványi Péter

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Algoritmusok, adatszerkezetek II.

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Informatikai tehetséggondozás:

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Hasító táblázatok. Hasító függvények, kulcsütközés kezelése. Programozás II. előadás. Szénási Sándor

Programozási tételek. PPT 2007/2008 tavasz.

A félév során előkerülő témakörök

2. Visszalépéses keresés

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Diszkrét, egészértékű és 0/1 LP feladatok

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Gráfok. Programozás II. előadás. Szénási Sándor.

Az optimális megoldást adó algoritmusok

Algoritmusok és adatszerkezetek 2.

Számítógép és programozás 2

Mohó algoritmusok. Példa:

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

Korlátozás és szétválasztás elve. ADAGOLO adattípus

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Korlátozás és szétválasztás módszere Holló Csaba 2

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

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

Bevezetés az informatikába

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Algoritmusok, adatszerkezetek, objektumok

Felvételi tematika INFORMATIKA

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Problémamegoldási stratégiák

Informatikai tehetséggondozás:

Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/

Algoritmusok és adatszerkezetek I. 3. előadás

Informatikai tehetséggondozás:

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Programozás alapjai II. (7. ea) C++

2. Visszalépéses stratégia

Kereső algoritmusok a diszkrét optimalizálás problémájához

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

Visszalépéses keresés korlátozással

Kereső algoritmusok a diszkrét optimalizálás problémájához

Számítógép és programozás 2

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Adatszerkezetek 7a. Dr. IványiPéter

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Algoritmusok pszeudókód... 1

5. Hét Sorrendi hálózatok

Adatszerkezetek 1. előadás

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Algoritmusok és adatszerkezetek I. 4. előadás

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Tartalomjegyzék Algoritmusok - pszeudókód

Fibonacci számok. Dinamikus programozással

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

Adatszerkezetek II. 1. előadás

angolul: greedy algorithms, románul: algoritmi greedy

Visszalépéses maximumkiválasztás

Átírás:

Optimalizációs stratégiák 2. Visszalépéses keresés, szétválasztás és korlátozás 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

Optimalizációs stratégiák 2. Visszalépéses keresés Visszalépéses kereséssel optimalizálás Szétválasztás és korlátozás

3 Bevezető feladat Egy építkezésen több egymástól független munkafázist kell elvégezni. Osszuk szét a munkákat az arra alkalmas személyek között (úgy, hogy mindenki csak egyet vállalhat)! Géza Miklós Miklós András Zsolt Géza Miklós Klaudia András Zsolt Palika András Géza Szponzor Irányítás Alap Végigpróbálgathatjuk az összes lehetséges változatot, (amelyekből összesen 2 2 2 3 2 2 = 96 db van), ezek túlnyomó többsége azonban nem megoldása a feladatnak Olyan algoritmust keresünk, ami a megoldás keresése során eleve nem folytat olyan utakat, amelyek láthatóan nem vezethetnek megoldáshoz Fal Engedély Lefizetés

Feladat általánosítása szenasi.sandor@nik.uni-obuda.hu 4 N darab részeredményt keresünk (E 1, E 2... E N ) Mindegyikhez ismerjük a véges értékkészletet (pl. E 1 -hez ennek mérete M 1, elemei: R 1,1, R 1,2,... R 1,M1 ) M 1 =2 M 2 =2 M 3 =2 R 2,1 R 3,1 M 4 =3 R 4,1 R 4,2 M 5 =2 M 6 =2 R 1,2 R 2,2 R 3,2 R 4,3 R 1,1 R 6,2 R 5,1 R 6,1 R 5,2 E 1 E 2 E 3 E 4 E 5 E 6 N=6 A visszalépéses keresés olyan feladat típusoknál alkalmazható hatékonyan, ahol A megoldandó feladat több, egymástól csak közvetve függő részfeladat megoldásából áll Már a részfeladatok egy részéből is lehet arra következtetni, hogy az azokra adott részmegoldásokkal biztosan nem érhető el a teljes megoldás

5 Visszalépéses keresés paraméterei Keresés bemenete: N megoldandó részfeladatok száma M szint szint-edik részfeladat lehetséges részmegoldásainak a száma R szint,i szint-edik részfeladat i. lehetséges részmegoldása Keresés kimenete: van van-e teljes megoldás? E részmegoldásokat tartalmazó vektor (E i az i. részmegoldás értéke) A feladattól függő szabályokat általában két függvény segítségével adjuk meg: F t (szint, s) Egy függvény, ami azt határozza meg, hogy a szint-edik részfeladat esetében lehetséges megoldás-e az s? F k (szint, s, E) Azt határozza meg, hogy a szint-edik részfeladat esetében választhatjuk-e az s részmegoldást, amennyiben az előző szinteken az E vektorban található részmegoldásokat választottuk? Az előző példa esetében az F t mindig igaz (hiszen csak olyanokat soroltunk fel, akik megfelelnek az adott feladatra), az F k pedig akkor igaz, ha a megadott embert még nem választottuk más munkára

6 Rekurzív visszalépéses keresés Visszalépéses keresés egy lehetséges megvalósítása eljárás VisszalépésesKeresés(szint, címsz. E, címsz. van) i 0 ciklus amíg van i < M szint i i + 1 ha F t (szint, R szint,i ) akkor ha F k (szint, R szint,i, E) akkor E szint R szint,i ha szint = N akkor van igaz különben VisszalépésesKeresés(szint + 1, E, van) ciklus vége eljárás vége van hamis VisszalépésesKeresés(1, E, van)

7 Rekurzív visszalépéses keresés egymást kizáró részmegoldásokkal Amennyiben az egyes részeredmények páronként kizáróak eljárás VisszalépésesKeresés(szint, címsz. E, címsz. van) i 0 ciklus amíg van i < M szint i i + 1 ha F t (szint, R szint,i ) akkor k 1 ciklus amíg k < szint F k (szint, R szint,i, k, E k ) k k + 1 ciklus vége ha k = szint akkor E szint R szint,i ha szint = N akkor van igaz különben VisszalépésesKeresés(szint + 1, E, van) ciklus vége eljárás vége van hamis VisszalépésesKeresés(1, E, van)

8 Visszalépéses kereséssel kezelhető problémák osztályozása Részfeladatok egymást kizárják igen (ilyenkor használható az általános algoritmus) nem (erre láttuk a második algoritmust) Részmegoldások száma logikai változók minden részfeladatnál két lehetőség közül választhatunk M darab több előre rögzített feltétel közül választhatunk előzményfüggő egy adott helyen a lehetséges választások száma attól függ, hogy az előző szinteken milyen értékeket választottunk (ilyenkor úgy kell az F t függvényt módosítani, hogy az is hozzáférjen az eddigi részeredményekhez) Logikai átfedések, időzítés Backtrack Kölcsönösen kizáró Összetett feltétel M darab Előzményfüggő Logikai M darab Előzményfüggő 8 királynő, sudoku, feladat kioszt. szólánc hátizsák pakolás összetett feladatkiosztás optimális útkeresés, huszár útja

9 Problématér átalakítása A visszalépéses keresés általunk vizsgált algoritmusa egy vektor elemeinek keresi az értékét A feladatok azonban gyakran több dimenzióban vannak meghatározva, pl. töltsünk ki egy sudoku táblát helyezzünk el egy sakktáblán királynőket járjunk be egy sakktáblát egy huszárral Megoldási lehetőségek algoritmus módosítása: az i ciklus cseréje egy két vagy többdimenziós teret bejáró egymásba ágyazott ciklusokkal problématér átalakítása: az eredetileg többdimenziós problémát felírjuk egydimenziós formában (erre látunk példákat a következő diákon) 1,1 1,2 1,3 szint N = 6 2,1 2,2 2,3 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 3,1 3,2 3,3

10 8 királynő a sakktáblán Klasszikus feladat: helyezzünk el úgy 8 királynőt a sakktáblán, hogy azok ne üssék egymást A lehetséges elhelyezések száma meglehetősen nagy: 64 63 62 61 60 59 58 57 1,78 * 10 14 A visszalépéses keresés jól használható, mivel ha bármelyik két már lerakott királynő üti egymást, akkor nem is kell vizsgálni a többieket Problématér átalakítása: minden oszlopba pontosan egy királynőt kell elhelyeznünk, így valójában 8 darab 1..8 közötti számot keresünk, ez már egyszerű egydimenziós probléma A kölcsönösen kizáró algoritmus így már alkalmazható: N = 8 M i = 8 ; R i,j = j (i=1..8 ; j = 1..8) F t (i, r) = igaz F k (i, r, j, q) = akkor igaz, ha a sakk szabályai szerint az i,r és a j,q pozícióban lévő királynők nem ütik egymást

11 8 királynő a sakktáblán (2) Egy lehetséges elhelyezés F k megvalósítása: (x 1,y 1 ) és (x 2, y 2 ) helyen álló királynők akkor ütik egymást, ha az alábbiak közül bármelyik teljesül: x 1 = x 2 y 1 = y 2 x 1 - x 2 = y 1 - y 2

12 Huszár útja a sakktáblán Klasszikus feladat: egy fix kezdőpontból be lehet járni egy huszárral az egész táblát úgy, hogy minden mezőt pontosan egyszer érintünk? Egy huszár 8 irányba tud lépni, így az ellenőrizendő kombinációk száma: kb. 8 63 7,84 * 10 56 Visszalépéses keresés jól használható, mivel egy n-edik rossz lépés után nem kell foglalkozni az utána következő (63-n) darabbal Problématér átalakítása: tudjuk, hogy 63 lépésünk lesz, így a feladat valójában a 63 megfelelő irány megtalálása (minden lépésnél 8 lehetőség közül választhatunk) Az algoritmus előzményfüggő változata használható: N = 63 M i = 8 ; R i,j = a j. lehetséges lépés iránya (pl. 2 fel+1 balra, 2 fel+1 jobbra, stb.) F t megadott helyre léphet-e a huszár (táblán belül marad?). Mivel ez egy előzményfüggő feladat, itt az F t is megkapja az előző lépések értékét (E vektor), ami alapján tudja hogy épp hol jár, és ez alapján tud dönteni F k az előző lépések nem zárják-e ki az új helyet? (járt már ott?)

13 Sudoku feladat megoldó Egy 9x9-es táblázat tartalmaz előre beírt és üres mezőket. Az n darab üres mezőt kell kitölteni az alábbi szabályok szerint minden üres helyre egy szám írható 1..9 között egy sorban, illetve egy oszlopban nem szerepelhet kétszer ugyanaz a szám a tábla 3x3-as blokkokra oszlik, egy blokkon belül nem lehet kétszer ugyanaz Lineáris kereséssel a lépésszám: kb. n 9 Visszalépéses keresés jól használható, mivel ha két mezőbe beírt érték kizárja egymást, akkor a többi mezőt nem is kell vizsgálni Problématér átalakítása: maga a tábla kétdimenziós, azonban egy listába felsorolhatjuk az üres mezőket. Így megfelelően n darab részfeladatunk lesz, amelyekbe 1..9 közötti értéket keresünk Az algoritmus előzményfüggő változata használható: N = üres mezők száma M i = 9 ; R i,j = j (i=1..n ; j = 1..9) F t (i, j) az i. számú üres mezőbe beírható-e a j érték (a fix mezők alapján) F k (i,r,j,q) az i. üres mezőbe írt r szám nem zárja ki a j. üres mezőbe írt q-t

14 Sudoku feladat megoldó Kétdimenziós tábla átalakítása egydimenziós szerkezetté Ezzel a módszerrel jelentősen kibővíthető a visszalépéses kereséssel megoldható feladatok köre 1 2 3 3 5 2 4 8 1 2 4 1 8 3 1 3 Fix mezők: Üres mezők: (0,0) (0,2) (0,3) (1,0) (0,1) (0,4) (1,2) (1,3) Az egyes szinteknek az egyes üres mezők felelnek meg, ezek között kell keresni megfelelő számokat 1..9 között

Optimalizációs stratégiák 2. Visszalépéses keresés Visszalépéses kereséssel optimalizálás Szétválasztás és korlátozás

16 Minden megoldás kiválogatása Az első megoldás után nem állunk meg, keressük a többit eljárás VisszalépésesKeresés(szint, címsz. E, címsz. van, címsz. MIND) i 0 ciklus amíg van i < M szint i i + 1 ha F t (szint, R szint,i ) akkor ha F k (szint, R szint,i, E) akkor E szint R szint,i ha szint = N akkor van igaz MIND MIND E különben VisszalépésesKeresés(szint + 1, E, van, MIND) ciklus vége eljárás vége van hamis MIND VisszalépésesKeresés(1, E, van, MIND)

17 Optimális megoldás keresése Keresés helyett tulajdonképpen minimumkiválasztás eljárás VisszalépésesKeresés(szint, címsz. E, címsz. van, címsz. OPT) i 0 ciklus amíg van i < M szint i i + 1 ha F t (szint, R szint,i ) akkor ha F k (szint, R szint,i, E) akkor E szint R szint,i ha szint = N akkor ha van Jóság(E) > Jóság(OPT) akkor OPT E van igaz különben VisszalépésesKeresés(szint + 1, E, van, OPT) ciklus vége eljárás vége van hamis VisszalépésesKeresés(1, E, van, OPT)

18 Hátizsák probléma 0-1 hátizsák probléma Bemenete W max : hátizsák mérete N: rendelkezésre álló tárgyak száma w i : i. tárgy súlya p i : i. tárgy értéke Kimenete P max : egy optimális pakolás értéke Pakolás: tárgyanként meghatározzuk, hogy bekerül-e a zsákba vagy sem (pl. N elemű logikai tömb) Pakolás összsúlya/összértéke: a pakolás által a hátizsákba választott tárgyak súlyának/értékének összege Érvényes pakolás: olyan pakolás, amelynek összsúlya nem nagyobb mint a hátizsák mérete Optimális pakolás: olyan érvényes pakolás, amelyiknél nincs nagyobb összértékű érvényes pakolás

19 Hátizsákba pakolás A visszalépéses keresés használható: ha néhány tárgy együtt nem fér a hátizsákba, akkor az ezen az úton nem kell tovább vizsgálódni Az algoritmus előzményfüggő változata használható: N = tárgyak száma M i = 2 ; R i,1 = igaz (adott tárgy bekerül), R i,2 = hamis (adott tárgy nem kerül be) F t igaz, ha a tárgy önmagában belefér a zsákba F k igaz, ha az előző tárgyakkal együtt sem lépte túl a maximális méretet Az összehasonlíthatóság érdekében egyszerűsített algoritmust írunk Nincs külön M i és R i, hiszen minden szinten két részmegoldás van csak Az F t -t mindig igaznak tekintjük így el is hagyhatjuk (ha egy tárgy mégse férne be a zsákba, akkor az F k úgyis hamis lesz) A VAN változóra sincs szükség, mivel a kiinduló állapot (semmit se rakunk a zsákba) egy biztosan érvényes pakolást tartalmaz. Megállási feltételre pedig nincs szükség az optimalizáció miatt.

0-1 hátizsák probléma megoldása visszalépéses keresés segítségével szenasi.sandor@nik.uni-obuda.hu 20 függvény F k (szint, E) vissza ÖsszSúly(E) W max függvény vége eljárás Backtrack(szint, címsz. E, címsz. OPT) ciklus i 0-tól 1-ig E[szint] (i = 0) ha F k (szint, E) akkor ha szint = N akkor ha ÖsszÉrték(E) > ÖsszÉrték(OPT) akkor OPT E különben Backtrack(szint + 1, E, OPT) ciklus vége eljárás vége függvény HátizsákBT E [hamis,hamis,,hamis]; OPT [hamis,hamis,,hamis] Backtrack(1, E, OPT) vissza ÖsszÉrték(OPT) függvény vége

21 A visszalépéses keresés módszer értékelése Előnyei Jól áttekinthető, általánosan használható módszer Az oszd meg és uralkodj módszerhez hasonlóan a nyilvánvalóan felesleges részfeladatok vizsgálatát elkerüli Hátrányai A rekurzív hívások miatt az erőforrásigénye nagy lehet (persze megírható a backtrack iteratív formában is) Az átfedő részfeladatok esetén elképzelhető, hogy többször megoldja ugyanazt a részfeladatot Bizonyos feladatokra találhatunk jobb megoldást is

Optimalizációs stratégiák 2. Visszalépéses keresés Visszalépéses kereséssel optimalizálás Szétválasztás és korlátozás

23 Szétválasztás és korlátozás (branch and bound) Bizonyos feladatoknál a keresés közben nem csak azt tudjuk megállapítani, hogy egy úton lehet-e megoldás, hanem azt is, hogy ez a megoldás lehet-e jobb mint az eddig talált legjobb Ilyenkor használható jól a szétválasztás és korlátozás technika, amely során az alábbi két függvényre van szükség: Szétválasztási függvény: ennek szerepe, hogy egy bonyolult feladatot szétbontson egyszerűbb részfeladatokra (ez már ismerős lehet az eddigi technikákból) Korlátozó függvény: ez próbálja megmondani, hogy egy részfeladat megoldásának érdemes-e nekiállni. Általában egy felső becslést ad arra, hogy a megadott részfeladatnak mi lehet a legjobb eredménye. Ha még ezzel se járunk jobban, mint az eddigi optimum, akkor nem is kezd bele a vizsgálatba A hátizsákpakolásnál pl. megnézhetjük, hogy ha az összes hátralévő tárgyat bele tudjuk rakni a megmaradt szabad helyre, akkor jobb megoldást kapunk-e mint az eddigi legjobb ez egy felső becslés, ha már ez se igaz, akkor nem is érdemes vizsgálódni erre ha nem, akkor folytatni kell a rekurziót, hogy mi a tényleges részmegoldás erre

0-1 hátizsák probléma megoldása szétválasztás és korlátozás -sal függvény F b (szint, E) pfk 0 ciklus i szint + 1-től N-ig ha ÖsszSúly(E) + w i < W max akkor pfk pfk + p i ciklus vége vissza pfk függvény vége eljárás Backtrack(szint, címsz. E, címsz. OPT) ciklus i 0-tól 1-ig E[szint] (i = 0) ha F k (szint, E) akkor ha szint = N akkor ha ÖsszÉrték(E) > ÖsszÉrték(OPT) akkor OPT E különben ha ÖsszÉrték(E) + F b (szint,e) > ÖsszÉrték(OPT) akkor Backtrack(szint + 1, E, OPT) ciklus vége eljárás vége Az algoritmus többi része megegyezik az előző megoldással szenasi.sandor@nik.uni-obuda.hu 24

25 A szétválasztás és korlátozás módszer értékelése Előnyei A fentieknek megfelelően egy kellőképpen finomhangolt algoritmus nagyon sok felesleges lépést meg tud spórolni Nem csak a már rögzített részeredményeken alapul a továbblépés, hanem a még fel nem dolgozott részproblémákat is figyelembe veszi Hátrányai Csak megfelelően kiválasztott szétválasztó és korlátozó függvények esetében működik Megjegyzés A példaprogramban a visszalépéses keresés által adott algoritmust módosítottuk úgy, hogy egy korlátozó függvény is legyen benne. Ez természetesen más technikáknál is lehetséges Bár nehéz egyértelműen összehasonlítani az egyes technikákat, talán ezt tekinthetjük a leghatékonyabbnak, hiszen ez előrefele is néz a keresés során

26 Irodalomjegyzék Javasolt/felhasznált irodalom Pap, Szlávi, Zsakó: μlógia4 Módszeres programozás: Rekurzió, ELTE TTK, 2004 Rónyai, Ivanyos, Szabó: Algoritmusok, Typotex, 2005 Cormen, Leiserson, Rivest: Algoritmusok, Műszaki Könyvkiadó, 1997 Mehlhorn, Sanders: Algorithms and Data Structures, Springer, 2008 Szénási: Algoritmusok, adatszerkezetek II., Óbudai Egyetem, 2014