示例#1
0
  /*
   * Put the separator function of a Bucket buck into the BucketTree beyond
   * the current active_bucket.
   */
  private void insert(Bucket buck) {
    int i, index;
    Bucket b;

    if (buck.separator == null) return;

    for (i = active_bucket; i < bucket_tree.length; i++) {
      // Get the index for current Bucket's variable.
      index = bucket_tree[i].variable.get_index();
      // If separator contains a variable in the current Bucket, then join
      // buckets.
      if (buck.separator.memberOf(index)) {
        // Add separator to bucket.
        bucket_tree[i].discrete_functions.addElement(buck.separator);
        // Update the non_conditioning variables.
        // Go through the non-conditioning variables in the inserted
        // Bucket.
        for (Enumeration e = buck.non_conditioning_variables.elements(); e.hasMoreElements(); )
          bucket_tree[i].non_conditioning_variables.addElement(e.nextElement());
        // Take the inserted Bucket variable out by making it
        // CONDITIONING:
        // Must take the variable out as it has been eliminated already.
        bucket_tree[i].non_conditioning_variables.removeElement(buck.variable);
        // Mark parent/child relationship.
        buck.child = bucket_tree[i];
        bucket_tree[i].parents.addElement(buck);
        return;
      }
    }
  }