PartitionWorkSpace.h
Go to the documentation of this file.
1 /*
2  * PartitionWorkSpace.h
3  *
4  * Created on: Nov 24, 2010
5  * Author: nikai
6  * Description: a preallocated memory space used in partitioning
7  */
8 
9 #pragma once
10 
11 #include <vector>
12 #include <boost/shared_ptr.hpp>
13 
14 namespace gtsam { namespace partition {
15 
16  typedef std::vector<int> PartitionTable;
17 
18  // the work space, preallocated memory
19  struct WorkSpace {
20  std::vector<int> dictionary; // a mapping from the integer key in the original graph to 0-based index in the subgraph, useful when handling a subset of keys and graphs
21  boost::shared_ptr<std::vector<size_t> > dsf; // a block memory pre-allocated for DSFVector
22  PartitionTable partitionTable; // a mapping from a key to the submap index, 0 means the separator, i means the ith submap
23 
24  // constructor
25  WorkSpace(const size_t numNodes) : dictionary(numNodes,0),
26  dsf(new std::vector<size_t>(numNodes, 0)), partitionTable(numNodes, -1) { }
27 
28  // set up dictionary: -1: no such key, none-zero: the corresponding 0-based index
29  inline void prepareDictionary(const std::vector<size_t>& keys) {
30  int index = 0;
31  std::fill(dictionary.begin(), dictionary.end(), -1);
32  std::vector<size_t>::const_iterator it=keys.begin(), itLast=keys.end();
33  while(it!=itLast) dictionary[*(it++)] = index++;
34  }
35  };
36 
37 
38  // manually defined cuts
39  struct Cuts {
40  PartitionTable partitionTable;
41  std::vector<boost::shared_ptr<Cuts> > children;
42  };
43 
44 }} // namespace
boost::shared_ptr< std::vector< size_t > > dsf
Definition: Half.h:150
WorkSpace(const size_t numNodes)
std::vector< boost::shared_ptr< Cuts > > children
traits
Definition: chartTesting.h:28
std::vector< int > PartitionTable
void prepareDictionary(const std::vector< size_t > &keys)
const KeyVector keys
PartitionTable partitionTable


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:43:23