We've already touched on node sharing when we went through the rule from Code listing 3. Node sharing is one of the techniques used to minimize the size of the Rete network. The more nodes two rules share, the better. We already know that the order of conditions within a rule and even the order of constraints within a single condition affects the order of nodes within the Rete network and so affects the sharing of nodes.
The node sharing takes place when the network is built, that is, when we're creating a knowledge base out of knowledge packages. The node sharing is implemented very simply by using the equals
method of the standard Object
class. When a new rule is added into an existing network, new nodes are created as if the network was empty. These nodes are then inserted into the existing network. When this happens, the algorithm checks if such a node already exists by using the equals
method. Only the appropriate nodes are being examined at the current level within the...