weka.core.neighboursearch.balltrees
Class MedianOfWidestDimension

java.lang.Object
  extended by weka.core.neighboursearch.balltrees.BallSplitter
      extended by weka.core.neighboursearch.balltrees.MedianOfWidestDimension
All Implemented Interfaces:
java.io.Serializable, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class MedianOfWidestDimension
extends BallSplitter
implements OptionHandler, TechnicalInformationHandler

Class that splits a BallNode of a ball tree based on the median value of the widest dimension of the points in the ball. It essentially implements Omohundro's KD construction algorithm.

BibTeX:

 @techreport{Omohundro1989,
    author = {Stephen M. Omohundro},
    institution = {International Computer Science Institute},
    month = {December},
    number = {TR-89-063},
    title = {Five Balltree Construction Algorithms},
    year = {1989}
 }
 

Valid options are:

 -N
  Normalize dimensions' widths.

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

Constructor Summary
MedianOfWidestDimension()
          Constructor.
MedianOfWidestDimension(int[] instList, Instances insts, EuclideanDistance e)
          Constructor.
 
Method Summary
 boolean getNormalizeDimWidths()
          Whether we are normalizing the widths(ranges) of the dimensions (attributes) or not.
 java.lang.String[] getOptions()
          Gets the current settings.
 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.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 java.lang.String normalizeDimWidthsTipText()
          Returns the tip text for this property.
 int select(int attIdx, int[] indices, int left, int right, int k)
          Implements computation of the kth-smallest element according to Manber's "Introduction to Algorithms".
 void setNormalizeDimWidths(boolean normalize)
          Should we normalize the widths(ranges) of the dimensions (attributes) before selecting the widest one.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void splitNode(BallNode node, int numNodesCreated)
          Splits a ball into two.
 
Methods inherited from class weka.core.neighboursearch.balltrees.BallSplitter
setEuclideanDistanceFunction, setInstanceList, setInstances
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MedianOfWidestDimension

public MedianOfWidestDimension()
Constructor.


MedianOfWidestDimension

public MedianOfWidestDimension(int[] instList,
                               Instances insts,
                               EuclideanDistance e)
Constructor.

Parameters:
instList - The master index array.
insts - The instances on which the tree is (or is to be) built.
e - The Euclidean distance function to use for splitting.
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(BallNode node,
                      int numNodesCreated)
               throws java.lang.Exception
Splits a ball into two.

Specified by:
splitNode in class BallSplitter
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.
Throws:
java.lang.Exception - If there is some problem in splitting the given node.

select

public int select(int attIdx,
                  int[] indices,
                  int left,
                  int right,
                  int k)
Implements computation of the kth-smallest element according to Manber's "Introduction to Algorithms".

Parameters:
attIdx - The dimension/attribute of the instances in which to find the kth-smallest element.
indices - The master index array containing indices of the instances.
left - The begining index of the portion of the master index array in which to find the kth-smallest element.
right - The end index of the portion of the master index array in which to find the kth-smallest element.
k - The value of k
Returns:
The index of the kth-smallest element

normalizeDimWidthsTipText

public java.lang.String normalizeDimWidthsTipText()
Returns the tip text for this property.

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setNormalizeDimWidths

public void setNormalizeDimWidths(boolean normalize)
Should we normalize the widths(ranges) of the dimensions (attributes) before selecting the widest one.

Parameters:
normalize - Should be true if the widths are to be normalized.

getNormalizeDimWidths

public boolean getNormalizeDimWidths()
Whether we are normalizing the widths(ranges) of the dimensions (attributes) or not.

Returns:
true if widths are being normalized.

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class BallSplitter
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options. Valid options are:

 -N
  Normalize dimensions' widths.

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class BallSplitter
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class BallSplitter
Returns:
An array of strings suitable for passing to setOptions or to be displayed by a GenericObjectEditor.

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class BallSplitter
Returns:
the revision