Scippy

SCIP

Solving Constraint Integer Programs

termsepadefs.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scip.zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file termsepadefs.h
17  * @brief includes definitions data structures for terminal separator based methods for Steiner tree problems
18  * @author Daniel Rehfeldt
19  *
20  *
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 
26 
27 #ifndef APPLICATIONS_STP_SRC_TERMSEPADEFS_H_
28 #define APPLICATIONS_STP_SRC_TERMSEPADEFS_H_
29 
30 #include "scip/scip.h"
31 #include "graph.h"
32 
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 /** terminal separator tree bottleneck structure */
40 
41 
42 /** separator data needed to build component */
44 {
45  SCIP_Real* nodes_bdist; /**< bottleneck computation distance for each node, always reset to -1.0 */
46  const int* sepaterms; /**< separator terminals NON OWNED */
47  int sourceterm; /**< source terminal NOTE: we eliminate the associated sub-graph! */
48  int nsepatterms; /**< size of separator */
49  int ncomponentnodes; /**< NOTE: possibly overestimate */
50  int componentnumber; /**< number of component (0,1,...)*/
51  int ngraphnodes; /**< number of nodes of underlying graph, not counting degree 0 nodes */
52  int maxncompchecks; /**< maximum number of components to check */
53  int maxsepasize; /**< maximum allowed size of a separator */
54  SCIP_Bool rootcompIsProcessed;/**< already processed root component? */
55 } COMPBUILDER;
56 
57 
58 #include "stpvector.h"
59 
60 /** (extended) terminal component */
62 {
63  COMPBUILDER* builder; /**< initializer; NON-OWNED */
64  GRAPH* subgraph; /**< graph for (extended) component */
65  TBOTTLENECK* subsolbottleneck; /**< tree bottleneck on sub-solution */
66  int* subsolution; /**< primal solution for (extended) component (CONNECTED/UNKNOWN) */
67  int* nodemap_orgToSub; /**< map */
68  int* nodemap_subToOrg; /**< map */
69  int* edgemap_subToOrg; /**< map */
70  int* nodes_mark; /**< marker for nodes of component */
71  STP_Vectype(int) bfsqueue; /**< queue for BFS */
73  int subnnodes;
74  int subnedges;
75 } TERMCOMP;
76 
77 
78 
79 #ifdef __cplusplus
80 }
81 #endif
82 
83 
84 #endif /* APPLICATIONS_STP_SRC_TERMSEPADEFS_H_ */
#define STP_Vectype(type)
Definition: stpvector.h:44
includes various files containing graph methods used for Steiner tree problems
header only, simple implementation of an STL like vector
struct terminial_component_initializer COMPBUILDER
struct terminal_separator_component TERMCOMP
#define SCIP_Bool
Definition: def.h:84
#define SCIP_Real
Definition: def.h:177
TBOTTLENECK * subsolbottleneck
Definition: termsepadefs.h:65
SCIP callable library.