21 class NestedDissection {
23 typedef boost::shared_ptr<SubNLG> sharedSubNLG;
28 std::vector<Symbol> int2symbol_;
32 sharedSubNLG root()
const {
return root_; }
36 NestedDissection(
const NLG& fg,
const Ordering& ordering,
const int numNodeStopPartition,
const int minNodesPerMap,
const bool verbose =
false);
39 NestedDissection(
const NLG& fg,
const Ordering& ordering,
const boost::shared_ptr<Cuts>& cuts,
const bool verbose =
false);
43 sharedSubNLG makeSubNLG(
const NLG& fg,
const std::vector<size_t>& frontals,
const std::vector<size_t>& sep,
const boost::shared_ptr<SubNLG>& parent)
const;
45 void processFactor(
const typename GenericGraph::value_type& factor,
const std::vector<int>& partitionTable,
46 std::vector<GenericGraph>& frontalFactors, NLG& sepFactors, std::vector<std::set<size_t> >& childSeps,
47 typename SubNLG::Weeklinks& weeklinks)
const;
50 void partitionFactorsAndVariables(
51 const GenericGraph& fg,
const GenericUnaryGraph& unaryFactors,
52 const std::vector<size_t>& keys,
const std::vector<int>& partitionTable,
const int numSubmaps,
53 std::vector<GenericGraph>& frontalFactors, vector<GenericUnaryGraph>& frontalUnaryFactors, NLG& sepFactors,
54 std::vector<std::vector<size_t> >& childFrontals, std::vector<std::vector<size_t> >& childSeps, std::vector<size_t>& localFrontals,
55 typename SubNLG::Weeklinks& weeklinks)
const;
57 NLG collectOriginalFactors(
const GenericGraph& gfg,
const GenericUnaryGraph& unaryFactors)
const;
60 sharedSubNLG recursivePartition(
const GenericGraph& gfg,
const GenericUnaryGraph& unaryFactors,
const std::vector<size_t>& frontals,
const std::vector<size_t>& sep,
61 const int numNodeStopPartition,
const int minNodesPerMap,
const boost::shared_ptr<SubNLG>& parent,
WorkSpace& workspace,
const bool verbose)
const;
64 sharedSubNLG recursivePartition(
const GenericGraph& gfg,
const GenericUnaryGraph& unaryFactors,
const std::vector<size_t>& frontals,
const std::vector<size_t>& sep,
65 const boost::shared_ptr<Cuts>& cuts,
const boost::shared_ptr<SubNLG>& parent,
WorkSpace& workspace,
const bool verbose)
const;