Introduction
 ------------

  This is an implementation of the LAESA fast NN classifier. The files in
this directory/tgz are:

  README - this file

  classifier.h / classifier.c - general module for reading training and test
    data and invoke the NN classifier. It contains the main function.

  prototype-vector.h / prototype-vector.c - module that implements functions 
    for dealing with prototypes, basically reads the files and implements the 
    distance between prototypes. In this case, the prototype is the most common 
    one, a vector of real numbers (along with its class), and the distance is 
    the euclidean distance.

  prototype-strings.h / prototype-strings.c - module that implements functions 
    for dealing with prototypes, basically reads the files and implements the 
    distance between prototypes. In this case, the prototype is a string
    followed by a class, and the distance is the edit distance.

  NOTE: you should copy one of the pairs prototype-???.h/prototype-???.c to
    prototype.h/prototype.c in order for the makefile to generate the
    executable. 

  LAESA.h / LAESA.c - implements the LAESA fast NN classifier.

  Makefile - generates the executable (classifier).

  data - directory with a pair of train and test sets for vectors and for
     strings. The string data has been obtained from the Chicken Pieces
     Silhouettes Database, see this paper for more details:
 
        G. Andreu, A. Crespo and J.M. Valiente,
        "Selecting the Toroidal Self-Organizing Feature Maps (TSOFM) Best
        Organized to Object Recognition". Proceedings of ICNNX97, vol. 2,
        pp. 1341--1346, Houston, Texas (USA). IEEE. June, 1997.
     

  
  More NN classifiers may be easilly added to the classifier module, and
also another kind of prototypes (e.g. strings or trees) may be used instead
without modifiying the other modules (only a complete recompilation is
needed).
 
 About the LAESA algorithm
 -------------------------

 The LAESA was developed by Luisa MicÃ³, Jose Oncina and Enrique Vidal and
was published in 1994 (see above). The implementation contained in the LAESA 
module is a simplyfied implementation which is described in:
 
  @article {
   author = "Moreno-Seco, F.; MicÃ³, L.; Oncina, J.",
   title  = "A modification of the LAESA algorithm for approximated k-NN classification",
   journal = "Pattern Recognition Letters",
   pages = "1145-1151",
   volume = "22",
   year = "2003"
  }

  The original version of LAESA is described in:
  
  @article {
   author = "MicÃ³,L.;Oncina,J.;Vidal,E.",
   title  = "A new version of the Nearest-Neighbour Approximating and Eliminating Search Algorithm (AESA) with linear preprocessing time and memory requirements",
   journal = "Pattern Recognition Letters",
   pages = "9-17",
   volume = "15",
   year = "1994"
  }

 About this implementation
 -------------------------

 This implementation was developed by Francisco Moreno-Seco, Luisa MicÃ³ and
Jose Oncina during the realization of the Ph.D. thesis of Francisco
Moreno-Seco (paco@dlsi.ua.es). Please feel free to contact him if you have
any question regarding the implementation.

 The implementation by default uses the LAESA classifier, but also k-LAESA
is supported, just set the parameters -fromK and -toK (see the Usage
function in classifier.c for a list of available parameters). 

Moreover, if you set the variable "ComputeKNN" to 0 and use a value of k>1, 
the classification rule will become the k-NSN rule (the default rule is the 
k-NN rule). For more details on the k-NSN rule see these papers (you can also 
see Francisco Moreno-Seco's PhD. thesis, in spanish):

@inproceedings {
 author = "Moreno-Seco, F.; MicÃ³, L.; Oncina, J",
 title  = "A new classification rule based on nearest neighbour search",
 address = "Cambridge",
 booktitle = "Proceedings of the 17 International Conference on Pattern
recognition 2004",
 pages = "408-411",
 year = "2004"
}

  
@article {
 author = "Moreno-Seco, F.;MicÃ³, L.;Oncina j.",
 title  = "Extending fast nearest neighbour search algorithms for
approximate k-NN classification",
 journal = "Lecture Notes in Computer Science - Lecture Notes in Artificial
Intelligence",
 pages = "589-597",
 volume = "2652",
 year = "2003"
}
