|
Graphviz
2.29.20120524.0446
|
00001 /* $Id$ $Revision$ */ 00002 /* vim:set shiftwidth=4 ts=8: */ 00003 00019 /********************************************************** 00020 * Written by Tim Dwyer for the graphviz package * 00021 * http://www.graphviz.org/ * 00022 * * 00023 **********************************************************/ 00024 00025 #ifdef __cplusplus 00026 extern "C" { 00027 #endif 00028 00029 #ifndef _QUAD_PROG_VPSC_H_ 00030 #define _QUAD_PROG_VPSC_H_ 00031 00032 #ifdef DIGCOLA 00033 00034 #include "defs.h" 00035 #include "digcola.h" 00036 #ifdef MOSEK 00037 #include "mosek_quad_solve.h" 00038 #endif /* MOSEK */ 00039 00040 typedef struct CMajEnvVPSC { 00041 float **A; 00042 float *packedMat; 00043 int nv; /* number of actual vars */ 00044 int nldv; /* number of dummy nodes included in lap matrix */ 00045 int ndv; /* number of dummy nodes not included in lap matrix */ 00046 Variable **vs; 00047 int m; /* total number of constraints for next iteration */ 00048 int gm; /* number of global constraints */ 00049 Constraint **cs; 00050 /* global constraints are persistant throughout optimisation process */ 00051 Constraint **gcs; 00052 VPSC *vpsc; 00053 float *fArray1; /* utility arrays - reusable memory */ 00054 float *fArray2; 00055 float *fArray3; 00056 #ifdef MOSEK 00057 MosekEnv *mosekEnv; 00058 #endif /* MOSEK */ 00059 } CMajEnvVPSC; 00060 00061 extern CMajEnvVPSC* initCMajVPSC(int n, float *packedMat, vtx_data* graph, ipsep_options *opt, int diredges); 00062 00063 extern int constrained_majorization_vpsc(CMajEnvVPSC*, float*, float*, int); 00064 00065 extern void deleteCMajEnvVPSC(CMajEnvVPSC *e); 00066 extern void generateNonoverlapConstraints( 00067 CMajEnvVPSC* e, 00068 float nsizeScale, 00069 float** coords, 00070 int k, 00071 boolean transitiveClosure, 00072 ipsep_options* opt 00073 ); 00074 00075 extern void removeoverlaps(int,float**,ipsep_options*); 00076 00077 typedef struct { 00078 int *nodes; 00079 int num_nodes; 00080 } DigColaLevel; 00081 00082 /* 00083 * unpack the "ordering" array into an array of DigColaLevel (as defined above) 00084 */ 00085 extern DigColaLevel* assign_digcola_levels(int *ordering, int n, int *level_inds, int num_divisions); 00086 extern void delete_digcola_levels(DigColaLevel *l, int num_levels); 00087 extern void print_digcola_levels(FILE* logfile, DigColaLevel *levels, int num_levels); 00088 int get_num_digcola_constraints(DigColaLevel *levels, int num_levels); 00089 #endif 00090 00091 #endif /* _QUAD_PROG_VPSC_H_ */ 00092 00093 #ifdef __cplusplus 00094 } 00095 #endif
1.7.5