HJEMMESIDE FOR SLI 330
Dette er kurset som tidligere het SLI 11
Eksamensoppgave i SLI 11 - høst 1998 og datafilene DATA.TXT og KRITIKK.TXT
Eksamensoppgave i SLI 330 - vår 1999
Jeg har lagt ut noen filer til eksamensoppgaven
Meldinger
Uke 4
En første innføring i Common Lisp. Se på part I av boka - og spesielt koden i kapittel 2. Jeg viste hvordan en kunne lese inn / skrive ut på filer med Common Lisp - og med det kunne editere store filer. Kode for det er i løsning for eksamensoppgavene i fjor.
Uke 5
Vi ser på General Problem Solver - det første AI-programmet. Viktige punkter
Legg merke til der vi gjør ting forskjellig fra vanlig søk. Det kan være nødvendig av effektivitetsmessige grunner - men gir samtidig ekstra problemer. Herbert Simon om bounded rationality.
Uke 6
Eliza - og bruken av pattern matching. I arbeidet med kunstig intelligens (AI) kan det være viktig å se på utvelgelsen av kunstige omgivelser (AE) som gir en kontekst for eksekveringen av programmet.
Uke 7
Det viktigste denne uka er å lære seg datadrevet program - slik det er gitt ved pattern-matching eksempelet i boka. Prøv å tenk deg turing mannen som en som bruker en manual for å finne ut hva han skal gjøre.
Uke 8
Dere skal arbeide på en større oppgave. Her er noen punkter
Det blir ikke vanlige forelesninger, men jeg vil stort sett være på kontoret og vil være tilgjengelig.
Uke 9
Oppgavene fra forrige uke skal dere fortsette med. Legg inn nye muligheter etter hvert som vi går videre i kurset.
Vi tar for oss både kapittel 8 og 9. Det er to ting vi skal lære
Spesielt i kapittel 9 tar en for seg spesielle problemer med å lage matematikk programmer. Her er vi bare interessert i dette som en oppgave i symbolmanipulering og ikke som matematikk. Noen nye Lisp konstruksjoner
Uke 10
To store temaer i jakten på effektive programmer - memoisering og kompilering. For memoiseringen prøv å forstå følgende kode fra boka (sidene 273, 274, 275)
(defmacro defun-memo (fn args &body body) "Define a memoized function." `(memoize (defun ,fn ,args . ,body)))
(defun memo (fn &key (key #'first) (test #'eql) name) "Return a memo-function of fn." (let ((table (make-hash-table :test test))) (setf (get name 'memo) table) #'(lambda (&rest args) (let ((k (funcall key args))) (multiple-value-bind (val found-p) (gethash k table) (if found-p val (setf (gethash k table) (apply fn args))))))))
(defun memoize (fn-name &key (key #'first) (test #'eql)) "Replace fn-name's global definition with a memoized version." (clear-memoize fn-name) (setf (symbol-function fn-name) (memo (symbol-function fn-name) :name fn-name :key key :test test)))
(defun clear-memoize (fn-name) "Clear the hash table from a memo function." (let ((table (get fn-name 'memo))) (when table (clrhash table))))
For kompilering - forstå hvordan en kompilerer et regelbasert system (side 275, 276).
Dette er kjernepunktene i kapittel 9 - og gir de kodebitene dere skal skjønne ordentlig.
Uke 11
Vi ser på lisp-relaterte problemer - for mye consing og hvordan unngå dette. Lær multiple-valued functions. Prøv å bruke funksjonen get-decoded-time .
Vi ser nærmere på koden for Beyers base.
Uke 12
Prolog - fra kapittel 11 en interpret og fra kapittel 12 en kompilator. Jeg regner med at dere kan en del om prolog. Fra interpreten ta med følgende
Så til kompilatoren. Dette er en av de vanskeligste kodebitene i boka. Arbeid ordentlig med å forstå den.
Uke 13 - Påskeferie
Uke 14 - bare onsdag
Vi lærer oss grunnleggende programmering i CLOS. Bakgrunnsstoff fra
Dere skal lære om
Uke 15
Ekspertsystemer - kapittel 16. Vi sammenligner ekspertsystemer med regelbaserte systemer lagd i Prolog. Følgende punkter var viktige
Det er to hovedmåter å behandle usikkerhet på. Den sannsynlighetsteoretiske har en klar tolking, men er vanskelig å forene regnemessig med et regelbasert system. Den utsagnslogiske behandling av usikkerhet har en uklar tolking, men lar seg lett forene med et regelbasert system. Vi ser på MYCIN der en bruker sikkerhetsfaktorer.
Mekanismer for å forklare slutninger skalerer dårlig opp i overgang fra små til store systemer.
Prolog-variable er for generelle til at en kan behandle dem så effektivt som er ønskelig. Vi ser i MYCIN på hvilken informasjon en variabel skal ha - vi kan tenke dem som et skjema med fast plass for utfylling av noen verdier. Dette blir kodet inn direkte i MYCIN.
MYCIN har i tillegg caching av informasjon alt utledet og et system som stiller spørsmål om en mangler informasjon for å utføre slutninger.
Vi begynner også såvidt på spilleprogram for Othello.