Method and system for rapid evaluation of logical expressions
First Claim
1. A computing device for rapidly evaluating logical expressions, the computing device comprising:
- a memory space for storing code;
a processor, coupled to the memory space, executing the code to cause the computing device to perform operations of;
obtaining a set of logical expressions, at least some of the logical expressions associated with a time sequence, each of the logical expressions associated with one or more primitives that at any time have one or more possible values, wherein the logical expressions are expressed in one or more directed acyclic graphs, each including at least one root node, at least one leaf node, and at least one association between a non-leaf node and a leaf node, node is associated with a set of the logical expressions that are presumed true, a subset of true logical expressions being a possibly empty subset the logical expressions, and each non-leaf node is further associated with one of the primitives associated with one of these logical expressions; and
each edge between any two nodes is associated with one of the primitive associated with a node at a tail of the edge, and at any time, a path through each of the directed acyclic graphs from a root node is determined by recursively following the edge that corresponds to the value of the primitive at a given non-leaf node; and
taking a union of the logical expressions expressed in the directed acyclic graphs and traversing the directed acyclic graphs to yields the subset of the true logical expressions.
3 Assignments
0 Petitions
Accused Products
Abstract
Methods and systems capable of determining which subset of a set of logical expressions are true with relatively few evaluations of the primitives that, together with any standard logical connectives, make up the logical expressions. A plurality of directed acyclic graphs, each graph including at least one root node, at least one leaf node, and at least one non-leaf node associated with a leaf node. Each node is associated with a, possibly empty, subset of presumed to be true logical expressions. Each non-leaf node is associated with one of the primitives mentioned in any of the logical expressions. Edges are defined between two of the nodes, each edge being associated with a possible value, or range of possible values, of the primitive associated with the node at the tail of the edge. Paths are defined through each of the directed acyclic graphs from a root node to a leaf node by recursively following each edge corresponding to the current value of the primitive at a selected non-leaf node. Lastly, subsets of logical expressions associated with the nodes on the defined paths are collated to yield a subset of logical expressions that are true.
-
Citations
35 Claims
-
1. A computing device for rapidly evaluating logical expressions, the computing device comprising:
-
a memory space for storing code; a processor, coupled to the memory space, executing the code to cause the computing device to perform operations of; obtaining a set of logical expressions, at least some of the logical expressions associated with a time sequence, each of the logical expressions associated with one or more primitives that at any time have one or more possible values, wherein the logical expressions are expressed in one or more directed acyclic graphs, each including at least one root node, at least one leaf node, and at least one association between a non-leaf node and a leaf node, node is associated with a set of the logical expressions that are presumed true, a subset of true logical expressions being a possibly empty subset the logical expressions, and each non-leaf node is further associated with one of the primitives associated with one of these logical expressions; and
each edge between any two nodes is associated with one of the primitive associated with a node at a tail of the edge, and at any time, a path through each of the directed acyclic graphs from a root node is determined by recursively following the edge that corresponds to the value of the primitive at a given non-leaf node; andtaking a union of the logical expressions expressed in the directed acyclic graphs and traversing the directed acyclic graphs to yields the subset of the true logical expressions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for rapidly evaluating logical expressions, the method comprising:
-
maintaining data in a memory space representing a set of logical expressions, at least some of the logical expressions associated with a time sequence, each of the logical expressions associated with one or more primitives that at any time have one of one or more values; and operating a computing device to read one or more directed acyclic graphs, each including at least one root node, at least one leaf node, and at least one association between a non-leaf node and a leaf node, wherein each node is associated with a set of the logical expressions that are presumed true, the set of true logical expressions being a possibly empty subset of the logical expressions, and each non-leaf node is further associated with one of the primitives associated with one of the logical expressions, each edge between any two nodes is associated with one of values of the primitives associated with the node at a tail of an edge, at any time, a path through each of the directed acyclic graphs from a root node is determined by recursively following the edge that corresponds to one of the values of the primitives at a given non-leaf node; and taking a union of the logical expressions expressed in the directed acyclic graphs and traversing the directed acyclic graphs to yield the subset of the true logical expressions. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. A software product in a computer readable medium for rapidly evaluating logical expressions, the software product comprising:
-
program code for obtaining a set of logical expressions to facilitate making a decision in a video game, at least some of the logical expressions associated with a time sequence, each of the logical expressions associated with one or more primitives that at any time have one or more possible values, wherein the logical expressions are expressed in one or more directed acyclic graphs, each including at least one root node, at least one leaf node, and at least an association between a non-leaf node and a leaf node, each node is associated with a set of the logical expressions that are presumed true, a subset of true logical expressions being an empty subset the logical expressions, and each non-leaf node is further associated with one of the primitives associated with one of the logical expressions; and
each edge between any two nodes is associated with one of the primitives associated with a node at a tail of the edge, and at any time, a path through each of the directed acyclic graphs from a root node is determined by recursively following the edge that corresponds to a value of one of the primitives at a given non-leaf node; andprogram code for taking a union of the logical expressions expressed in the directed acyclic graphs and traversing the directed acyclic graphs to yield the subset of the true logical expressions. - View Dependent Claims (34, 35)
-
Specification