toulbar2
tb2sameconstr.hpp
1
5#ifndef TB2SAMECONSTR_HPP_
6#define TB2SAMECONSTR_HPP_
7
8#include "tb2flowbasedconstr.hpp"
9
10class SameConstraint : public FlowBasedGlobalConstraint {
11private:
12 //int def;
13 void buildIndex();
14 vector<int> group[2];
15 int nDistinctDomainValues;
16 pair<int, int> mapto(int varindex, Value val);
17 //void checkRemoved(Graph &graph, vector<int> &rmv);
18 size_t GetGraphAllocatedSize();
19 void buildGraph(Graph& g);
20 //void getDomainFromGraph(Graph &graph, int varindex, vector<int> &domain);
21 //void augmentGraph(Graph &graph, int &cost, int varindex);
22public:
23 SameConstraint(WCSP* wcsp, EnumeratedVariable** scope_in, int
24 arity_in);
25
26 ~SameConstraint() {}
27
28 Cost evalOriginal(const Tuple& s);
29 /*void addToGroup(int gp, Variable *var) {
30 for (int i=0;i<arity_;i++) {
31 if (getVar(i) == var) {
32 group[gp][size[gp]] = i;
33 size[gp]++;
34 break;
35 }
36 }
37 }
38 void addToGroupX(Variable *var) {addToGroup(0, var);}
39 void addToGroupY(Variable *var) {addToGroup(1, var);}
40 */
41 string getName() { return "ssame"; }
42 void read(istream& file, bool mult = true);
43 void addVariablesToGroup(EnumeratedVariable* variable, int groupID)
44 {
45
46 for (int j = 0; j < arity_; j++) {
47 if (getVar(j) == variable) {
48 group[groupID].push_back(j);
49 break;
50 }
51 }
52 }
53 void organizeConfig()
54 {
55 for (int g = 0; g < 2; g++)
56 sort(group[g].begin(), group[g].end());
57 }
58
59 // void print(ostream& os);
60 void dump(ostream& os, bool original = true);
61};
62
63#endif
64
65/* Local Variables: */
66/* c-basic-offset: 4 */
67/* tab-width: 4 */
68/* indent-tabs-mode: nil */
69/* c-default-style: "k&r" */
70/* End: */