41 = std::vector<std::vector<std::vector<std::pair<int, int>>>>;
47 const std::vector<GraphMatrixFull> &adjacencyMatrices,
48 const std::vector<int> &separatrixCountForEachBlock,
49 const std::vector<std::vector<std::array<double, 3>>> &coordsSource,
50 const std::vector<std::vector<std::array<double, 3>>> &coordsDestination,
51 const std::vector<std::vector<double>> &scalarsSource,
52 const std::vector<std::vector<double>> &scalarsDestination,
53 const bool &mergeEdgesOnSaddles,
54 std::vector<std::vector<int>> &edgesOccurrencesForEachBlock,
55 std::vector<std::vector<bool>> &isomorphismForEachBlock,
56 std::vector<std::vector<std::vector<int>>>
57 &matchingArrayForEachBlockSource,
58 std::vector<std::vector<std::vector<int>>>
59 &matchingArrayForEachBlockDestination,
60 std::vector<std::vector<std::vector<int>>>
61 &matchingArraySeparatrixForEachBlock);
78 int buildMatchingsWithOtherBlocks(
79 const std::vector<std::vector<std::array<double, 3>>> &coords,
80 const std::vector<std::vector<double>> &scalars,
82 std::vector<std::vector<MatchingType>> &matchings);
87 void buildCostMatrix(
const std::vector<std::array<double, 3>> &coords1,
88 const std::vector<std::array<double, 3>> &coords2,
89 const std::vector<double> &scalars1,
90 const std::vector<double> &scalars2,
91 std::vector<std::vector<double>> &matrix);
93 void assignmentSolver(std::vector<std::vector<double>> &costMatrix,
94 std::vector<ttk::MatchingType> &matching);
96 int buildOccurrenceArraysMinor(
97 const std::vector<GraphMatrixFull> &adjacencyMatrices,
98 const int &n_separatrices,
99 const std::vector<std::vector<std::array<double, 3>>> &coords,
100 const std::vector<std::vector<double>> &scalars,
102 std::vector<int> &edgeOccurrences,
103 std::vector<bool> &isIsomorphicWith,
104 std::vector<std::vector<int>> &matchingArray,
105 std::vector<std::vector<int>> &matchingArraySeparatrix);
107 int buildOccurrenceArraysFull(
108 const std::vector<GraphMatrixFull> &adjacencyMatrices,
109 const int &n_separatrices,
110 const std::vector<std::vector<std::array<double, 3>>> &coordsSource,
111 const std::vector<std::vector<std::array<double, 3>>> &coordsDestination,
112 const std::vector<std::vector<double>> &scalarsSource,
113 const std::vector<std::vector<double>> &scalarsDestination,
115 std::vector<int> &edgesOccurrences,
116 std::vector<bool> &isIsomorphicWith,
117 std::vector<std::vector<int>> &matchingArraySource,
118 std::vector<std::vector<int>> &matchingArrayDestination,
119 std::vector<std::vector<int>> &matchingArraySeparatrix);
int buildOccurrenceArrays(const std::vector< GraphMatrixFull > &adjacencyMatrices, const std::vector< int > &separatrixCountForEachBlock, const std::vector< std::vector< std::array< double, 3 > > > &coordsSource, const std::vector< std::vector< std::array< double, 3 > > > &coordsDestination, const std::vector< std::vector< double > > &scalarsSource, const std::vector< std::vector< double > > &scalarsDestination, const bool &mergeEdgesOnSaddles, std::vector< std::vector< int > > &edgesOccurrencesForEachBlock, std::vector< std::vector< bool > > &isomorphismForEachBlock, std::vector< std::vector< std::vector< int > > > &matchingArrayForEachBlockSource, std::vector< std::vector< std::vector< int > > > &matchingArrayForEachBlockDestination, std::vector< std::vector< std::vector< int > > > &matchingArraySeparatrixForEachBlock)