views:

324

answers:

3

What is the difference between a rules engine and an expert system?

Example1: Let's say that I have a program that determines the expiration date of a new driver's license. It takes inputs like visa expiration date, passport number, birthday, etc. It determines the expiration date of the driver's license from this input. It can even give an error if the input did not have enough valid identifications to allow a new driver's license.

Example2: Let's say I am making an online version of the game Monopoly. I want the ability to change the rules of the game (say $400 for passing go or no one can buy properties until they land on the same property twice, etc). I have a module in the code to handle these rules.

Are these both rules engines or are they expert systems? They both seem so similar. Is it just a synonym?

+1  A: 

I think the difference is semantic and just a little bit more.

An "expert system" implies that the system includes coding for picking the expert's brains, i.e. for transforming an expert's domain knowledge into the program's internal rule set.

Take that away, and I'd say what's left is a "rule engine". Though it's also possible to build an expert system that's not based on a rule engine.

Carl Smotricz
+2  A: 

The "inference engine" (what I believe you are calling the "rules engine") is part of an expert system. The other part is the "knowledge base" (your list of rules, the stuff it knows it true, that stuff it has so far figured out, etc.)

The inference engine is the part that actually uses your rules and the known facts to infer things.

In your two examples above, you are talking about expert systems. Sort of.

I'll give you a third example. GNU make is an inference engine. If given a set of build rules and dated files, it can figure out what needs to be rebuilt, but it has to be told all that stuff. Your build system that includes the makefiles, associated scripts, and make itself is an expert system.

I found a detailed explanation online here, but it is perhaps a bit too detailed for a neophyte.

T.E.D.
A: 

An "expert system" typically means a particular application that embodies a set of expert knowledge about a given problem domain. An expert system may or may not use a rule engine as part of its implementation.

kreinsch