weka.core.neighboursearch.kdtrees

## Class MidPointOfWidestDimension

- java.lang.Object
- - weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter
  - - weka.core.neighboursearch.kdtrees.MidPointOfWidestDimension

- All Implemented Interfaces:
    java.io.Serializable, OptionHandler, RevisionHandler, TechnicalInformationHandler

      public class MidPointOfWidestDimension
      extends KDTreeNodeSplitter
      implements TechnicalInformationHandler

  The class that splits a KDTree node based on the midpoint value of a dimension in which the node's points have the widest spread.
  For more information see also:
  Andrew Moore (1991). A tutorial on kd-trees.

  BibTeX:

       @techreport{Moore1991,
          author = {Andrew Moore},
          booktitle = {University of Cambridge Computer Laboratory Technical Report No. 209},
          howpublished = {Extract from PhD Thesis},
          title = {A tutorial on kd-trees},
          year = {1991},
          HTTP = {http://www.autonlab.org/autonweb/14665.html}
       }

  Version:
    $Revision: 8034 $
  Author:
    Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz)
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter

      `MAX, MIN, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MidPointOfWidestDimension()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getRevision()` Returns the revision string.
    `TechnicalInformation` | `getTechnicalInformation()` Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
    `java.lang.String` | `globalInfo()` Returns a string describing this nearest neighbour search algorithm.
    `void` | `splitNode(KDTreeNode node, int numNodesCreated, double[][] nodeRanges, double[][] universe)` Splits a node into two based on the midpoint value of the dimension in which the points have the widest spread.

    - ### Methods inherited from class weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter

      `getOptions, listOptions, setEuclideanDistanceFunction, setInstanceList, setInstances, setNodeWidthNormalization, setOptions`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MidPointOfWidestDimension

          public MidPointOfWidestDimension()

  - ### Method Detail

    - #### globalInfo

          public java.lang.String globalInfo()

      Returns a string describing this nearest neighbour search algorithm.
      Returns:
        a description of the algorithm for displaying in the explorer/experimenter gui

    - #### getTechnicalInformation

          public TechnicalInformation getTechnicalInformation()

      Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
      Specified by:
        `getTechnicalInformation` in interface `TechnicalInformationHandler`
      Returns:
        the technical information about this class

    - #### splitNode

          public void splitNode(KDTreeNode node,
                       int numNodesCreated,
                       double[][] nodeRanges,
                       double[][] universe)
                         throws java.lang.Exception

      Splits a node into two based on the midpoint value of the dimension in which the points have the widest spread. After splitting two new nodes are created and correctly initialised. And, node.left and node.right are set appropriately.
      Specified by:
        `splitNode` in class `KDTreeNodeSplitter`
      Parameters:
        `node` - The node to split.
        `numNodesCreated` - The number of nodes that so far have been created for the tree, so that the newly created nodes are assigned correct/meaningful node numbers/ids.
        `nodeRanges` - The attributes' range for the points inside the node that is to be split.
        `universe` - The attributes' range for the whole point-space.
      Throws:
        `java.lang.Exception` - If there is some problem in splitting the given node.

    - #### getRevision

          public java.lang.String getRevision()

      Returns the revision string.
      Specified by:
        `getRevision` in interface `RevisionHandler`
      Overrides:
        `getRevision` in class `KDTreeNodeSplitter`
      Returns:
        the revision