300 likes | 585 Views
Languages for Artificial Intelligence. Lecturer: J. Kolar Laboratory: J. Janousek, V. Rokos. J. Kolar Cooperation: J. Travnik Czech Technical University , Department of CS & Eng. Course References. S. Russell - P. Norvig: Artificial Intelligence: A Modern Approach. Prentice Hall, 2003.
E N D
Languages for Artificial Intelligence Lecturer: J. Kolar Laboratory: J. Janousek, V. Rokos. J. Kolar Cooperation: J. Travnik Czech Technical University, Department of CS & Eng Languages for AI – Lesson 1
Course References • S. Russell - P. Norvig: Artificial Intelligence: A Modern Approach. Prentice Hall, 2003. • http://aima.cs.berkeley.edu/ • S. Slade: Object-Oriented Common Lisp. Prentice-Hall 1998. • http://www.paulgraham.com/index.html (ANSI Common Lisp) • Bratko, I.:PROLOG Programming for Artificial Intelligence (3rd Ed). Addison-Wesley 2000. • http://cwx.prenhall.com/bookbind/pubbooks/bratko3_ema/ • ... and other resources, see http://service.felk.cvut.cs/courses/36JUI Languages for AI – Lesson 1
A Brief Course Overview • Introduction to Lisp • AI & Intelligent Agents • Processing symbolic data & recursion • Search and its implementation in Lisp • Lisp control structures & functionals • Lisp special functions & data structures • Game playing • Prolog • Constraint Satisfaction Problems Languages for AI – Lesson 1
Languages for AI Languages for AI – Lesson 1
The Role of Languages for AI Levels of knowledge-based systems Knowledge level Symbol level Algorithm & data structure level Programming language level Assembly language, Machine instruction, Microcode, and Hardware levels Languages for AI – Lesson 1
General Features of AI Languages • Support of symbolic computation • Flexibility of control • Support of exploratory programming methodologies • AI problems are initially poorly specified • solving approaches are domain-specific • heuristic methods are inherently empirical • structures & formalisms for AI representations are refined • modularity, extensibility, high-level constructs, fast prototyping, program readability, interpreted & compiled modes, ... • Dynamic binding and constraint propagation • A clear and well-defined semantics Languages for AI – Lesson 1
As an Example: Factorial Forever … • Versions 1 and 2: Iterative & recursive (Pascal) functionFactIt(N:integer):integer; var F,I:integer; begin end; functionFactRe(N:integer):integer; begin end; F:=1; for I:=1 to N do F:=F*I; FactIt:=F if N = 0 then fact:=1 else FactRe:=N*FactRe(N-1) Languages for AI – Lesson 1
(defun fact (N) (cond ((= N 0) 1) (T (* N (fact (- N 1)))) ) ) • Version 3:Lisp (recursive, of course!) • Version 4: Prolog (recursive, as well!) fact(1,0). fact(F,N):- N>0, N1 is N-1, fact(F1,N1), F is N*F1. Languages for AI – Lesson 1
A Lisp session example: • CL-USER 1 >(defun fact (n) • (cond ((= n 0) 1) • (T (* n (fact (- n 1)))) • ) ) • FACT • CL-USER 2 >(fact 5) • 120 • CL-USER 3 >(fact 10) • 3628800 • CL-USER 4 >(fact 120) • 6689502913449127057588118054090372586752746333138029810295671352301633557244962989366874165271984981308157637893214090552534408589408121859898481114389650005964960521256960000000000000000000000000000 Languages for AI – Lesson 1
Why Lisp ? • 1958-9 John McCarthy at MIT, a formal model of computation • Lisp attributes • simple (trivial) syntax • concise semantics • excellent medium for programming constructs & data structures • procedures can be manipulated as data, so ideal for writing interpreters & compilers • erases difference between “passive” data and “active” processes • Quoting Abelson & Sussman (Structure and Interpretation of Computer Programs): • Pascalis good for pyramids, static structures built by armies pushing heavy blocks into place • Lispis for building organisms, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place Languages for AI – Lesson 1
What Programming Is About? • Mastering complexity! • 3 foci that are involved • human mind • collections of programs • computer • "Programsmust be written for people to read, and only incidentally for machines to execute." • "Programming languageis NOT just a way of getting a computer to perform operations, BUT a novel formal medium for expressing ideas about methodology." • ... quoting Abelson & Sussman again Languages for AI – Lesson 1
Programming in Lisp • As any other powerful language, Lisp has • primitive expressions – represent the simplest entities that the language is concerned with 123 JOSEF ″This is a string″ • means of combination – needed to build compound expressions from simpler ones (+ 123 456) (cons ′JOSEF ′(IS MY NAME)) • means of abstraction – to name and manipulate compound objects, both for data and procedures (defun square (X) (* X X)) Languages for AI – Lesson 1
Primitive Expressions of Lisp • Primitive expressions of Lisp are calledatoms. • Atoms are of various kinds (types): • numbers are of the following types • real • float (short, single, double, long) • rational • ratio • integer (fixnum, bignum) • complex • symbols • strings • characters • ... Languages for AI – Lesson 1
(Arithmetic) Expressions in Lisp • (+ 1 2 3 4 5 6) • (* 1 2 3 4 5 6) • (/ 1 2 3) (* (+ 1 2) (- 3 4 5)) • +, -, 1+, 1-, INCF, DECF, *, /, EXPT, MOD, REM, FLOOR, CEILING, ROUND, ABS, SIGNUM, MAX, MIN • =, /=, <, >, <=, >=, MINUSP, PLUSP, ZEROP, EVENP, ODDP • SQRT, SIN, COS, TAN, EXP, LOG, ASIN, ACOS, ATAN • SINH, COSH, TANH, ASINH, ACOSH, ATANH • GCD, LCM, RANDOM • … and more … Languages for AI – Lesson 1
-18 (* 3-6) Evaluation Rules • When evaluating an (arithmetic) expression: • numbers evaluate to themselves • in a compound expression • arguments (sub-expressions) are evaluated first • then the operation / function is applied (* (+ 1 2) (- 3 4 5)) (+ 1 2) (- 3 4 5) Languages for AI – Lesson 1
Evaluation Rules • Lisp (as a rule) evaluates all arguments before the main function is applied to them. • ?How can we avoid that (if necessary for some reason)? • quote is the tool behind the apostrophe! • > (defvar X '(A B C)) • X • > X • (A B C) • > (setf X (C B A)) • Error: The variable B is unbound. • > (setf X (C 1 2)) • Error: Undefined function C called with arguments (1 2). • Syntactic sugar: • ' exp (quoteexp) same as(quote (A B C)) attempt to evaluateB Cconsidered a function Languages for AI – Lesson 1
Symbolic Expressions in Lisp • atoms123 MY_NAME "Josef " #\space • lists(1 2 3) (MY NAME IS (Josef Kolar)) () (s1 s2 ... sn) where s1, s2, ... sn (n0) are symbolic expressions of any kind • dotted-pairs (A . 1) ((FROM POPO TO) . IXTA) (s1 . s2 ) where s1, s2 are symbolic expressions of any kind • (* (+ 1 2) (- 5 3)) ...arithmetic expression / list • Both dataandprograms in Lisp have a form of • symbolic expressions Languages for AI – Lesson 1
dotted-pair:(A . B) A B (A B C) "cons-cell" A B C (A ((B) C)) A C B Data Representation in Lisp empty list:() = NIL Languages for AI – Lesson 1
Lisp Variables • (defvar A 11) • (defvar B 22) • (+ A B) • (/ (+ A B) (- A B)) • (1+ A) • (incf A) • (setf A (+ A 5)) • variable – a name used to refer some object (value) • (global) environment - memory that keeps track of name → value pairs • many different environments are established during program execution • evaluation rule for a variable – the object associated with the name at the actual time in the (corresponding/actual) environment Languages for AI – Lesson 1
Function Definition in Lisp • (defun square (X) (* X X)) • To square something, multiply it by itself • (defun name (formal_parameters) body) • (defun sum-of-squares (X Y) • (+ (square X) (square Y))) • (defun hipotenusa (A B) • (sqrt (sum-of-squares A B))) • We needmore constructs in order to extend the expressive power of procedures we define. Languages for AI – Lesson 1
Conditional Expressions and Predicates • x if x>0 • abs(x) =0 if x=0 • -x if x<0 • (defun abs (X) (defun abs (X) • (cond ((> X 0) X) (if (> X 0) X • ((= X 0) 0) X • ((< X 0) (- X)) (if (= X 0) 0 (- X)) • ) ) ) ) • (cond (p1 e1) (if predicate • (p2 e2) consequent • ... alternative ) • (pn en) ) • =, /=, <, >, <=, >=, MINUSP, PLUSP, ZEROP, EVENP, ODDP Languages for AI – Lesson 1
More about Predicates • Predicate (Boolean) valuesin Lisp : • NIL (false) T or anything NIL(true) • 10 X 20: (and (<= 10 X) (<= X 20)) or directly (<= 10 X 20) • (and p1 p2 ... pn) (or p1 p2 ... pn) (not p) • Predicates and, ortake any number of arguments and have • a special rule of evaluation: • and– evaluate arguments from the left until the first NIL value or arguments exhausted, the resulting value is NIL or the last argument • or– evaluate arguments from the left until the first non-NIL value or arguments exhausted, the resulting value is the first non-NIL or NIL • Examples ... Languages for AI – Lesson 1
Example: Calculating Square Roots • Declarative description (what is): • x = the y such that y 0 and y2 = x • Imperative description (how to): • Newton's method – successive approximations, a guessed y is improved averaging y and x / y • x = 2 : guess y 1 1.5 1.4167 1.4142 • quotient x/y 2 1.3333 1.4118 • average 1.5 1.4167 1.4142 • (defun sqrt-iter (guess x) • ;(format t "~5t x: ~5t~f~5tGuess: ~5t~f~%" x guess) • (if (good-enough? guess x) • guess • (sqrt-iter (improve guess x) x) • ) ) • Lisp is not case-sensitive! Languages for AI – Lesson 1
(defun improve (guess x) • (average guess (/ x guess)) • ) • (defun average (x y) • (/ (+ x y) 2) • ) • (defun good-enough? (guess x) • (< (abs (- (square guess) x)) 0.001) • ) • (defun my-sqrt (x) • (sqrt-iter 1.0 x) ; what if we put just 1 instead? • ) ; ratio arithmetics • We can play a bit with Lisp ...what happens if ... • (defun my-if (p c e) • (cond (p c) • (t e) • ) ) Languages for AI – Lesson 1
Processing Symbolic Expressions • How to process lists and dotted pairs? • (1 2 3 4) (A B C D E) (MI . MA) • We have • selectors(cars)(cdrs)(nth ns )and more ... • (AB C D E) • constructors(conselm s)(lista b…)and more ... • predicates(atom s) (eq a b) or eql, equal (null s) = (eq s NIL) ... • Examples: Languages for AI – Lesson 1
(defun swap1 (S) ; interchange the first and second • (cons (car (cdr S)) ; cadr • (cons (car S) (cdr (cdr S))) ; cddr • ) ) • (defun swap2 (S) ; interchange the first and second • (cond ((null S) NIL) ; if S empty • ((null (cdr S)) S) ; if just one elm • (T (cons (car (cdr S)) ; now safe • (cons (car S) • (cdr (cdr S)) • ) ) ) ) ) • (defun swap3 (S) ; interchange the first and second • (cond ((null S) NIL) • ((null (cdr S)) S) • (T (cons (cadr S) • (cons (car S) • (cddr S)) • ) ) ) ) ) Languages for AI – Lesson 1
(defun select-atoms (S) ; select all atoms of S • (cond ((null S) NIL) • ((atom (car S)) • (cons (car S) (select-atoms (cdr S)))) • (T (select-atoms (cdr S))) • ) ) • (defun test-positive (S) ; test if all elms >0 • (cond ((null S) T) • ((plusp (car S)) • (test-positive (cdr S))) • (T NIL) ; can be omitted • ) ) • And what about looking for the maximal element ... Languages for AI – Lesson 1
(defun my-max1 (S) ; calculate maximum elm • (if (null S) • 'ErrorMax • (my-max-iter (car S) (cdr S)) • ) ) • (defun my-max-iter (TempMax S) • (cond ((null S) TempMax) • ((> (car S) TempMax) • (my-max-iter (car S) (cdr S))) • (T (my-max-iter TempMax (cdr S))) • ) ) • ;; now find the difference • (defun my-max2 (S) ; calculate maximum elm • (cond ((null (cdr S)) (car S)) • ((> (car S) (my-max (cdr S)) • (car S)) • (T (my-max (cdr S))) • ) ) Languages for AI – Lesson 1