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) 1999-2009 Soeren Sonnenburg 00008 * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society 00009 */ 00010 00011 #ifndef _POLYMATCHSTRINGKERNEL_H___ 00012 #define _POLYMATCHSTRINGKERNEL_H___ 00013 00014 #include "lib/common.h" 00015 #include "kernel/StringKernel.h" 00016 00017 namespace shogun 00018 { 00036 class CPolyMatchStringKernel: public CStringKernel<char> 00037 { 00038 public: 00045 CPolyMatchStringKernel(int32_t size, int32_t degree, bool inhomogene); 00046 00054 CPolyMatchStringKernel( 00055 CStringFeatures<char>* l, CStringFeatures<char>* r, 00056 int32_t degree, bool inhomogene); 00057 00058 virtual ~CPolyMatchStringKernel(); 00059 00066 virtual bool init(CFeatures* l, CFeatures* r); 00067 00069 virtual void cleanup(); 00070 00075 virtual EKernelType get_kernel_type() 00076 { 00077 return K_POLYMATCH; 00078 } 00079 00084 virtual const char* get_name() const { return "PolyMatchString"; } 00085 00090 void set_rescaling_enabled(bool n) 00091 { 00092 rescaling=n; 00093 } 00094 00095 bool get_rescaling_enabled() 00096 { 00097 return rescaling; 00098 } 00099 00100 protected: 00109 virtual float64_t compute(int32_t idx_a, int32_t idx_b); 00110 00111 protected: 00113 int32_t degree; 00115 bool inhomogene; 00117 bool rescaling; 00118 }; 00119 } 00120 #endif /* _POLYMATCHSTRINGKERNEL_H___ */