6 std::vector<ttk::DiagramType> &DictDiagrams,
7 const std::vector<ttk::DiagramType> &datas,
13 const size_t nDiags = datas.size();
16 std::array<size_t, 2> nInputs{nDiags, 0};
17 MatrixCalculator.
setDos(do_min_, do_sad_, do_max_);
20 std::vector<double> allDistsSummed(nDiags);
21 for(
size_t i = 0; i < nDiags; ++i) {
22 const auto &line = distMatrix[i];
23 for(
size_t j = 0; j < nDiags; ++j) {
24 allDistsSummed[j] += line[j];
27 std::vector<int> indices;
28 int Id1 = std::max_element(allDistsSummed.begin(), allDistsSummed.end())
29 - allDistsSummed.begin();
30 indices.push_back(Id1);
32 for(
int i = 1; i < nbAtoms; ++i) {
36 std::vector<double> tempDistsSummed(nbAtoms);
37 for(
int i = 0; i < nbAtoms; ++i) {
38 tempDistsSummed[i] = allDistsSummed[indices[i]];
41 int FirstId = std::min_element(tempDistsSummed.begin(), tempDistsSummed.end())
42 - tempDistsSummed.begin();
43 DictDiagrams.push_back(datas[indices[FirstId]]);
44 for(
int i = 0; i < nbAtoms; ++i) {
48 DictDiagrams.push_back(datas[indices[i]]);
54 const Matrix &distMatrix,
const std::vector<int> &indices)
const {
55 std::vector<double> allSumCumul(distMatrix.size(), 0.);
56 for(
size_t k = 0; k < indices.size(); ++k) {
57 const auto &line = distMatrix[indices[k]];
58 for(
size_t i = 0; i < distMatrix.size(); ++i) {
59 if(std::find(indices.begin(), indices.end(), i) != indices.end()) {
62 allSumCumul[i] += line[i];
66 int newId = std::max_element(allSumCumul.begin(), allSumCumul.end())
67 - allSumCumul.begin();