1#ifndef PRUNING_STUBBORN_SETS_SIMPLE_H
2#define PRUNING_STUBBORN_SETS_SIMPLE_H
4#include "downward/pruning/stubborn_sets_action_centric.h"
6namespace stubborn_sets_simple {
9class StubbornSetsSimple :
public stubborn_sets::StubbornSetsActionCentric {
12 std::vector<std::vector<int>> interference_relation;
13 std::vector<bool> interference_relation_computed;
15 void add_necessary_enabling_set(
const FactPair& fact);
16 void add_interfering(
int op_no);
18 inline bool interfere(
int op1_no,
int op2_no)
20 return can_disable(op1_no, op2_no) || can_conflict(op1_no, op2_no) ||
21 can_disable(op2_no, op1_no);
23 const std::vector<int>& get_interfering_operators(
int op1_no);
26 virtual void initialize_stubborn_set(
const State& state)
override;
28 handle_stubborn_operator(
const State& state,
int op_no)
override;
31 explicit StubbornSetsSimple(utils::Verbosity verbosity);
32 virtual void initialize(
const std::shared_ptr<AbstractTask>& task)
override;