On the AIMA site, http://aima.cs.berkeley.edu,there is there the
information that:
``Prolog code from Ivan Bratko's book "PROLOG Programming for AI" can be
obtained by contacting the author at ivan.bratko@....''
but the e-mail of Professor Ivan Bratko is an invalid, not up-to-date
pointer, as witnesses the following reply from the European Internet
mailing system:
----------------------------------------------------------------------
Mail Delivery Subsystem mailer-daemon@...
17.44 (2 minuuttia sitten)
-> minä
Delivery to the following recipient failed permanently:
ivan.bratko@...
Technical details of permanent failure:
DNS Error: Domain name not found
----- Original message -----
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:date:message-id:subject:from:to:content-type;
bh=8TuTx+S77tp37aTM7vIDlFCV92sa3AmYtbrInc+MikQ=;
b=h5aTErIVg4ZMUmNyKQ4G2+n8nITzVuN6jKrpenVjGNJmEd0bCFUf5q9rrNlscqTxEm
3wu67+0auViaJ4J8uRFOScrZ4EgORvsvqJHHPK1e1wnxzumhgknIEdGq4Ej7Ybwf0ClF
eylveq57lwuVWwMRekBl9orSpprcGpOrZN+/BxYv4+yGevKCP2fHErw+Wi+ZDM/ItqbS
aaKRgQDb7INVnYSiFLRGUkczmoiRslGrhz5TizVGb8mMhrxMvRlN409CEJ4TS6KWGHbV
nNOlcjFBbDWNd5ms0b9AslMRGPR+66JNP6GqA0TBA6rWnX6uR+Z72na9L+XZpph/UsFy
wZjw==
MIME-Version: 1.0
Received: by 10.60.1.40 with SMTP id 8mr18546348oej.70.1341326660669; Tue, 03
Jul 2012 07:44:20 -0700 (PDT)
Received: by 10.182.119.34 with HTTP; Tue, 3 Jul 2012 07:44:20 -0700 (PDT)
Date: Tue, 3 Jul 2012 17:44:20 +0300
Message-ID: <CANXWPD2O4ZFmTo2i9qifnttLBmWmu_hqK94v7nR9ivsfzs9gPQ@...>
Subject: On the book "PROLOG Programming for Artificial Intelligence"
From: Antti Ylikoski <antti.ylikoski@...>
To: ivan.bratko@...
Content-Type: text/plain; charset=ISO-8859-1
----------------------------------------------------------------------
I do know that Prolog is not one of the languages that are
"officially" supported for the AIMA book software, but I feel that it
would be nice if the e-mail of Professor Bratko were correct at the
AIMA site.
The correct e-mail address can be found from his www pages with the
aid of the Google: it is
bratko @fri.uni-lj.si
(how handy have computers made this world!!!!)
kind regards, Antti J Ylikoski
Helsinki, Finland, the E.U.
``Prolog code from Ivan Bratko's book "PROLOG Programming for AI" can be
obtained by contacting the author at ivan.bratko@....''
but the e-mail of Professor Ivan Bratko is an invalid, not up-to-date
pointer, as witnesses the following reply from the European Internet
mailing system:
I do know that Prolog is not one of the languages that are
"officially" supported for the AIMA book software, but I feel that it
would be nice if the e-mail of Professor Bratko were correct at the
AIMA site.
The correct e-mail address can be found from his www pages with the
aid of the Google: it is
The Definite Clause Grammars constitute an elegant and concise
formalism for Natural Language Processing. In the literature that I
have seen, they are primarily being applied for English, and I have
not seen applications for inflected languages such as Latin, Greek,
Finnish, Japanese, or Russian. (But I'm not saying that there would
exist no such applications -- I did not carry out any literature
research.)
Recently I discovered that it is, in Prolog, possible to apply the DCG
formalism as well to inflected languages by means of the "name(Word,
CharCodeList)" and atom_codes/2 predicates, which can be used to
explode and implode atoms into the form of character lists and
character lists into the form of atoms, which atoms will be understood
by the DCG formalism. Then, the character lists can be arbitrarily
manipulated to inflect word stems.
As to DCGs for systems written in LISP: the EXPLODE and IMPLODE
functions existed in MACLISP, but I understand that for efficiency
considerations they have been left out of Common LISP. "Premature
optimization is the root of all evil!" Those functions convert
symbols to single-character character lists and vice versa,
respectively. They can be defined in Common LISP as follows:
----------------------------------------------------------------------
;;; MACLISP had EXPLODE and IMPLODE..................
;;; AJY 2011-12-03.
(defun explode (sym)
(map 'list #'(lambda (c)
(intern (make-string 1
:initial-element c)))
(symbol-name sym)))
(defun implode (lst)
(intern (with-output-to-string (s)
(loop for item in lst
do (princ item s)))))
----------------------------------------------------------------------
For an inflected language, see, as a practical example, Finnish:
http://en.wikipedia.org/wiki/Finnish_languagehttp://en.wikipedia.org/wiki/Finnish_grammar
(Finnish is an Altaic language, which language group derives its name
from the mountain range of Altai in Asia. According to the Wikipedia,
Finnish is related to Estonian, Hungarian, Turkish, and as an Altaic
language, Japanese.)
Now for DCG's for inflected languages in Prolog. The Finnish plural
form of a noun is formed by appending a letter "t" into the word, and
in certain cases inflecting the noun stem. This is easy to do by
exploding and imploding atoms, processing lists, and interfacing the
resulting atoms to the DCG grammar. The trick is standard Prolog:
----------------------------------------------------------------------
% AJY 2012-07-03.
%
% Some Definite Clause Grammars in Prolog.
sentence --> noun_phrase, verb_phrase.
noun_phrase --> determiner, noun.
noun_phrase --> proper_noun.
% .........................
proper_noun --> ['Antti'].
proper_noun --> ['Hanna'].
proper_noun --> ['John'].
proper_noun --> ['Richard'].
% ..................
% ........................
% ..............................
% Handle inflected languages with DCG's.
%
% AJY 2012-07-03.
finnish_plural(SingularWord, Plural) :-
atom_codes(SingularWord, List1),
atom_codes(t, LetterT),
append(List1, LetterT, PluralList),
atom_codes(Plural, PluralList), !.
finnish_singular(Plural, SingularWord) :-
atom_codes(Plural, List1),
atom_codes(t, LetterT),
append(SingularList, LetterT, List1),
atom_codes(SingularWord, SingularList), !.
----------------------------------------------------------------------
regards, Antti J Ylikoski
Helsinki, Finland, the E.U.
antti.ylikoski@...
http://www.hut.fi/~ajy/
the Microsoft PowerPoint slides series that I created to lecture about
my doctoral research:
http://www.hut.fi/~ajy/On_AI_and_TCS.pptx
the so far unfinished manuscript:
http://www.hut.fi/~ajy/diss.pdf
Hey there,
i`ve read through the german edition of AIMA, so please excuse if i don't always
use correct english
terminology.
Chapter 17 describes how to calculate utilities for a process with
non-deterministic, but defined states.
I'm currently working on an agent which can be decribed as follows:
- The agent works in a fully observable environment
- The actions have a probalistic outcome
The agent has to decide in regular timeframes (e.g. one-minute) whether or not
to buy a certain good. The good
the agent has to buy is used from a process. The amount of usage is given by a
trend-function overlayed with a
normal distributed function (this means the the mean of the usage is always
known but uncertain; the
uncertainity is given by the variance of the overlayed normal distributed
function).
The price for the good also follows a trendfunction overlayed by a normal
dictributed function. If the agent
buys goods which are not used just in time there are costs for the warehouse.
The agent's objective is to assure that the using process always has enough
goods to use and to buy the goods
as cheap as possible. If the agent fails to satisfy the process's need there is
a high penalty. The agent can
only buy a given amount of the good at a time (the value is given by the current
state of the warehouse and is
known by the agent but also uncertain for the future; there is a known maximum
of goods the agent can buy at a
time).
My approach is to build an infinite binomial decision tree (actions: buy or not
buy). The states are uncertain
and described by the above stated probalistic functions).
I think the utilities for every sequence of actions can be calculated using the
bellman functions. However i'm unsure how to use these functions with
probalistic outcomes.
Any hints or ideas?
Kind regards.
Sebastian
Hi everyone,
in Fig. 3.17 page 88 (3rd ed.) we have got a version of DLS algorithm,
after putting some attention on it, i realized that the output is cutoff all the
time-if it does not find the solution in that depth limit of course. what does
it mean to return failure?!
Am I correct? or is there any misunderstanding?
Regards,
Saman .M.G.
Hi everybody,
As I went through the algorithm, I found that failure is happened if
RECURSIVE-DLS, for example, faces an empty node when value of limit is not zero.
For example, failure can happen if the value of limit is greater than depth of
the search tree and algorithm faces an empty node.
I wish my undrestanding would be correct!
Regards,
Arash
--- In aima-talk@yahoogroups.com, "spsycoder" wrote:
>
> Hi everyone,
> in Fig. 3.17 page 88 (3rd ed.) we have got a version of DLS algorithm,
> after putting some attention on it, i realized that the output is cutoff all
the time-if it does not find the solution in that depth limit of course. what
does it mean to return failure?!
>
> Am I correct? or is there any misunderstanding?
>
> Regards,
> Saman .M.G.
>
As I went through it, I found that failure has different meaning of cutoff. It means, failure is happened if RECURSIVE-DLS, for example, faces an empty node when value of limit is not zero. In the other words, value of limit is sometimes greater than depth of the search tree.
I wish my undrestanding would be correct!
Regards,
Arash
--- On Tue, 1/15/13, spsycoder <spsycoder@...> wrote:
From: spsycoder <spsycoder@...> Subject: [aima-talk] A question about limited-depth search output? To: aima-talk@yahoogroups.com Date: Tuesday, January 15, 2013, 2:00 PM
Hi everyone, in Fig. 3.17 page 88 (3rd ed.) we have got a version of DLS algorithm, after putting some attention on it, i realized that the output is cutoff all the time-if it does not find the solution in that depth limit of course. what does it mean to return failure?!
Hello,
Ive recently joined this group. Hope to learn more from AIMA libraries. Is there
any chance I could get a small example of how to use the libraries in java.
I have this project of AI in which I have to try implementing any search
libraries to get to the solution of my problem, if its possible.Its not sure if
the libraries will work.
The project consists of inserting n numbers and x number to get to it by
different mathematical operations.
For example:
Numbers inserted: 10 2 30
Final number: 600
Solution: 10*2= 20
20*30= 600
I will be thankful if anyone has any example it does not matter if its related
to my topic. I just need some way to start this.
Thank you
Greetings