1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (C) 2002-2021 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 scipopt.org. */ 13 /* */ 14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 16 /**@file type_tree.h 17 * @brief type definitions for branch and bound tree 18 * @author Tobias Achterberg 19 */ 20 21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 22 23 #ifndef __SCIP_TYPE_TREE_H__ 24 #define __SCIP_TYPE_TREE_H__ 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 enum SCIP_NodeType 31 { 32 SCIP_NODETYPE_FOCUSNODE = 0, /**< the focus node, whose data is stored in the tree data structure */ 33 SCIP_NODETYPE_PROBINGNODE = 1, /**< temporary child node of the focus or refocused node used for probing */ 34 SCIP_NODETYPE_SIBLING = 2, /**< unsolved sibling of the focus node */ 35 SCIP_NODETYPE_CHILD = 3, /**< unsolved child of the focus node */ 36 SCIP_NODETYPE_LEAF = 4, /**< unsolved leaf of the tree, stored in the tree's queue */ 37 SCIP_NODETYPE_DEADEND = 5, /**< temporary type of focus node, if it was solved completely */ 38 SCIP_NODETYPE_JUNCTION = 6, /**< fork without LP solution */ 39 SCIP_NODETYPE_PSEUDOFORK = 7, /**< fork without LP solution and added rows and columns */ 40 SCIP_NODETYPE_FORK = 8, /**< fork with solved LP and added rows and columns */ 41 SCIP_NODETYPE_SUBROOT = 9, /**< fork with solved LP and arbitrarily changed rows and columns */ 42 SCIP_NODETYPE_REFOCUSNODE = 10 /**< junction, fork, or subroot that was refocused for domain propagation */ 43 }; 44 typedef enum SCIP_NodeType SCIP_NODETYPE; /**< type of node */ 45 46 typedef struct SCIP_Probingnode SCIP_PROBINGNODE; /**< data for probing nodes */ 47 typedef struct SCIP_Sibling SCIP_SIBLING; /**< data for sibling nodes */ 48 typedef struct SCIP_Child SCIP_CHILD; /**< data for child nodes */ 49 typedef struct SCIP_Leaf SCIP_LEAF; /**< data for leaf nodes */ 50 typedef struct SCIP_Junction SCIP_JUNCTION; /**< data for junction nodes */ 51 typedef struct SCIP_Pseudofork SCIP_PSEUDOFORK; /**< data for pseudo fork nodes */ 52 typedef struct SCIP_Fork SCIP_FORK; /**< data for fork nodes */ 53 typedef struct SCIP_Subroot SCIP_SUBROOT; /**< data for subroot nodes */ 54 typedef struct SCIP_Node SCIP_NODE; /**< node data structure */ 55 typedef struct SCIP_PendingBdchg SCIP_PENDINGBDCHG; /**< bound change information for pending bound changes */ 56 typedef struct SCIP_Tree SCIP_TREE; /**< branch and bound tree */ 57 58 #ifdef __cplusplus 59 } 60 #endif 61 62 #endif 63