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/?member_id=8660244&id_secret=117534816-b15a34
Powered by Listbox: http://www.listbox.com

Reply via email to