Giriş
Verilen vertex'ten dışarı kaç bağlantı olduğunu döndürür. Eğer sonuç 0 ise bu vertex leaf kabul edilir.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Verilen vertex'ten dışarı kaç bağlantı olduğunu döndürür. Eğer sonuç 0 ise bu vertex leaf kabul edilir.
Örnek
Şöyle yaparız.
for (auto vd : boost::make_iterator_range(vertices(g)))
std::cout << "vertex #" << vd << " has out_degree: " << out_degree(vd, g) << "\n";
ÖrnekŞöyle yaparız.
using Graph = boost::adjacency_list<>;
using BranchID = int;
using BranchMap = std::vector<BranchID>; // maps vertex id -> branch id
// sample data
Graph g = ...;
// do the topo sort and distinguish branches
BranchMap mappings = map_branches(g);
#include <boost/graph/topological_sort.hpp>
std::vector<BranchID> map_branches(Graph const& g) {
std::vector<Vertex> reverse_topo;
boost::topological_sort(g, back_inserter(reverse_topo));
// traverse the output to map to unique branch ids
std::vector<BranchID> branch_map(num_vertices(g));
BranchID branch_id = 0;
for (auto v : reverse_topo) {
auto degree = out_degree(v, g);
if (0 == degree) // is leaf?
++branch_id;
if (degree < 2) // "unique" path
branch_map[v] = branch_id;
}
return branch_map;
}
Hiç yorum yok:
Yorum Gönder