OSDN Git Service

ver1.1
[nysol/mining.git] / zdd / lib / SAPPOROBDD / src / BDDLCM / problem.h
diff --git a/zdd/lib/SAPPOROBDD/src/BDDLCM/problem.h b/zdd/lib/SAPPOROBDD/src/BDDLCM/problem.h
new file mode 100755 (executable)
index 0000000..143ccbf
--- /dev/null
@@ -0,0 +1,160 @@
+/*  Common problem input/output routines /structure
+            25/Nov/2007   by Takeaki Uno  e-mail:uno@nii.jp, 
+    homepage:   http://research.nii.ac.jp/~uno/index.html  */
+/* This program is available for only academic use, basically.
+   Anyone can modify this program, but he/she has to write down 
+    the change of the modification on the top of the source code.
+   Neither contact nor appointment to Takeaki Uno is needed.
+   If one wants to re-distribute this code, do not forget to 
+    refer the newest code, and show the link to homepage of 
+    Takeaki Uno, to notify the news about the codes for the users.
+   For the commercial use, please make a contact to Takeaki Uno. */
+
+/***************************************************/
+
+#ifndef _problem_h_
+#define _problem_h_
+
+#include"stdlib2.h"
+#include"queue.h"
+#include"itemset.h"
+
+#define PROBLEM_FREQSET 1
+#define PROBLEM_MAXIMAL 2
+#define PROBLEM_CLOSED 4
+#define PROBLEM_EX_MAXIMAL 8
+#define PROBLEM_EX_CLOSED 16
+
+/*****  parameters for PROBLEM initialization, given to flag  *****/
+
+#define PROBLEM_PRINT_DENSE 4  // print density threshold
+#define PROBLEM_PRINT_SHRINK 8  // print properties of shrinked database
+#define PROBLEM_PRINT_FRQ   16  // print density threshold
+#define PROBLEM_NORMALIZE   32  // print density threshold
+
+#define PROBLEM_ITEMARY 128 // alloc itemary
+#define PROBLEM_ITEMJUMP 256 // alloc itemjump
+#define PROBLEM_ITEMFLAG 512  // alloc itemflag
+#define PROBLEM_ITEMMARK 1024  // alloc itemmark
+#define PROBLEM_ITEMCAND 2048 // alloc itemcand
+#define PROBLEM_VECARY 4096 // alloc itemary
+#define PROBLEM_VECJUMP 8192 // alloc vecjump
+#define PROBLEM_VECFLAG 16384  // alloc vecflag
+#define PROBLEM_VECMARK 32768  // alloc vecmark
+#define PROBLEM_VECCAND 65536 // alloc veccand
+//4194304
+#define PROBLEM_OCC_T 524288 // alloc occ_t
+#define PROBLEM_SHIFT 1048576  // allocate shift
+#define PROBLEM_OCC_W 2097152  // weight/positive-weight sum for items
+#define PROBLEM_OCC_PW 4194304  // weight/positive-weight sum for items
+#define PROBLEM_OCC_W2 8388608  // weight/positive-weight sum for items
+
+#define PROBLEM_OCC1 16 // alloc occ
+#define PROBLEM_OCC2 32 // alloc occ and ins all to list 0
+#define PROBLEM_OCC3 48 // alloc occ and ins all to list "siz"
+
+typedef struct {
+  clock_t start_time, end_time;
+  int problem;
+  LONG prog;
+  int prog2;
+  double dense;
+  char *input_fname;
+  char *output_fname;
+  char *weight_fname;
+  char *table_fname, *table2_fname;
+  char *position_fname, *position2_fname;
+
+  char *sgraph_fname, *sgraph2_fname;
+  char *sgraph_wfname, *sgraph2_wfname;
+  char *agraph_fname, *agraph2_fname;
+  char *trsact_fname, *trsact_fname2, *trsact_wfname, *trsact_wfname2, *trsact_pfname;
+  char *trsact2_fname, *trsact2_fname2, *trsact2_wfname, *trsact2_wfname2, *trsact2_pfname;
+  char *seq_fname, *seq2_fname;
+  char *fstar_fname, *fstar2_fname;
+  char *mat_fname, *mat2_fname;
+  char *smat_fname, *smat2_fname;
+  char *setfamily_fname, *setfamily2_fname;
+  char *setfamily_wfname, *setfamily2_wfname;
+  
+  ITEMSET II, II2;
+  QUEUE ff;      // for agraph search
+  int *vf, *dep; // for agraph search
+
+  int root, dir, edge_dir;
+  double th, th2, th3;   // thresholds
+  double ratio, ratio2;  // ratio
+  int num, siz, dim, len;
+  QUEUE_INT clms;
+  VEC_ID rows;
+
+  QUEUE_ID **shift;
+  QUEUE itemjump, itemcand, vecjump, veccand, *OQ, *OQ2, *VQ, *VQ2;   // for delivery
+  QUEUE_INT *itemary;
+  int *itemmark, *itemflag, *vecmark, *vecflag;  // mark for vector
+  VEC_ID *vecary, *occ_t;
+  WEIGHT *occ_w, *occ_pw, *occ_w2, *occ_pw2;
+  QUEUE oo;
+
+  char *pat;   // pattern string
+  int plen, perr;  // pattern length and #error allowed
+
+#ifdef _alist_h_
+  MALIST occ;
+#endif
+
+#ifdef _sgraph_h_
+  SGRAPH SG, SG2;
+#endif
+
+#ifdef _agraph_h_
+  AGRAPH AG, AG2;
+#endif
+
+#ifdef _trsact_h_
+  TRSACT TT, TT2;
+#endif
+
+#ifdef _seq_h_
+  SEQ SS, SS2;
+#endif
+
+#ifdef _fstar_h_
+  FSTAR FS, FS2;
+#endif
+
+#ifdef _vec_h_
+  MAT MM, MM2;
+  SMAT SM, SM2;
+  SETFAMILY FF, FF2;
+#endif
+
+} PROBLEM;
+
+
+/*****  print filename information  ****/
+void PROBLEM_print (PROBLEM *P);
+
+/*****  print usage of the program *****/
+void PROBLEM_error ();
+
+/*****  read parameters given by command line  *****/
+void PROBLEM_read_param (int argc, char *argv[], PROBLEM *P);
+
+/*****  PROBLEM and ITEMSET initialization *****/
+/* all pointers are set to NULL, but don't touch filenames */
+void PROBLEM_init (PROBLEM *P);
+
+/*****  PROBLEM initialization: load the files given by filenames   ******/
+void PROBLEM_init2 (PROBLEM *P, int flag);
+
+/*****  allocate memory according to flag  *****/
+void PROBLEM_alloc (PROBLEM *PP, QUEUE_ID siz, QUEUE_ID siz2, size_t siz3, PERM *p, int f);
+
+/* termination of problem */
+void PROBLEM_end (PROBLEM *PP);
+
+
+#endif
+
+