00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 3 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * Written (W) 2011 Sergey Lisitsyn 00008 * Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society 00009 */ 00010 00011 #ifndef ISOMAP_H_ 00012 #define ISOMAP_H_ 00013 #include <shogun/lib/config.h> 00014 #ifdef HAVE_LAPACK 00015 #include <shogun/converter/MultidimensionalScaling.h> 00016 #include <shogun/lib/common.h> 00017 #include <shogun/mathematics/Math.h> 00018 #include <shogun/io/SGIO.h> 00019 #include <shogun/features/DenseFeatures.h> 00020 #include <shogun/features/Features.h> 00021 #include <shogun/distance/Distance.h> 00022 00023 namespace shogun 00024 { 00025 00026 class CFeatures; 00027 class CDistance; 00028 00049 class CIsomap: public CMultidimensionalScaling 00050 { 00051 public: 00052 00053 /* constructor */ 00054 CIsomap(); 00055 00056 /* destructor */ 00057 virtual ~CIsomap(); 00058 00060 const char* get_name() const; 00061 00065 void set_k(int32_t k); 00066 00070 int32_t get_k() const; 00071 00073 protected: 00074 00076 virtual void init(); 00077 00082 virtual SGMatrix<float64_t> process_distance_matrix(SGMatrix<float64_t> distance_matrix); 00083 00084 00086 protected: 00087 00089 int32_t m_k; 00090 00092 protected: 00093 00097 static void* run_dijkstra_thread(void* p); 00098 00103 SGMatrix<float64_t> isomap_distance(SGMatrix<float64_t> D_matrix); 00104 00105 }; 00106 } 00107 #endif /* HAVE_LAPACK */ 00108 #endif /* ISOMAP_H_ */