Program Listing for File IRefineStrategy.h

Return to documentation for file (src/partition/refine/strategy/IRefineStrategy.h)

#ifndef PARTITION_REFINE_STRATEGY_IREFINESTRATEGY_H_
#define PARTITION_REFINE_STRATEGY_IREFINESTRATEGY_H_

#include "../core/RefineTypes.h"


class IRefineStrategy {
 public:
  virtual ~IRefineStrategy()       = default;
  virtual const char *name() const = 0;

  virtual double run(RefinePassContext &context) = 0;
};

class FMLikeStrategyBase : public IRefineStrategy {
 public:
  FMLikeStrategyBase()           = default;
  ~FMLikeStrategyBase() override = default;

  static vector<int> collectBoundaryVertices(const graph &finest,
                                             const vector<int> &parts,
                                             const vector<bool> &visited,
                                             int k);

  static vector<int> collectBoundaryNets(const graph &finest,
                                         const vector<int> &parts, int k);

  static set<int> collectUnvisitedNeighbors(const graph &finest, int vertex,
                                            const vector<bool> &visited, int k);
};

#endif