def _at_leat_one_color(self, cnf): for country in self.G.nodes(): clause = Clause() for color in self.colors: literal = self._convert_to_literal(country, color) clause.add_literal(literal) clause.end() cnf.add_clause(clause)
def _max_one_color(self, cnf): for country in self.G.nodes(): for color_combos in combinations(self.colors, 2): clause = Clause() clause.add_literal( -self._convert_to_literal(country, color_combos[0]) ) clause.add_literal( -self._convert_to_literal(country, color_combos[1]) ) clause.end() cnf.add_clause(clause)
def _different_colors(self, cnf): for country in self.G.nodes(): for neighbor in self.G.neighbors(country): for color in self.colors: clause = Clause() clause.add_literal( -self._convert_to_literal(country, color) ) clause.add_literal( -self._convert_to_literal(neighbor, color) ) clause.end() cnf.add_clause(clause)
def _max_one_color(self, cnf): for country in self.G.nodes(): for color_combos in combinations(self.colors, 2): clause = Clause() clause.add_literal( -self._convert_to_literal(country, color_combos[0])) clause.add_literal( -self._convert_to_literal(country, color_combos[1])) clause.end() cnf.add_clause(clause)
def _different_colors(self, cnf): for country in self.G.nodes(): for neighbor in self.G.neighbors(country): for color in self.colors: clause = Clause() clause.add_literal( -self._convert_to_literal(country, color)) clause.add_literal( -self._convert_to_literal(neighbor, color)) clause.end() cnf.add_clause(clause)