00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00048 #ifndef __M_WAY_JAG_2D_H__
00049 #define __M_WAY_JAG_2D_H__
00050
00051 #include <util/prefix_sum_tools.hpp>
00052 #include <util/rect_list.hpp>
00053 #include <util/transpose2d.hpp>
00054 #include <oned/nicol_plus.hpp>
00055
00056 namespace twod
00057 {
00058
00059
00075 template <typename T, typename Pr,
00076 T (*onedalgoY) (int procCount, const util::Aggreg2Dto1D<T, Pr, false>& prefixSumArray, int length, int *cutIndexes, T)=oned::NicolPlus<T, util::Aggreg2Dto1D<T, Pr, false> >::nicol_plus ,
00077 T (*onedalgoX)(int procCount, const util::Aggreg2Dto1D<T, Pr, true>& prefixSumArray, int length, int *cutIndexes, T)=oned::NicolPlus<T, util::Aggreg2Dto1D<T, Pr, true> >::nicol_plus >
00078 class JagMHeurHor : public PartBase<T,Pr>
00079 {
00080
00081 int P;
00082 public:
00083 JagMHeurHor():P(-1){}
00084
00094 void setP(int P){this->P=P;}
00104 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00105 virtual ~JagMHeurHor(){}
00106
00107
00114 static T m_way_jag_2d_internal(int procX, int m, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00115 };
00116
00117
00129 template <typename T, typename Pr,
00130 T (*onedalgoY) (int procCount, const util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, false>& prefixSumArray, int length, int *cutIndexes, T) = oned::NicolPlus<T, util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, false> >::nicol_plus,
00131 T (*onedalgoX) (int procCount, const util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, true>& prefixSumArray, int length, int *cutIndexes, T) = oned::NicolPlus<T, util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, true> >::nicol_plus
00132 >
00133 class JagMHeurVer : public PartBase<T,Pr>
00134 {
00135 int P;
00136 public:
00137 JagMHeurVer():P(0){}
00138 virtual ~JagMHeurVer(){}
00139
00149 void setP(int P)
00150 {
00151 this->P = P;
00152 }
00162 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00163 };
00164
00165
00166
00176 template <typename T, typename Pr>
00177 class JagMHeurBest : public PartBase<T,Pr>
00178 {
00179 public:
00180
00181 virtual ~JagMHeurBest(){}
00190 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00191 };
00192
00193 }
00194
00195
00196 #include <twod/m_way_jag_2d_impl.hpp>
00197
00198 #endif
00199
00200
00201