Search mechanisms in prolog - artificial intelligence, Computer Engineering

Search mechanisms in Prolog

We can utilize this simple Prolog program to describe how Prolog searches:

president(X) :- first_name(X, georgedubya), second_name(X, bush).

prime_minister(X) :- first_name(X, maggie), second_name(X, thatcher).

prime_minister(X) :- first_name(X, tony), second_name(X, blair).



second_name(tonyblair, blair).

second_name(georgebush, bush).

If we loaded this into a Prolog implementation likeSicstus, and queried the database:

?- prime_minister(P).

then in the following mannerSicstus would search: it would run through it's database until it came across a Horn clause (or fact) for which the head was prime_minister and the arity of the predicate was 1. It would first search at the president clause and reject this because the name of the head does not match with the head in the query. Next it would find that the clause, through:

prime_minister(X) :- first_name(X, maggie), second_name(X, thatcher).

fits the bill. It would then lookin the body of the clause at the predicates and see if it could satisfy them. In this instance, it would try to find a match for first_nameX, maggie). However, it would fail, because no this type of information may be found in the database. That means that the total clause fails, and Sicstus would backtrack, for example, it would go back to looking for a clause with the same head as the query. Of course, it would next find this clause:

prime_minister(X) :- first_name(X, tony), second_name(X, blair).

Then it would look at the body again, and try to discover a match for first_name(X, tony). It would look through the database and   discover   X=tonyblaira  good  assignment,   because  the   factfirst_name(tonyblair, tony) is got towards the end of the database. Similarly, having assigned X=tonyblair, then it would search for a match to: second_name(tonyblair, blair), and would succeed. So, the answer tonyblair would make the query succeed, and this would be reported back to us.

The essential thing to remember is that Prolog implementations search from the top to the bottom of the database, and in the body try each term of a clause in the order in which they appear. We say that Sicstus  has  verified  the  query  prime_minister(P) by  finding  something  which  satisfied  the declaration of what a prime minister is: Tony Blair. It is also good to remembering that Sicstus assumes negation as failure. This means that if it cannot verify a predicate, then the predicate is false. So the query is:

?- \+ president(tonyblair).

Returns an answer of 'true', because Sicstus cannot prove that Tony Blair is a president.

Posted Date: 10/2/2012 7:19:04 AM | Location : United States

Related Discussions:- Search mechanisms in prolog - artificial intelligence, Assignment Help, Ask Question on Search mechanisms in prolog - artificial intelligence, Get Answer, Expert's Help, Search mechanisms in prolog - artificial intelligence Discussions

Write discussion on Search mechanisms in prolog - artificial intelligence
Your posts are moderated
Related Questions
If quicksort is so quick, why bother with anything else? If bubble sort is so bad, why even mention it? For that matter, why are there so many sorting algorithms?

What are the dynapro keywords? FIELD, MODULE, SELECT, VALUES and CHAIN are the dynapro keywords

Explain difference between Dynamic and static binding. Dynamic and static binding: Dynamic binding is a binding performed after the execution of a program has immediately beg

Given a RAID 5 (block-level distributed parity) with k disks, how well will large block trnsmitted work? How well will it handle a high I/O request rate? Evaluate the performance t

What guarantees the integration of all application modules? The R/3 basis system guarantees the integration of all application modules.  The R/3 basis s/w gives the run time e

Q. Implementation of BUS Construction of a bus system for four registers employing 4×1 multiplexers is displayed below. Every register has four bits which are numbered 0 throug

Simplify the Boolean expression F = C(B + C)(A + B + C). Ans. Simplification of the given Boolean Expression F = C (B +C) (A+B+C) given as F = C (B+C) (A+B+C) = CB + CC [(A+B+C

Explain the Modularity of Object oriented analysis Modularity is closely attached to encapsulation; you may think of it as a way of mapping encapsulated abstractions into phys

A three stage network is designed with the following parameters: M=N=512, p = q = 16 and α = 0.65. Calculate the blocking probability of the network, if s=16. Symbols carry th

What is a Development class? Related objects from the ABAP/4 repository are assigned to the similar development class.  This enables you to right and transport related objects