On Thu, Mar 15, 2018 at 2:13 PM, Alexey Potapov <[email protected]> wrote:
> >> How many domains are there? one? two? three? "satisfiability modulo >> theories" >> That's what those words mean. >> > > Any relation based on individual properties of objects. > I think we are talking past each other. The pattern matcher already handles arbitrary non-numeric individual properties of objects. So I can't tell what you have in mind here. When I say "theory", perhaps the easiest way to think about it, from the point of view of the pattern matcher, is some function that returns true or false. Since theories typically have special-case algorithms to make them run fast, they would be implemented as some block of C++ code ... that returns true or false to the pattern matcher. In mathematics, a "theory" is a collection of "axioms": for example, "group theory" or "linear algebra" and so on. Having "group theory" as a module inside the pattern matcher seems fairly useless. The one "theory" we do want to have is that if 3D space plus time. But again, this is currently very immature. Another "theory" would be neural nets, I have some unfinished ideas on this, but need to write them up in detail. > The problem is very small: PM enumerates virtual links for every pair of > nodes, making it O(N^2), while without such link similar queries are > executed in O(N). > Well, yes. If you have a predicate that takes M arguments and has N values, then an exhaustive search will take O(N^M). That is mild form of "combinatoric explosion". GreaterThan takes two arguments, so M=2, so its O(N^2). Avoiding combinatoric explosion requires an algorithm that knows something special about the data, and can avoid it in some way. If you do NOT want an exhaustive search, then you have several options: one is to design a query that limits the possibilities in some way. Another is to implement a "theory"; and there are several ways to do that, some very low-brow, and some very fancy. So far, I'm the only one who has tried to do this within the pattern matcher, and my explorations are minimal. We could use your problem as an early test case in how to expand support for this kind of thing. I have several ideas how this could be done, but don't want to propose an answer here and now because I don't understand what you are trying to do, or how sophisticated the solution needs to be. (I prefer simple, minimal solutions, instead of big complex ones). We would need to have a distinct email chain where you describe one or more problems, and I could describe how they could be solved. Start this by explaining, again, what it is that you are trying to do, and what algorithm solves it efficiently. -- Linas -- cassette tapes - analog TV - film cameras - you -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/opencog. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAHrUA35ZqcUtPKP%2BKyPr_dLew3hOiQZyyW--Umztr2tG%3Djwn3Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
