3. A mélységi kereső algoritmus
A mélységi kereső algoritmus széleskörben használt olyan nehéz feladatok megoldásainak keresésére, mint az útvonalkereső algoritmusok. A legtöbb kifejlett algoritmus alapját ez adja. A lényege, hogy a keresést elindítjuk egy irányban, amit addig követünk, amíg zsákutcába nem jutunk, vagy megoldáshoz. Ezen kívül viszont az összes lehetőséget elmentjük, amerre még folytathattuk volna a keresést egy döntésnél. Ha megakadunk egy ágon, akkor az ahhoz legközelebbi döntés egy másik irányában próbálkozunk.
Bemenet: A böngésző munkaterületén kialakított, pontokat (amelyek városokat jelölnek) tartalmazó játéktér, amelyen a pontok között különböző súlyú élek mennek (súlyozott gráf). A példában az élek színe jelöli a súly, a zöld élek a rövidek, a pirosak a hosszúak.
Kimenet: A start (piros) és end (kék) városok közötti útvonal legrövidebb útvonal, vagyis ahol a használt élek összsúlya a legkevesebb.
Változók: A pontok és élek adatai, tömbökben tárolva.
Algoritmus: Nyilvántartunk egy listát, ahol az elkezdett, de még be nem fejezett útvonalakat tároljuk. Kezdetben csak egy félkész útvonalat tartalmaz, ami egy pontból áll, a start-ból. Amíg a lista ki nem ürül, addig mindig kiválasztunk belőle egy félkész útvonalat, amit meghosszabítunk. A meghosszabítás azt jelenti, hogy kiválasztjuk az összes lehetőséget (élet), amerre az útvonalat az utolsó csúcsból folytatni tudjuk, és még nem jártunk a végpontban. Az összes új, ilyen módon generált félkész útvonalat a listába helyezzük. Amennyiben egy útvonalon eljutunk a célba, úgy egy befejezett útvonalat kapunk. A befejezett útvonalak közül elegendő csak a legrövidebbet eltárolni, hiszen erre lesz szükségünk, mint megoldás. A mélységi keresés úgy fog megvalósulni ezzel az algoritmussal, hogy mindig azt az útvonalat választjuk ki a listából, amit legutóbb tettünk bele. Ez legegyszerűbben úgy valósítható meg, ha mindig a lista végéről választjuk ki az útvonalakat, és a lista végére is tesszük az újakat.
Eseménykezelés: Az onclick esemény bekövetkezésekor végrehajtandó metódusokat a hitTest() függvényből hívjuk meg.
Az alábbiakban rendszerezzük a megoldáshoz szükséges ismereteket. A platformfüggetlen megoldás elkészítéséhez gyakorlatilag egy böngésző programra, és esetleg egy egyszerűbb editorra van szükség. A lecke mintaprogramja a böngészőben kipróbálható és módosítható. Indátásához kattintsatok a forráskód alatti "Próbáld ki! »" gombra.