Class BallNode

  • All Implemented Interfaces:
    java.io.Serializable, RevisionHandler

    public class BallNode
    extends java.lang.Object
    implements java.io.Serializable, RevisionHandler
    Class representing a node of a BallTree.
    Version:
    $Revision: 1.2 $
    Author:
    Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      int m_End
      The end index of the portion of the master index array, which stores indices of the instances/points the node contains.
      BallNode m_Left
      The left child of the node.
      int m_NodeNumber
      The node number/id.
      int m_NumInstances
      The number of instances/points in the node.
      BallNode m_Right
      The right child of the node.
      int m_SplitAttrib
      The attribute that splits this node (not always used).
      double m_SplitVal
      The value of m_SpiltAttrib that splits this node (not always used).
      int m_Start
      The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.
    • Constructor Summary

      Constructors 
      Constructor Description
      BallNode​(int nodeNumber)
      Constructor.
      BallNode​(int start, int end, int nodeNumber)
      Creates a new instance of BallNode.
      BallNode​(int start, int end, int nodeNumber, Instance pivot, double radius)
      Creates a new instance of BallNode.
    • Field Detail

      • m_Start

        public int m_Start
        The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.
      • m_End

        public int m_End
        The end index of the portion of the master index array, which stores indices of the instances/points the node contains.
      • m_NumInstances

        public int m_NumInstances
        The number of instances/points in the node.
      • m_NodeNumber

        public int m_NodeNumber
        The node number/id.
      • m_SplitAttrib

        public int m_SplitAttrib
        The attribute that splits this node (not always used).
      • m_SplitVal

        public double m_SplitVal
        The value of m_SpiltAttrib that splits this node (not always used).
      • m_Left

        public BallNode m_Left
        The left child of the node.
      • m_Right

        public BallNode m_Right
        The right child of the node.
    • Constructor Detail

      • BallNode

        public BallNode​(int nodeNumber)
        Constructor.
        Parameters:
        nodeNumber - The node's number/id.
      • BallNode

        public BallNode​(int start,
                        int end,
                        int nodeNumber)
        Creates a new instance of BallNode.
        Parameters:
        start - The begining index of the portion of the master index array belonging to this node.
        end - The end index of the portion of the master index array belonging to this node.
        nodeNumber - The node's number/id.
      • BallNode

        public BallNode​(int start,
                        int end,
                        int nodeNumber,
                        Instance pivot,
                        double radius)
        Creates a new instance of BallNode.
        Parameters:
        start - The begining index of the portion of the master index array belonging to this node.
        end - The end index of the portion of the master index array belonging to this node.
        nodeNumber - The node's number/id.
        pivot - The pivot/centre of the node's ball.
        radius - The radius of the node's ball.
    • Method Detail

      • isALeaf

        public boolean isALeaf()
        Returns true if the node is a leaf node (if both its left and right child are null).
        Returns:
        true if the node is a leaf node.
      • setStartEndIndices

        public void setStartEndIndices​(int start,
                                       int end)
        Sets the the start and end index of the portion of the master index array that is assigned to this node.
        Parameters:
        start - The start index of the master index array.
        end - The end index of the master indext array.
      • setPivot

        public void setPivot​(Instance pivot)
        Sets the pivot/centre of this nodes ball.
        Parameters:
        pivot - The centre/pivot.
      • getPivot

        public Instance getPivot()
        Returns the pivot/centre of the node's ball.
        Returns:
        The ball pivot/centre.
      • setRadius

        public void setRadius​(double radius)
        Sets the radius of the node's ball.
        Parameters:
        radius - The radius of the nodes ball.
      • getRadius

        public double getRadius()
        Returns the radius of the node's ball.
        Returns:
        Radius of node's ball.
      • numInstances

        public int numInstances()
        Returns the number of instances in the hyper-spherical region of this node.
        Returns:
        The number of instances in the node.
      • calcCentroidPivot

        public static Instance calcCentroidPivot​(int[] instList,
                                                 Instances insts)
        Calculates the centroid pivot of a node. The node is given in the form of an indices array that contains the indices of the points inside the node.
        Parameters:
        instList - The indices array pointing to the instances in the node.
        insts - The actual instances. The instList points to instances in this object.
        Returns:
        The calculated centre/pivot of the node.
      • calcCentroidPivot

        public static Instance calcCentroidPivot​(int start,
                                                 int end,
                                                 int[] instList,
                                                 Instances insts)
        Calculates the centroid pivot of a node. The node is given in the form of the portion of an indices array that contains the indices of the points inside the node.
        Parameters:
        start - The start index marking the start of the portion belonging to the node.
        end - The end index marking the end of the portion in the indices array that belongs to the node.
        instList - The indices array pointing to the instances in the node.
        insts - The actual instances. The instList points to instances in this object.
        Returns:
        The calculated centre/pivot of the node.
      • calcRadius

        public static double calcRadius​(int[] instList,
                                        Instances insts,
                                        Instance pivot,
                                        DistanceFunction distanceFunction)
                                 throws java.lang.Exception
        Calculates the radius of node.
        Parameters:
        instList - The indices array containing the indices of the instances inside the node.
        insts - The actual instances object. instList points to instances in this object.
        pivot - The centre/pivot of the node.
        distanceFunction - The distance fuction to use to calculate the radius.
        Returns:
        The radius of the node.
        Throws:
        java.lang.Exception - If there is some problem in calculating the radius.
      • calcRadius

        public static double calcRadius​(int start,
                                        int end,
                                        int[] instList,
                                        Instances insts,
                                        Instance pivot,
                                        DistanceFunction distanceFunction)
                                 throws java.lang.Exception
        Calculates the radius of a node.
        Parameters:
        start - The start index of the portion in indices array that belongs to the node.
        end - The end index of the portion in indices array that belongs to the node.
        instList - The indices array holding indices of instances.
        insts - The actual instances. instList points to instances in this object.
        pivot - The centre/pivot of the node.
        distanceFunction - The distance function to use to calculate the radius.
        Returns:
        The radius of the node.
        Throws:
        java.lang.Exception - If there is some problem calculating the radius.
      • calcPivot

        public static Instance calcPivot​(BallNode child1,
                                         BallNode child2,
                                         Instances insts)
                                  throws java.lang.Exception
        Calculates the centroid pivot of a node based on its two child nodes (if merging two nodes).
        Parameters:
        child1 - The first child of the node.
        child2 - The second child of the node.
        insts - The set of instances on which the tree is (or is to be) built.
        Returns:
        The centre/pivot of the node.
        Throws:
        java.lang.Exception - If there is some problem calculating the pivot.
      • calcRadius

        public static double calcRadius​(BallNode child1,
                                        BallNode child2,
                                        Instance pivot,
                                        DistanceFunction distanceFunction)
                                 throws java.lang.Exception
        Calculates the radius of a node based on its two child nodes (if merging two nodes).
        Parameters:
        child1 - The first child of the node.
        child2 - The second child of the node.
        pivot - The centre/pivot of the node.
        distanceFunction - The distance function to use to calculate the radius
        Returns:
        The radius of the node.
        Throws:
        java.lang.Exception - If there is some problem in calculating the radius.
      • getRevision

        public java.lang.String getRevision()
        Returns the revision string.
        Specified by:
        getRevision in interface RevisionHandler
        Returns:
        the revision