I've been reading Rete algorithm stuff, and I've been wondering why I haven't seen references to this paper in them: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.5507 -- (I couldn't remember the name of the paper until it appeared on the Clojure list just recently.)
It seems like this is a bunch more thought that applies to how to build an alpha network than I've seen mentioned before.
@eraserhd not familiar with this one.
looks like it’d take a bit to parse through it to see how the ideas relate to other rete things that are out there
I have yet to see anything about optimizing the order of alpha tests, except for specific things like hashing 8 ways to find an alpha memory when using triplets.
AFAICT, there's no cases of filtering with user tests before storing in an alpha memory, even, and I presume that's because it's hard to know when you can do that and not duplicate memories?
Clara’s alpha network partitions on how facts match the “type” criteria first
if you have alpha-side only constraints like [A (< x 5)]
those will be filtered as they come in and will not be stored in alpha mem if they don’t match
and if you have variable bindings (via the overloaded =
semantics), eg. [A (= ?x x)]
, facts in the alpha memory will be stored in a hash lookup keyed by that variable binding
those are the main alpha-side network details I can think of