3 #include "../../data_structures/bm/blockmodel.h"
4 #include "../../problems/finalpit/fp.h"
22 typedef double value_type;
24 typedef double value_type;
36 unsigned short _reversed_status;
42 struct node* _child_list;
43 struct node* _last_scan;
44 struct node* _neighbour;
45 struct arc* _arc_to_parent;
47 vector<FlowArc*> _out_of_tree;
51 BlockIndexType _last_out_of_tree_arc_index;
52 BlockIndexType _index;
53 BlockIndexType _label;
55 bool _in_min_cut_root_set;
60 BlockIndexType _nb_nodes;
61 BlockIndexType _nb_arcs;
62 BlockIndexType _source;
67 map<BlockIndexType, deque<BlockIndexType> > _strong_root_buckets;
68 BlockIndexType _highest_strong_label_value;
69 BlockIndexType* _label_value_count;
73 BlockIndexType _nb_prec_arcs;
74 unsigned int _default_nblevel;
78 void InitPseudoFlow();
79 Node* GetHighestStrongRoot();
80 void PutBranchInMinCutRootSet(Node* pnode);
81 void SetMinCutRootSet();
82 FlowArc* FindMergerArc(Node* pnode,
bool& to_strong_direction);
83 void AddParentalRelationship(Node* pchild,Node* pnew_parent);
84 void CutParentalRelationship(Node* pchild,Node* pold_parent);
85 void MergeSubTrees(Node* pparent, Node* pchild, FlowArc* pnew_arc);
86 void PushExcess(Node* pstrong);
87 void AddRootToBucket(
const BlockIndexType& index,
const BlockIndexType& label);
88 void Relabel(Node* pnode);
Abstracts a set of blocks (subset of a blockmodel).
Definition: blocksel.h:33
Defines a case for the final pit problem.
Definition: fp.h:21
BlockSelection * GetMinCutRootSet()
Retrieves the minimum cut root set that corresponds to final pit set.
Definition: graph.cpp:531
bool PseudoFlow()
Implementation of the Pseudoflow algorithm.
Definition: graph.cpp:260
~MinCutGraph()
Destructor.
Definition: graph.cpp:229
MinCutGraph(const FinalPitInstance &fpi, string value_attr)
Creates a new graph based on a given instance.
Definition: graph.cpp:12
An implementation of the graph used by the final pit solver based on the Pseudoflow algorithm to solv...
Definition: graph.h:18