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