📄 tract.h
字号:
/*---------------------------------------------------------------------- File : tract.h Contents: item and transaction management Author : Christian Borgelt History : 18.11.2001 file created from file apriori.c 28.12.2001 first version completed 02.01.2001 ta_sort mapped to v_intsort 19.02.2002 transaction tree functions added 17.07.2003 functions is_filter, ta_filter, tas_filter added 21.08.2003 parameter 'heap' added to tas_sort, tat_create 12.09.2003 function tas_total added 20.09.2003 empty transactions in input made possible 20.11.2004 function tat_mark added 11.12.2004 access functions for extended frequency added 15.12.2004 function nim_trunc added----------------------------------------------------------------------*/#ifndef __TRACT__#define __TRACT__#ifndef NIMAPFN#define NIMAPFN#endif#include "vecops.h"#include "symtab.h"#include "tfscan.h"/*---------------------------------------------------------------------- Preprocessor Definitions----------------------------------------------------------------------*//* --- item appearance flags --- */#define APP_NONE 0x00 /* item should be ignored */#define APP_BODY 0x01 /* item may appear in rule body */#define APP_HEAD 0x02 /* item may appear in rule head */#define APP_BOTH (APP_HEAD|APP_BODY)/* --- error codes --- */#define E_NONE 0 /* no error */#define E_NOMEM (-1) /* not enough memory */#define E_FOPEN (-2) /* cannot open file */#define E_FREAD (-3) /* read error on file */#define E_FWRITE (-4) /* write error on file */#define E_ITEMEXP (-16) /* item expected */#define E_DUPITEM (-17) /* duplicate item */#define E_APPEXP (-18) /* appearance indicator expected */#define E_UNKAPP (-19) /* unknown appearance indicator */#define E_FLDCNT (-20) /* too many fields *//*---------------------------------------------------------------------- Type Definitions----------------------------------------------------------------------*/typedef struct { /* --- an item --- */ int id; /* item identifier */ int frq; /* frequency in transactions */ int xfq; /* extended frequency (t.a. sizes) */ int app; /* appearance indicator */} ITEM; /* (item) */typedef struct { /* --- a transaction --- */ int cnt; /* number of items */ int items[1]; /* item identifier vector */} TRACT; /* (transaction) */typedef struct { /* --- an itemset --- */ TFSCAN *tfscan; /* table file scanner */ char chars[4]; /* special characters */ NIMAP *nimap; /* name/identifier map */ int app; /* default appearance indicator */ int vsz; /* size of transaction buffer */ int cnt; /* number of items in transaction */ int *items; /* items in transaction */} ITEMSET; /* (item set) */typedef struct { /* --- a transaction set --- */ ITEMSET *itemset; /* underlying item set */ int max; /* maximum number of items per t.a. */ int vsz; /* size of transaction vector */ int cnt; /* number of transactions */ int total; /* total number of items */ TRACT **tracts; /* transaction vector */} TASET; /* (transaction set) */typedef struct _tatree { /* --- a transaction tree (node) --- */ int cnt; /* number of transactions */ int max; /* size of largest transaction */ int size; /* node size (number of children) */ int items[1]; /* next items in rep. transactions */} TATREE; /* (transaction tree) *//*---------------------------------------------------------------------- Item Set Functions----------------------------------------------------------------------*/extern ITEMSET* is_create (void);extern void is_delete (ITEMSET *iset);extern TFSCAN* is_tfscan (ITEMSET *iset);extern void is_chars (ITEMSET *iset, const char *blanks, const char *fldseps, const char *recseps, const char *cominds);extern int is_cnt (ITEMSET *iset);extern int is_item (ITEMSET *iset, const char *name);extern const char* is_name (ITEMSET *iset, int item);extern int is_getfrq (ITEMSET *iset, int item);extern int is_setfrq (ITEMSET *iset, int item, int frq);extern int is_addfrq (ITEMSET *iset, int item, int frq);extern int is_getxfq (ITEMSET *iset, int item);extern int is_setxfq (ITEMSET *iset, int item, int frq);extern int is_getapp (ITEMSET *iset, int item);extern int is_setapp (ITEMSET *iset, int item, int app);extern int is_readapp (ITEMSET *iset, FILE *file);extern int is_read (ITEMSET *iset, FILE *file);extern int is_recode (ITEMSET *iset, int minfrq, int dir, int *map);extern void is_trunc (ITEMSET *iset, int cnt);extern int is_filter (ITEMSET *iset, const char *marks);extern int is_tsize (ITEMSET *iset);extern int* is_tract (ITEMSET *iset);/*---------------------------------------------------------------------- Transaction Functions----------------------------------------------------------------------*/extern void ta_sort (int *items, int n);extern int ta_unique (int *items, int n);extern int ta_filter (int *items, int n, const char *marks);/*---------------------------------------------------------------------- Transaction Set Functions----------------------------------------------------------------------*/extern TASET* tas_create (ITEMSET *itemset);extern void tas_delete (TASET *taset, int delis);extern ITEMSET* tas_itemset (TASET *taset);extern int tas_cnt (TASET *taset);extern int tas_add (TASET *taset, const int *items, int n);extern int* tas_tract (TASET *taset, int index);extern int tas_tsize (TASET *taset, int index);extern int tas_total (TASET *taset);extern void tas_recode (TASET *taset, int *map, int cnt);extern int tas_filter (TASET *taset, const char *marks);extern void tas_shuffle (TASET *taset, double randfn(void));extern void tas_sort (TASET *taset, int heap);extern int tas_occur (TASET *taset, const int *items, int n);#ifndef NDEBUGextern void tas_show (TASET *taset);#endif/*---------------------------------------------------------------------- Transaction Tree Functions----------------------------------------------------------------------*/extern TATREE* tat_create (TASET *taset, int heap);extern void tat_delete (TATREE *tat);extern int tat_cnt (TATREE *tat);extern int tat_max (TATREE *tat);extern int tat_size (TATREE *tat);extern int* tat_items (TATREE *tat);extern int tat_item (TATREE *tat, int index);extern TATREE* tat_child (TATREE *tat, int index);extern void tat_mark (TATREE *tat);#ifndef NDEBUGextern void tat_show (TATREE *tat);#endif/*---------------------------------------------------------------------- Preprocessor Definitions----------------------------------------------------------------------*/#define is_tfscan(s) ((s)->tfscan)#define is_cnt(s) nim_cnt((s)->nimap)#define is_name(s,i) nim_name(nim_byid((s)->nimap, i))#define is_getfrq(s,i) (((ITEM*)nim_byid((s)->nimap, i))->frq)#define is_setfrq(s,i,f) (((ITEM*)nim_byid((s)->nimap, i))->frq = (f))#define is_addfrq(s,i,f) (((ITEM*)nim_byid((s)->nimap, i))->frq += (f))#define is_getxfq(s,i) (((ITEM*)nim_byid((s)->nimap, i))->xfq)#define is_setxfq(s,i,f) (((ITEM*)nim_byid((s)->nimap, i))->xfq = (f))#define is_getapp(s,i) (((ITEM*)nim_byid((s)->nimap, i))->app)#define is_setapp(s,i,a) (((ITEM*)nim_byid((s)->nimap, i))->app = (a))#define is_trunc(s,n) nim_trunc((s)->nimap, n)#define is_tsize(s) ((s)->cnt)#define is_tract(s) ((s)->items)/*--------------------------------------------------------------------*/#define ta_sort(v,n) v_intsort(v,n)/*--------------------------------------------------------------------*/#define tas_itemset(s) ((s)->itemset)#define tas_cnt(s) ((s)->cnt)#define tas_max(s) ((s)->max)#define tas_tract(s,i) ((s)->tracts[i]->items)#define tas_tsize(s,i) ((s)->tracts[i]->cnt)#define tas_total(s) ((s)->total)#define tas_shuffle(s,f) v_shuffle((s)->tracts, (s)->cnt, f)/*--------------------------------------------------------------------*/#define tat_cnt(t) ((t)->cnt)#define tat_max(t) ((t)->max)#define tat_size(t) ((t)->size)#define tat_item(t,i) ((t)->items[i])#define tat_items(t) ((t)->items)#ifndef ARCH64#define tat_child(t,i) (((TATREE**)((t)->items +(t)->size))[i])#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -