8 #include "WeightedPoint.hpp"
22 template<
typename ForwardIterator>
23 double cost(ForwardIterator first, ForwardIterator last,
Point Center);
28 template<
typename ForwardIteratorPo
int,
typename ForwardIteratorCenter>
29 double cost(ForwardIteratorPoint beginP, ForwardIteratorPoint endP, ForwardIteratorCenter beginC, ForwardIteratorCenter endC);
34 template<
typename ForwardIterator>
40 template<
typename ForwardIteratorPo
int,
typename ForwardIteratorCenter>
41 double weightedCost(ForwardIteratorPoint beginP, ForwardIteratorPoint endP, ForwardIteratorCenter beginC, ForwardIteratorCenter endC);
47 template<
typename ForwardIterator>
53 sum += dist->distance(toPointer(*first), center);
59 template<
typename ForwardIteratorPo
int,
typename ForwardIteratorCenter>
60 double KMedian::cost(ForwardIteratorPoint beginP, ForwardIteratorPoint endP, ForwardIteratorCenter beginC, ForwardIteratorCenter endC)
63 for(
auto itP = beginP; itP != endP; ++itP)
66 for(
auto itC = beginC; itC != endC; ++itC)
68 double tmpCost = dist->distance(toPointer(*itP), toPointer(*itC));
69 if(tmpCost < minCost || itC == beginC)
77 template<
typename ForwardIterator>
83 sum += first->getWeight() * dist->distance(toPointer(*first), center);
89 template<
typename ForwardIteratorPo
int,
typename ForwardIteratorCenter>
90 double KMedian::weightedCost(ForwardIteratorPoint beginP, ForwardIteratorPoint endP, ForwardIteratorCenter beginC, ForwardIteratorCenter endC)
93 for(
auto itP = beginP; itP != endP; ++itP)
96 for(
auto itC = beginC; itC != endC; ++itC)
98 double tmpCost = toPointer(*itP)->getWeight() * dist->distance(toPointer(*itP), toPointer(*itC));
99 if(tmpCost < minCost || itC == beginC)