Class HMatrix


  • public class HMatrix
    extends java.lang.Object
    Keeps track of already computed values of edit distance. Remarks: To save space, the matrix is kept in a vector.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) int columnHeight  
      (package private) int editDistance  
      private int[] p  
      private int rowLength  
    • Constructor Summary

      Constructors 
      Constructor Description
      HMatrix​(int distance, int maxLength)
      Allocates memory and initializes matrix (constructor).
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int get​(int i, int j)
      Provide an item of hMatrix indexed by indices.
      void set​(int i, int j, int val)
      Set an item in hMatrix.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • p

        private int[] p
      • rowLength

        private int rowLength
      • columnHeight

        int columnHeight
      • editDistance

        int editDistance
    • Constructor Detail

      • HMatrix

        public HMatrix​(int distance,
                       int maxLength)
        Allocates memory and initializes matrix (constructor).
        Parameters:
        distance - (int) max edit distance allowed for candidates;
        maxLength - (int) max length of words. Remarks: See Oflazer. To save space, the matrix is stored as a vector. To save time, additional rows and columns are added. They are initialized to their distance in the matrix, so that no bound checking is necessary during access.
    • Method Detail

      • get

        public int get​(int i,
                       int j)
        Provide an item of hMatrix indexed by indices.
        Parameters:
        i - - (int) row number;
        j - - (int) column number.
        Returns:
        Item H[i][j]. Remarks: H matrix is really simulated. What is needed is only 2 * edit_distance + 1 wide band around the diagonal. In fact this diagonal has been pushed up to the upper border of the matrix. The matrix in the vector looks likes this:
                    +---------------------+
                0   |#####################| j=i-e-1
                1   |                     | j=i-e
                    :                     :
                e+1 |                     | j=i-1
                    +---------------------+
                e+2 |                     | j=i
                    +---------------------+
                e+3 |                     | j=i+1
                    :                     :
                2e+2|                     | j=i+e
                2e+3|#####################| j=i+e+1
                    +---------------------+
         
      • set

        public void set​(int i,
                        int j,
                        int val)
        Set an item in hMatrix. No checking for i & j is done. They must be correct.
        Parameters:
        i - - (int) row number;
        j - - (int) column number;
        val - - (int) value to put there.