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 * Copyright (C) 2012 Sergey Lisitsyn 00008 */ 00009 00010 #ifndef INDEXBLOCKTREE_H_ 00011 #define INDEXBLOCKTREE_H_ 00012 00013 #include <shogun/lib/IndexBlock.h> 00014 #include <shogun/lib/IndexBlockRelation.h> 00015 00016 namespace shogun 00017 { 00018 00025 class CIndexBlockTree : public CIndexBlockRelation 00026 { 00027 public: 00028 00030 CIndexBlockTree(); 00031 00035 CIndexBlockTree(CIndexBlock* root_block); 00036 00041 CIndexBlockTree(SGMatrix<float64_t> adjacency_matrix, bool include_supernode); 00042 00049 CIndexBlockTree(SGVector<float64_t> G, SGVector<float64_t> ind_t); 00050 00056 CIndexBlockTree(SGVector<float64_t> ind_t); 00057 00059 virtual ~CIndexBlockTree(); 00060 00062 CIndexBlock* get_root_block() const; 00063 00065 void set_root_block(CIndexBlock* root_block); 00066 00070 virtual SGVector<index_t> get_SLEP_ind(); 00071 00075 virtual SGVector<float64_t> get_SLEP_G(); 00076 00080 virtual SGVector<float64_t> get_SLEP_ind_t() const; 00081 00083 virtual EIndexBlockRelationType get_relation_type() const { return TREE; } 00084 00086 bool is_general() const; 00087 00089 const char* get_name() const { return "IndexBlockTree"; }; 00090 00091 protected: 00092 00094 CIndexBlock* m_root_block; 00095 00097 bool m_general; 00098 00100 SGVector<float64_t> m_precomputed_ind_t; 00101 00103 SGVector<float64_t> m_precomputed_G; 00104 }; 00105 00106 } 00107 #endif 00108