ALGORITM

"Misjonärid ja inimsööjad" on realiseeritud PHP skriptimiskeeles ning kirjutamisel kasutati Java IDE Eclipse lisa PDT.

Teadmuse esitust käesolevas programmis võib esitada mitut moodi. Võiks öelda, et tegemist on freimidega, kuna esitus on PHP klass kujul:
NIMI
   SLOT1: VÄÄRTUS
   SLOT2: VÄÄRTUS
   ...
kusjuures nimeks on State, slotid on nimedega ml, cl, b ja p, ning väärtusteks vastavalt vasakul kaldal olevate misjonäride arv, vasakul kaldal olevate inimsööjate arv, paadi asukoht ning viide vanemelemendile (olemas on ka Game klass, mille esitus on sarnane State klassiga ning mida saab lähemalt uurida koodis). Selline kujutus vastab IT terministandardi sõnastiku 'freim' definitsioonile. Kui aga vaadata freime veidi kitsamalt, siis näeme, et freimid on andmestruktuurid, millega tehakse operatsioone, mitte mis ise teevad operatsioone[1]. Protseduurid on küll võimalikud, kuid need kutsutakse välja slottides ning on enamasti kuularid. Siin kasutatavad klassid on aga võimelised ise looma uusi süsteeme ning nendega opereerima. Seega võiks vaielda ja öelda, et tegemist on objektipõhise teadmuse esitusega.

Sellel leheküljel on toodud ülevaatlik kirjeldus algoritmi tööst. Tegeliku implementatsiooni nägemiseks palun laadige mängu kood enda arvutisse SIIT ning avage see mõne tekstiredaktoriga (nt. Notepad).

Lahenduse leidmisel kasutatakse süvitiotsingut (depth-first search). Selle eeliseks on väiksem ruumikasutus, kuid probleemi lahend ei ole tihti optimaalne.

Algoritm teeb iga käivituskorra ajal läbi järgmised sammud:

Seega leitakse vastus juba programmi esimesel käivitamisel. Kui lahendus leiti, on tulemuseks seis, kus vasak kallas on tühi, paat on paremal pool ning seisu "vanemate" kaudu on võimalik leida tee juurseisuni. Seda teed on vaja lahenduse väljajoonistamiseks kasutajale. Kui lahendust ei leitud, antakse lahenduse muutujale väärtus x. Sel puhul palutakse kasutajal uued andmed sisestada. Lahenduse kuvamiseks läbitakse järgmised sammud:

HTML lehe joonistamise eest hoolitseb javascript.

[1]: Artificial intelligence: a guide to intelligent systems - Michael Negnevitsk