9 #ifndef GTL_FM_PARTITION_H
10 #define GTL_FM_PARTITION_H
172 void store_cut_edges(
const bool set);
185 void store_nodesAB(
const bool set);
229 int get_needed_passes();
256 int get_weight_on_sideA(
const graph& G)
const;
264 int get_weight_on_sideB(
const graph& G)
const;
340 virtual void reset();
561 void divide_up(
const graph& G);
567 void hide_self_loops(
graph& G);
574 void init_variables(
const graph& G);
582 void create_initial_bipart(
const graph& G);
589 void shuffle_vector(
const int vector_size,
590 vector<graph::node_iterator>& node_vector);
596 void compute_max_vertex_degree(
const graph& G);
602 void pass_manager(
const graph& G);
615 void init_data_structure(
const graph& G);
622 void init_filling_buckets(
const graph& G);
629 int inital_gain_of_node_on_sideA(
const node cur_node);
636 int inital_gain_of_node_on_sideB(
const node cur_node);
642 void move_manager(
const graph& G);
650 bool move_vertex(
const graph& G,
node& moved_node);
658 bool balance_holds(
const graph& G,
const node cur_node);
665 void update_data_structure_A2B(
const node cur_node);
672 void update_data_structure_B2A(
const node cur_node);
679 void update_bucketA(
const node cur_node,
const int old_gain,
687 void update_bucketB(
const node cur_node,
const int old_gain,
695 void update_max_gain(
const side_type side);
702 inline int range_up(
const int gain_value)
const;
709 inline int range_down(
const int index)
const;
715 void clean_pass(
const graph& G);
721 void compute_cut_edges(
const graph& G);
727 void compute_nodesAB(
const graph& G);
734 void print_bucketA();
740 void print_bucketB();
747 #endif // GTL_FM_PARTITION_H