agens orelesingsplan : time 1 Metoe or å lære ny algoritme Gjennomgang av ybe-først-søk 5-10 min, Sune Gjennomgang av teori-øving 2 5-10 min, Sanve Presentasjon av teori-øving 3 5-10 min, Sanve Se litt på kjøretis-analyse Ti 10-15 min, Sanve Forstå hva algoritmen skal gjøre Se på begreper algoritmen innører Se på pseuokoe av algoritmen Gå gjennom et enkelt eksempel Implementere selv i java.eks Til slutt bruke algoritmen til å løse et praktisk problem. ybe-først-søk : Labyrint ybe-først-søk : Krigsstrategi Vil utorske labyrinten i yben FS: ta et rai BFS: ta en og en sone Labyrinten vil representere graen Noe: to ganger møtes, blinvei, utgang Kant: vei mellom to noer Veren vil representere graen Noe: et lan eller en by Kant: grense mellom to lan ybe-først-søk : Rekursjon ybe-først-søk : va 4 1 3 2 8 5 7 6 ersom graen er et tre kunne vi løst FS me kun rekursjon Sien en generell graen kan innehole sykler trenger vi en mekanisme or å hinre å gå i sykler Fargelegging av noer ybe-først-søk er en strategi or å utorske en gra Utorsker graen i yben Kanter blir utorsket ra en siste oppaget noen v (LIFO-kø) Når alle kantene til v har blitt utorsket, går en tilbake til noen som v ble oppaget ra Tar i bruk rekursive metoekall
ybe-først-søk : Begreper Bruker argelegging slik som BFS Alle noer starter me å være hvite eretter arget grå når e blir oppaget Når e er erig utorsket blir e arget sorte Innører også begrepet timestamp iscovery time, Finishe time, Globale or graen B A vilken type gra har vi? E F G A E G B F B F Vi har en rettet gra 3
5 2 7 F 1 8 G 1 8 G 2 7 F 2 7 9 vilken atastruktur blir brukt? Kø eller Stack?
1 8 G 1 8 11 G 1 12 8 11 G 1 12 8 11 13 vor skal vi gå nå? 1 12 8 11 13 1 12 8 11 13 14 14 15
Graen er nå erig traversert 1 12 8 11 13 16 14 15 FS : Pseuokoe FS(G)// selve algoritmen or each u V[G] u->color = WITE; time = 0; or each u V[G] i (u->color == WITE) FS_Visit(u); // kalles hver gang // ny noe oppages FS_Visit(u) // behanler // aktiv noe u->color = GRAY; time = time+1; u-> = time; or each v Aj[u] i (v->color == WITE) FS_Visit(v); u->color = BLAK; time = time+1; u-> = time; FS : Pseuokoe på norsk FS(G) argelegg alle noene hvite sett ti lik 0 gå gjennom alle noene ersom noe er hvit FS_Visit(u); // kalles hver gang // ny noe oppages FS_Visit(u) // behanler // aktiv noe argelegg noe grå; oppater ti me 1 sett noens lik ti gå gjennom alle naboer ersom nabo er hvit FS_Visit(v); sett noe til svart; oppater ti me 1; sett noens lik ti FS : Egenskaper Gir veriull inormasjon om graen Subgraene ormer en skog av tre, er hvert tre gjenspeiler strukturen i rekursive kall ar parantes-struktur, kan utrykke velormulerte uttrykk Kan lett sjekke om et innes en vei ra en noe til en annen noe ybe-først-søk : Kanter FS skiller e ulike kantene i: Tree ege: oppager ny noe (hvit) Back ege: ra grå til grå noe Kan tree ege anne sirkler? Kan back ege anne sirkler? ybe-først-søk : Kanter 1 12 8 11 13 16 14 15 Tree eges Back eges
ybe-først-søk : Kanter Teorem: ersom en urettet gra er asyklisk, inneholer FS ingen back eges Kan erme bruke FS til å inne ut om graen inneholer løkker Merk: asyklisk gra er lik ingen sykler i gra va synes ere? Er ette en grei måte å presentere nye algoritmer på? Går jeg or sakte rem? For sent? Synes ere jeg skal ortsette me ette? Jeg blir nok bere etter hvert nervene har roet seg Fint ersom re.gruppe gir kommentarer ere skal være invitert til stu.ass møte 1415 Powerpoint-presentasjoner ligger nå ute Gå gjennom algoritmen selv i eget tempo