[comp.ai] Extensions to Rete

raymond@ptolemy.arc.nasa.gov (Eric A. Raymond) (02/08/90)

Before I respond, how about starting a thread of discussion on
extensions to Rete?

>We understand that the OPS83 product uses an enhanced Rete algorithm
>called Rete-II which is claimed to improve performance by "30-300%".
>Are there any papers about Rete-II?

I doubt you'll find anything.  I heard about this at IJCAI and went over
to their booth.  Couldn't get anything but the usual marketing BS.
Requests for more info fom them resulted in them mailing me more BS.
They keep on quoting the speedup, but won't give any numbers to back
it up.  Forgy is associated with this company so I wouldn't be
surprised if there was more to it (i.e., some real improvement).

On a related note, I've heard of other commercial ventures in this
vein.  First is ART (Inference), they allow you to do things like
joins from both sides (but you must be explicit about it).  Haven't
used ART in about a year or so, sooo I can't say if they've improved
the algorithm recently. (Doubtful, though.  Their emphasis seems to be
on porting to different machines.)

Next is product called Eclipse (by Paul Haley, a key figure in the
development of ART) Eclipse is basically a version of CLIPS (from
NASA, of course) with some enhancements.  His literature talks of a
"Rete or Not" (get it?)  algortihm and speaks of 2X speedup.  Of
course he's comparing to CLIPS, which while fast, is not optimal.  (Of
course NASA doesn't have the resources to keep CLIPS the fastest on
the market indefinitely).  I know Paul, he's pretty sharp, and
wouldn't be surprised if this algorithm really zips.  (By the way, he
sells Eclipse (for PC's) for about $25 less than anyone off the street
could get CLIPS.  (CLIPS is only free to the government (in theory).)
His source code is extra.

Finally is a product called Mercury (from AI Technologies?).  This is
much in the vein of ART and CLIPS except that it seems to be more
integrated with Lisp.  It's built on top of CLOS.  They seem to do
some things like reordering conjuncts or independent join networks
(that's just my guess).  

Then there is TREAT which is still in the university domain (thank
god). It seems interesting, but I'm not convinced that it really saves
you anything.  (It does away with the static join network - this was
motivated by a distributed implementation.)

In general there are all sorts of things one can do to Rete: more
flexible join strategy, better functionality to control conflict
resolution, reordering conjucts to limit beta memories, etc ...  The
question is, how fast is fast enough?  The other question is finding
better ways of representing knowledge so that it is easier to create
and runs faster.

Any ideas?  Any info?  Let's keep the signal to noise ratio on this
thread (or group) down.
-- 
Eric A. Raymond  (raymond@ptolemy.arc.nasa.gov)
G7 C7 G7 G#7 G7 G+13 C7 GM7 Am7 Bm7 Bd7 Am7 C7 Do13 G7 C7 G7 D+13: Elmore James