The closest thing I can think of is Rete algorithm --- see http://en.wikipedia.org/wiki/Rete_algorithm
Pei On Fri, Oct 31, 2008 at 3:39 PM, Russell Wallace <[EMAIL PROTECTED]> wrote: > In classical logic programming, there is the concept of unification, > where one expression is matched against another, and one or both > expressions may contain variables. For example, (FOO ?A) unifies with > (FOO 42) by setting the variable ?A = 42. > > Suppose you have a database of N expressions, and are given a new > expression, and want to find which of the existing ones unify against > the new one. This can obviously be done by unifying against each > expression in turn. However, this takes O(N) time, which is slow if > the database is large. > > It seems to me that by appropriate use of indexes, it should be > possible to unify against the entire database simultaneously, or at > least to isolate a small fraction of it as potential matches so that > the individual unification algorithm need not be run against every > expression in the database. > > I'm obviously not the first person to run into this problem, and > presumably not the first to think of that kind of solution. Before I > go ahead and work out the whole design myself, I figure it's worth > checking: does anyone know of any existing examples of this? > > > ------------------------------------------- > agi > Archives: https://www.listbox.com/member/archive/303/=now > RSS Feed: https://www.listbox.com/member/archive/rss/303/ > Modify Your Subscription: https://www.listbox.com/member/?& > Powered by Listbox: http://www.listbox.com > ------------------------------------------- agi Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: https://www.listbox.com/member/?member_id=8660244&id_secret=117534816-b15a34 Powered by Listbox: http://www.listbox.com
