117 typename boost::graph_traits<GraphT>::edge_iterator ei, ee;
120 if (g_terms_.size() || l_terms_.size())
122 for (
size_t i = 0; i < g_terms_.size(); ++i)
124 g_terms_[i].init(boost::num_edges(
graph));
126 for (
size_t i = 0; i < l_terms_.size(); ++i)
128 l_terms_[i].init(boost::num_edges(
graph), boost::num_vertices(
graph));
132 for (boost::tie(ei, ee) = boost::edges(
graph); ei != ee; ++ei, ++edge_id)
134 typename boost::graph_traits<GraphT>::vertex_descriptor v1, v2;
136 for (
size_t i = 0; i < g_terms_.size(); ++i)
138 g_terms_[i].round1(
graph[v1],
graph[v2], edge_id);
140 for (
size_t i = 0; i < l_terms_.size(); ++i)
142 l_terms_[i].round1(
graph[v1],
graph[v2], v1, v2, edge_id);
146 for (
size_t i = 0; i < g_terms_.size(); ++i)
148 g_terms_[i].extract();
150 for (
size_t i = 0; i < l_terms_.size(); ++i)
152 l_terms_[i].extract();
160 for (boost::tie(ei, ee) = boost::edges(
graph); ei != ee; ++ei, ++edge_id)
162 typename boost::graph_traits<GraphT>::vertex_descriptor v1, v2;
167 for (
size_t i = 0; i < terms_.size(); ++i)
169 a *= balancing_function_(terms_[i].compute_(p1, p2),
170 terms_[i].getInfluence(is_convex(p1, p2)));
172 for (
size_t i = 0; i < g_terms_.size(); ++i)
174 a *= balancing_function_(g_terms_[i].round2(edge_id),
175 g_terms_[i].getInfluence(is_convex(p1, p2)));
177 for (
size_t i = 0; i < l_terms_.size(); ++i)
179 a *= balancing_function_(l_terms_[i].round2(v1, v2, edge_id),
180 l_terms_[i].getInfluence(is_convex(p1, p2)));
195 typedef typename boost::graph_traits<GraphT>::edge_iterator EdgeIterator;
197 for (boost::tie(ei, ee) = boost::edges(
graph); ei != ee; ++ei)
198 if (weights[*ei] < threshold_)
200 weights[*ei] = threshold_;
210 re(predicate,
graph);