00001 #ifndef __NPE_H_
00002 #define __NPE_H_
00003
00004 #include "flp.h"
00005
00006
00007 typedef struct NPE_t_st
00008 {
00009 int *elements;
00010 int size;
00011
00012
00013 int *unit_pos;
00014 int n_units;
00015
00016
00017
00018
00019
00020
00021 int *flip_pos;
00022 int n_flips;
00023
00024
00025 int *chain_pos;
00026 int n_chains;
00027
00028
00029 int *ballot_count;
00030 }NPE_t;
00031
00032
00033
00034
00035 NPE_t *NPE_get_initial(flp_desc_t *flp_desc);
00036
00037 void free_NPE(NPE_t *expr);
00038
00039 void print_NPE(NPE_t *expr, flp_desc_t *flp_desc);
00040
00041
00042
00043
00044 void NPE_swap_units(NPE_t *expr, int pos);
00045
00046 void NPE_invert_chain(NPE_t *expr, int pos);
00047
00048 int NPE_swap_cut_unit(NPE_t *expr, int pos);
00049
00050 NPE_t *make_random_move(NPE_t *expr);
00051
00052 NPE_t *NPE_duplicate(NPE_t *expr);
00053
00054 #endif