Scippy

SCIP

Solving Constraint Integer Programs

graph_history.c File Reference

Detailed Description

includes graph ancestor methods for Steiner problems

Author
Daniel Rehfeldt

Graph ancestor methods for Steiner problems. Usually used to reconstruct a graph after reductions

Definition in file graph_history.c.

#include <assert.h>
#include "graph.h"
#include "portab.h"

Go to the source code of this file.

Data Structures

struct  fixed_graph_components
 
struct  blocked_pseudo_ancestor
 
struct  pseudo_ancestors
 

Typedefs

typedef struct blocked_pseudo_ancestor BLOCKANS
 

Functions

static int getNextPow2 (int number)
 
static SCIP_Bool ancestorsMarkConflict (const GRAPH *graph, int edge, int *ancestormark)
 
static void ancestorsUnmarkConflict (const GRAPH *graph, int edge, int *ancestormark)
 
static SCIP_RETCODE blockedAncestors_init (int nblocks, BLOCKANS **blockedans)
 
static void blockedAncestors_freeBlock (SCIP *scip, int block_id, BLOCKANS *blockedans)
 
static void blockedAncestors_free (SCIP *scip, BLOCKANS **blockedans)
 
static void blockedAncestors_hash (const BLOCKANS *blockedans, int block_id, int *hasharr)
 
static void blockedAncestors_unhashPartial (const BLOCKANS *blockedans, int block_id, int nAncestorsToClean, int *hasharr)
 
static void blockedAncestors_hashDirty (const BLOCKANS *blockedans, int block_id, SCIP_Bool revertIfConflict, SCIP_Bool *conflict, int *hasharr)
 
static void blockedAncestors_unhashDirty (const BLOCKANS *blockedans, int block_id, int *hasharr)
 
static SCIP_Bool blockedAncestors_hashIsHit (const BLOCKANS *blockedans, int ancestor, const int *hasharr)
 
static SCIP_Bool blockedAncestors_hashIsHitBlock (const BLOCKANS *blockedans, int block_id, const int *hasharr)
 
static SCIP_RETCODE blockedAncestors_realloc (SCIP *scip, int block_id, int capacity_new, BLOCKANS *blockedans)
 
static SCIP_Bool blockedAncestors_blockIsValid (int block_id, const BLOCKANS *blockedans, int *hasharr)
 
static SCIP_RETCODE blockedAncestors_appendArray (SCIP *scip, int block_target, const int *ancestors_source, int size_source, SCIP_Bool breakOnConflict, int hasharr_size, BLOCKANS *blockedans_target, SCIP_Bool *conflict)
 
static SCIP_RETCODE blockedAncestors_appendCopy (SCIP *scip, int block_target, const BLOCKANS *blockedans_source, int block_source, SCIP_Bool breakOnConflict, int hasharr_size, BLOCKANS *blockedans_target, SCIP_Bool *conflict)
 
static SCIP_RETCODE blockedAncestors_addAncestor (SCIP *scip, int block_target, int ancestor, int hasharr_size, BLOCKANS *blockedans)
 
static SCIP_Bool blockedAncestors_isValid (SCIP *scip, int hasharr_size, const BLOCKANS *blockedans)
 
static SCIP_Bool fixedPseudoAncestorsAreValid (SCIP *scip, const GRAPH *g)
 
SCIP_RETCODE graph_singletonAncestors_init (SCIP *scip, const GRAPH *g, int edge, SINGLETONANS *singletonans)
 
void graph_singletonAncestors_freeMembers (SCIP *scip, SINGLETONANS *singletonans)
 
SCIP_Bool graph_valid_ancestors (SCIP *scip, const GRAPH *g)
 
void graph_pseudoAncestors_hashEdge (const PSEUDOANS *pseudoancestors, int edge, int *hasharr)
 
void graph_pseudoAncestors_hashNode (const PSEUDOANS *pseudoancestors, int node, int *hasharr)
 
void graph_pseudoAncestors_unhashEdge (const PSEUDOANS *pseudoancestors, int edge, int *hasharr)
 
void graph_pseudoAncestors_unhashNode (const PSEUDOANS *pseudoancestors, int node, int *hasharr)
 
void graph_pseudoAncestors_hashEdgeDirty (const PSEUDOANS *pseudoancestors, int edge, SCIP_Bool revertIfConflict, SCIP_Bool *conflict, int *hasharr)
 
void graph_pseudoAncestors_hashNodeDirty (const PSEUDOANS *pseudoancestors, int node, SCIP_Bool revertIfConflict, SCIP_Bool *conflict, int *hasharr)
 
void graph_pseudoAncestors_unhashEdgeDirty (const PSEUDOANS *pseudoancestors, int edge, int *hasharr)
 
void graph_pseudoAncestors_unhashNodeDirty (const PSEUDOANS *pseudoancestors, int node, int *hasharr)
 
SCIP_Bool graph_pseudoAncestors_edgeIsHashed (const PSEUDOANS *pseudoancestors, int edge, const int *hasharr)
 
SCIP_Bool graph_pseudoAncestors_nodeIsHashed (const PSEUDOANS *pseudoancestors, int node, const int *hasharr)
 
SCIP_RETCODE graph_initAncestors (SCIP *scip, GRAPH *g)
 
SCIP_Bool graph_pseudoAncestors_edgesInConflict (SCIP *scip, const GRAPH *g, const int *edges, int nedges)
 
SCIP_RETCODE graph_initPseudoAncestors (SCIP *scip, GRAPH *g)
 
SCIP_RETCODE graph_initPseudoAncestorsSized (SCIP *scip, int nedges, GRAPH *g)
 
void graph_freePseudoAncestors (SCIP *scip, GRAPH *g)
 
void graph_edge_delPseudoAncestors (SCIP *scip, int edge_free, GRAPH *g)
 
void graph_knot_delPseudoAncestors (SCIP *scip, int node_free, GRAPH *g)
 
int graph_edge_nPseudoAncestors (const GRAPH *g, int edge)
 
int graph_knot_nPseudoAncestors (const GRAPH *g, int node)
 
const int * graph_edge_getPseudoAncestors (const GRAPH *g, int edge)
 
IDXgraph_edge_getAncestors (const GRAPH *g, int edge)
 
void graph_knot_printPseudoAncestors (const GRAPH *g, int node)
 
void graph_edge_printPseudoAncestors (const GRAPH *g, int edge)
 
const int * graph_knot_getPseudoAncestors (const GRAPH *g, int node)
 
int graph_getNpseudoAncestors (const GRAPH *g)
 
void graph_addPseudoAncestor (GRAPH *g, int *pseudoancestor)
 
void graph_addPseudoAncestors (int nadd, GRAPH *g)
 
int graph_pseudoAncestorsGetHashArraySize (const PSEUDOANS *pseudoancestors)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopyEdge (SCIP *scip, int edge_target, int edge_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopyNode (SCIP *scip, int node_target, int node_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopyNodeToEdge (SCIP *scip, int edge_target, int node_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopyEdgeToNode (SCIP *scip, int node_target, int edge_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopySingToEdge (SCIP *scip, int edge_target, const SINGLETONANS *source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendCopyArrayToEdge (SCIP *scip, int edge_target, const int *ancestors, int nancestors, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendMoveEdge (SCIP *scip, int edge_target, int edge_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_appendMoveNode (SCIP *scip, int node_target, int node_source, SCIP_Bool revertIfConflict, GRAPH *g, SCIP_Bool *conflict)
 
SCIP_RETCODE graph_pseudoAncestors_addToEdge (SCIP *scip, int edge_target, int ancestor, GRAPH *g)
 
SCIP_RETCODE graph_pseudoAncestors_addToNode (SCIP *scip, int node_target, int ancestor, GRAPH *g)
 
SCIP_Bool graph_valid_pseudoAncestors (SCIP *scip, const GRAPH *g)
 
SCIP_RETCODE graph_init_fixed (SCIP *scip, GRAPH *g)
 
void graph_free_fixed (SCIP *scip, GRAPH *g)
 
void graph_free_fixedEdgesOnly (SCIP *scip, GRAPH *g)
 
SCIP_RETCODE graph_fixed_add (SCIP *scip, IDX *edges, const int *pseudonodes, int npseudonodes, GRAPH *g)
 
SCIP_RETCODE graph_fixed_addEdge (SCIP *scip, int edge, GRAPH *g)
 
SCIP_RETCODE graph_fixed_addNodePc (SCIP *scip, int node, GRAPH *g)
 
SCIP_RETCODE graph_fixed_moveNodePc (SCIP *scip, int node, GRAPH *g)
 
void graph_fixed_resetMoved (GRAPH *g)
 
SCIP_RETCODE graph_initContractTracing (SCIP *scip, GRAPH *graph)
 
SCIP_Bool graph_knot_hasContractTrace (int node, const GRAPH *graph)
 
int graph_contractTrace (int node, const GRAPH *graph)
 
SCIP_RETCODE graph_copyFixed (SCIP *scip, GRAPH *g, SCIP_Bool moveFixedEdges, GRAPH *g_copy)
 
IDXgraph_getFixedges (const GRAPH *g)
 
const int * graph_getFixpseudonodes (SCIP *scip, const GRAPH *g)
 
int graph_getNfixpseudonodes (const GRAPH *g)
 

Typedef Documentation

◆ BLOCKANS

blocked pseudo ancestors

Function Documentation

◆ getNextPow2()

static int getNextPow2 ( int  number)
inlinestatic

get next power of 2 number; assumes number >= 1 and number < UINT_MAX

Definition at line 64 of file graph_history.c.

References SCIPdebugMessage.

Referenced by blockedAncestors_addAncestor(), blockedAncestors_appendArray(), and graph_pseudoAncestorsGetHashArraySize().

◆ ancestorsMarkConflict()

static SCIP_Bool ancestorsMarkConflict ( const GRAPH graph,
int  edge,
int *  ancestormark 
)
static

mark ancestors of given edge

Parameters
graphgraph data structure
edgeedge to use
ancestormarkancestor mark array

Definition at line 88 of file graph_history.c.

References GRAPH::ancestors, GRAPH::edges, FALSE, MAX, NULL, GRAPH::orgedges, and TRUE.

Referenced by graph_valid_ancestors().

◆ ancestorsUnmarkConflict()

static void ancestorsUnmarkConflict ( const GRAPH graph,
int  edge,
int *  ancestormark 
)
static

unmark ancestors of given edge

Parameters
graphgraph data structure
edgeedge to use
ancestormarkancestor mark array

Definition at line 114 of file graph_history.c.

References GRAPH::ancestors, GRAPH::edges, MAX, NULL, and GRAPH::orgedges.

Referenced by graph_valid_ancestors().

◆ blockedAncestors_init()

static SCIP_RETCODE blockedAncestors_init ( int  nblocks,
BLOCKANS **  blockedans 
)
static

initialize

Parameters
nblocksnumber of ancestor blocks
blockedansblocked pseudo-ancestors

Definition at line 132 of file graph_history.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and SCIPallocMemoryArray.

Referenced by graph_initPseudoAncestorsSized().

◆ blockedAncestors_freeBlock()

static void blockedAncestors_freeBlock ( SCIP scip,
int  block_id,
BLOCKANS blockedans 
)
inlinestatic

free

Parameters
scipSCIP data structure
block_idid for which to free pseudo ancestors
blockedansblocked pseudo-ancestors

Definition at line 168 of file graph_history.c.

References blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, NULL, SCIPfreeBlockMemoryArray, and blocked_pseudo_ancestor::sizes.

Referenced by blockedAncestors_free(), graph_edge_delPseudoAncestors(), and graph_knot_delPseudoAncestors().

◆ blockedAncestors_free()

static void blockedAncestors_free ( SCIP scip,
BLOCKANS **  blockedans 
)
static

free

Parameters
scipSCIP data structure
blockedansblocked pseudo-ancestors

Definition at line 197 of file graph_history.c.

References blockedAncestors_freeBlock(), blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, blocked_pseudo_ancestor::nblocks, SCIPfreeMemoryArray, and blocked_pseudo_ancestor::sizes.

Referenced by graph_freePseudoAncestors().

◆ blockedAncestors_hash()

static void blockedAncestors_hash ( const BLOCKANS blockedans,
int  block_id,
int *  hasharr 
)
inlinestatic

hash ancestors of given entry

Parameters
blockedansblocked pseudo-ancestors
block_identry for which to reallocate
hasharrhash array for pseudo ancestors

Definition at line 225 of file graph_history.c.

References a, blocked_pseudo_ancestor::blocks, and blocked_pseudo_ancestor::sizes.

Referenced by blockedAncestors_appendArray(), graph_pseudoAncestors_hashEdge(), and graph_pseudoAncestors_hashNode().

◆ blockedAncestors_unhashPartial()

static void blockedAncestors_unhashPartial ( const BLOCKANS blockedans,
int  block_id,
int  nAncestorsToClean,
int *  hasharr 
)
inlinestatic

unhash nAncestorsToClean many ancestors

Parameters
blockedansblocked pseudo-ancestors
block_identry for which to reallocate
nAncestorsToCleannumber of (first) ancestors to use for clean, or -1 to clean all
hasharrhash array for pseudo ancestors

Definition at line 250 of file graph_history.c.

References a, blocked_pseudo_ancestor::blocks, and blocked_pseudo_ancestor::sizes.

Referenced by blockedAncestors_appendArray(), graph_pseudoAncestors_unhashEdge(), and graph_pseudoAncestors_unhashNode().

◆ blockedAncestors_hashDirty()

static void blockedAncestors_hashDirty ( const BLOCKANS blockedans,
int  block_id,
SCIP_Bool  revertIfConflict,
SCIP_Bool conflict,
int *  hasharr 
)
inlinestatic

hash ancestors of given entry with possible conflicts

Parameters
blockedansblocked pseudo-ancestors
block_identry for which to reallocate
revertIfConflictbreak on conflict?
conflictconflict?
hasharrhash array for pseudo ancestors

Definition at line 277 of file graph_history.c.

References a, blocked_pseudo_ancestor::blocks, FALSE, blocked_pseudo_ancestor::sizes, and TRUE.

Referenced by blockedAncestors_blockIsValid(), graph_pseudoAncestors_hashEdgeDirty(), and graph_pseudoAncestors_hashNodeDirty().

◆ blockedAncestors_unhashDirty()

static void blockedAncestors_unhashDirty ( const BLOCKANS blockedans,
int  block_id,
int *  hasharr 
)
inlinestatic

unhash ancestors of given entry with possible conflicts

Parameters
blockedansblocked pseudo-ancestors
block_identry for which to reallocate
hasharrhash array for pseudo ancestors

Definition at line 331 of file graph_history.c.

References a, blocked_pseudo_ancestor::blocks, and blocked_pseudo_ancestor::sizes.

Referenced by blockedAncestors_blockIsValid(), graph_pseudoAncestors_unhashEdgeDirty(), and graph_pseudoAncestors_unhashNodeDirty().

◆ blockedAncestors_hashIsHit()

static SCIP_Bool blockedAncestors_hashIsHit ( const BLOCKANS blockedans,
int  ancestor,
const int *  hasharr 
)
inlinestatic

ancestor already hashed?

Parameters
blockedansblocked pseudo-ancestors
ancestorancestor to check
hasharrhash array for pseudo ancestors

Definition at line 357 of file graph_history.c.

Referenced by blockedAncestors_appendArray().

◆ blockedAncestors_hashIsHitBlock()

static SCIP_Bool blockedAncestors_hashIsHitBlock ( const BLOCKANS blockedans,
int  block_id,
const int *  hasharr 
)
inlinestatic

any ancestors of given entry are already hashed?

Parameters
blockedansblocked pseudo-ancestors
block_identry for which to check for conflicts
hasharrhash array for pseudo ancestors

Definition at line 372 of file graph_history.c.

References a, blocked_pseudo_ancestor::blocks, FALSE, blocked_pseudo_ancestor::sizes, and TRUE.

Referenced by graph_pseudoAncestors_edgeIsHashed(), and graph_pseudoAncestors_nodeIsHashed().

◆ blockedAncestors_realloc()

static SCIP_RETCODE blockedAncestors_realloc ( SCIP scip,
int  block_id,
int  capacity_new,
BLOCKANS blockedans 
)
inlinestatic

reallocate ancestor array of given entry

Parameters
scipSCIP data structure
block_identry for which to reallocate
capacity_newthe new capacity
blockedansblocked pseudo-ancestors

Definition at line 401 of file graph_history.c.

References blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPreallocBlockMemoryArray, and blocked_pseudo_ancestor::sizes.

Referenced by blockedAncestors_addAncestor(), and blockedAncestors_appendArray().

◆ blockedAncestors_blockIsValid()

static SCIP_Bool blockedAncestors_blockIsValid ( int  block_id,
const BLOCKANS blockedans,
int *  hasharr 
)
inlinestatic

pseudo ancestors of given block without conflicts?

Parameters
block_identry for which to reallocate
blockedansblocked pseudo-ancestors
hasharrclean hash array for pseudo ancestors

Definition at line 438 of file graph_history.c.

References blockedAncestors_hashDirty(), blockedAncestors_unhashDirty(), FALSE, and SCIP_Bool.

Referenced by blockedAncestors_addAncestor(), and blockedAncestors_isValid().

◆ blockedAncestors_appendArray()

static SCIP_RETCODE blockedAncestors_appendArray ( SCIP scip,
int  block_target,
const int *  ancestors_source,
int  size_source,
SCIP_Bool  breakOnConflict,
int  hasharr_size,
BLOCKANS blockedans_target,
SCIP_Bool conflict 
)
static

appends copy of pseudo ancestors of source to target

Parameters
scipSCIP data structure
block_targettarget block
ancestors_sourceancestors to append
size_sourcenumber of ancestors to append
breakOnConflictbreak on conflict
hasharr_sizesize for hash array
blockedans_targetblocked pseudo-ancestors
conflictconflict?

Definition at line 458 of file graph_history.c.

References blockedAncestors_hash(), blockedAncestors_hashIsHit(), blockedAncestors_realloc(), blockedAncestors_unhashPartial(), blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, getNextPow2(), SCIP_CALL, SCIP_OKAY, SCIPallocCleanBufferArray, SCIPfreeCleanBufferArray, blocked_pseudo_ancestor::sizes, and TRUE.

Referenced by blockedAncestors_appendCopy(), graph_pseudoAncestors_appendCopyArrayToEdge(), and graph_pseudoAncestors_appendCopySingToEdge().

◆ blockedAncestors_appendCopy()

static SCIP_RETCODE blockedAncestors_appendCopy ( SCIP scip,
int  block_target,
const BLOCKANS blockedans_source,
int  block_source,
SCIP_Bool  breakOnConflict,
int  hasharr_size,
BLOCKANS blockedans_target,
SCIP_Bool conflict 
)
static

appends copy of pseudo ancestors of source to target

Parameters
scipSCIP data structure
block_targettarget block
blockedans_sourceblocked pseudo-ancestors
block_sourcesource block
breakOnConflictbreak on conflict
hasharr_sizesize of hash array
blockedans_targetblocked pseudo-ancestors
conflictconflict?

Definition at line 531 of file graph_history.c.

References blockedAncestors_appendArray(), blocked_pseudo_ancestor::blocks, FALSE, SCIP_CALL, SCIP_OKAY, and blocked_pseudo_ancestor::sizes.

Referenced by graph_pseudoAncestors_appendCopyEdge(), graph_pseudoAncestors_appendCopyEdgeToNode(), graph_pseudoAncestors_appendCopyNode(), and graph_pseudoAncestors_appendCopyNodeToEdge().

◆ blockedAncestors_addAncestor()

static SCIP_RETCODE blockedAncestors_addAncestor ( SCIP scip,
int  block_target,
int  ancestor,
int  hasharr_size,
BLOCKANS blockedans 
)
static

adds pseudo ancestor to ancestor list of given block

Parameters
scipSCIP data structure
block_targetblock for which to add pseudo ancestor
ancestor(index of) pseudo ancestor
hasharr_sizesize of hash array
blockedansblocked pseudo-ancestors

Definition at line 565 of file graph_history.c.

References blockedAncestors_blockIsValid(), blockedAncestors_realloc(), blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, getNextPow2(), SCIP_CALL, SCIP_CALL_ABORT, SCIP_OKAY, SCIPallocCleanBufferArray, SCIPfreeCleanBufferArray, and blocked_pseudo_ancestor::sizes.

Referenced by graph_pseudoAncestors_addToEdge(), and graph_pseudoAncestors_addToNode().

◆ blockedAncestors_isValid()

static SCIP_Bool blockedAncestors_isValid ( SCIP scip,
int  hasharr_size,
const BLOCKANS blockedans 
)
static

valid pseudo-ancestors (no conflicts)?

Parameters
scipSCIP data structure
hasharr_sizesize of hash array
blockedansblocked pseudo-ancestors

Definition at line 607 of file graph_history.c.

References blockedAncestors_blockIsValid(), blocked_pseudo_ancestor::blocks, blocked_pseudo_ancestor::capacities, FALSE, blocked_pseudo_ancestor::nblocks, NULL, SCIP_Bool, SCIP_CALL_ABORT, SCIPallocCleanBufferArray, SCIPfreeCleanBufferArray, blocked_pseudo_ancestor::sizes, and TRUE.

Referenced by graph_valid_pseudoAncestors().

◆ fixedPseudoAncestorsAreValid()

static SCIP_Bool fixedPseudoAncestorsAreValid ( SCIP scip,
const GRAPH g 
)
static

◆ graph_singletonAncestors_init()

◆ graph_singletonAncestors_freeMembers()

void graph_singletonAncestors_freeMembers ( SCIP scip,
SINGLETONANS singletonans 
)

◆ graph_valid_ancestors()

◆ graph_pseudoAncestors_hashEdge()

void graph_pseudoAncestors_hashEdge ( const PSEUDOANS pseudoancestors,
int  edge,
int *  hasharr 
)

hash ancestors of given edge

Parameters
pseudoancestorspseudo-ancestors
edgeedge for which to hash
hasharrhash array

Definition at line 824 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, and blockedAncestors_hash().

Referenced by delPseudoCheckReplacement(), delPseudoEdgeGetReplaceEdges(), delPseudoGetReplaceEdges(), generalStarSetUp(), and pseudoAncestorsHash().

◆ graph_pseudoAncestors_hashNode()

void graph_pseudoAncestors_hashNode ( const PSEUDOANS pseudoancestors,
int  node,
int *  hasharr 
)

hash ancestors of given node

Parameters
pseudoancestorspseudo-ancestors
nodenode for which to hash
hasharrhash array

Definition at line 840 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_hash(), and nnodes.

Referenced by pseudoAncestorsHashPc().

◆ graph_pseudoAncestors_unhashEdge()

void graph_pseudoAncestors_unhashEdge ( const PSEUDOANS pseudoancestors,
int  edge,
int *  hasharr 
)

◆ graph_pseudoAncestors_unhashNode()

void graph_pseudoAncestors_unhashNode ( const PSEUDOANS pseudoancestors,
int  node,
int *  hasharr 
)

hash ancestors of given node

Parameters
pseudoancestorspseudo-ancestors
nodenode for which to unhash
hasharrhash array

Definition at line 870 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_unhashPartial(), and nnodes.

Referenced by pseudoAncestorsHashPc().

◆ graph_pseudoAncestors_hashEdgeDirty()

void graph_pseudoAncestors_hashEdgeDirty ( const PSEUDOANS pseudoancestors,
int  edge,
SCIP_Bool  revertIfConflict,
SCIP_Bool conflict,
int *  hasharr 
)

hash ancestors of given edge with possible conflicts

Parameters
pseudoancestorspseudo-ancestors
edgeedge for which to hash
revertIfConflictrevert on conflict?
conflictconflict?
hasharrhash array

Definition at line 884 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, and blockedAncestors_hashDirty().

Referenced by extTreeStackTopAdd(), generalStarSetUp(), graph_pseudoAncestors_edgesInConflict(), and pseudoAncestorsHash().

◆ graph_pseudoAncestors_hashNodeDirty()

void graph_pseudoAncestors_hashNodeDirty ( const PSEUDOANS pseudoancestors,
int  node,
SCIP_Bool  revertIfConflict,
SCIP_Bool conflict,
int *  hasharr 
)

hash ancestors of given node with possible conflicts

Parameters
pseudoancestorspseudo-ancestors
nodenode for which to hash
revertIfConflictrevert on conflict?
conflictconflict?
hasharrhash array

Definition at line 902 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_hashDirty(), and nnodes.

Referenced by pseudoAncestorsHashPc().

◆ graph_pseudoAncestors_unhashEdgeDirty()

void graph_pseudoAncestors_unhashEdgeDirty ( const PSEUDOANS pseudoancestors,
int  edge,
int *  hasharr 
)

unhash ancestors of given edge with possible conflicts

Parameters
pseudoancestorspseudo-ancestors
edgeedge for which to unhash
hasharrhash array

Definition at line 918 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, and blockedAncestors_unhashDirty().

◆ graph_pseudoAncestors_unhashNodeDirty()

void graph_pseudoAncestors_unhashNodeDirty ( const PSEUDOANS pseudoancestors,
int  node,
int *  hasharr 
)

hash ancestors of given node with possible conflicts

Parameters
pseudoancestorspseudo-ancestors
nodenode for which to unhash
hasharrhash array

Definition at line 934 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_unhashDirty(), and nnodes.

◆ graph_pseudoAncestors_edgeIsHashed()

SCIP_Bool graph_pseudoAncestors_edgeIsHashed ( const PSEUDOANS pseudoancestors,
int  edge,
const int *  hasharr 
)

any ancestors of given edge already hashed?

Parameters
pseudoancestorspseudo-ancestors
edgeedge for which to check
hasharrhash array

Definition at line 948 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, and blockedAncestors_hashIsHitBlock().

Referenced by delPseudoCheckReplacement(), delPseudoEdgeGetReplaceEdges(), delPseudoGetReplaceEdges(), extreduce_stackTopIsHashed(), extreduce_treeIsHashed(), and extTreeRuleOutEdgeSimple().

◆ graph_pseudoAncestors_nodeIsHashed()

SCIP_Bool graph_pseudoAncestors_nodeIsHashed ( const PSEUDOANS pseudoancestors,
int  node,
const int *  hasharr 
)

any ancestors of given node already hashed?

Parameters
pseudoancestorspseudo-ancestors
nodenode for which to check
hasharrhash array

Definition at line 962 of file graph_history.c.

References pseudo_ancestors::ans_nodes, and blockedAncestors_hashIsHitBlock().

◆ graph_initAncestors()

SCIP_RETCODE graph_initAncestors ( SCIP scip,
GRAPH g 
)

initializes edge ancestors

Parameters
scipSCIP data structure
gthe graph

Definition at line 975 of file graph_history.c.

References GRAPH::ancestors, graph_get_nEdges(), graph_typeIsUndirected(), Int_List_Node::index, NULL, Int_List_Node::parent, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory().

Referenced by graph_initHistory(), and graph_subgraphCompleteNewHistory().

◆ graph_pseudoAncestors_edgesInConflict()

SCIP_Bool graph_pseudoAncestors_edgesInConflict ( SCIP scip,
const GRAPH g,
const int *  edges,
int  nedges 
)

any ancestors of given edges in conflict?

Parameters
scipSCIP data structure
gthe graph
edgesedges to check
nedgesnumber of edges to check

Definition at line 1010 of file graph_history.c.

References FALSE, graph_pseudoAncestors_hashEdgeDirty(), graph_pseudoAncestors_unhashEdge(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::knots, GRAPH::pseudoancestors, SCIP_Bool, SCIP_CALL_ABORT, SCIPallocCleanBufferArray, SCIPfreeCleanBufferArray, and TRUE.

Referenced by bdkStarIsReplacableDeg3(), bdkStarIsReplacableDegGe4(), isPseudoDeletable(), and isPseudoDeletableDeg3().

◆ graph_initPseudoAncestors()

SCIP_RETCODE graph_initPseudoAncestors ( SCIP scip,
GRAPH g 
)

initializes pseudo ancestors

Parameters
scipSCIP data structure
gthe graph

Definition at line 1049 of file graph_history.c.

References GRAPH::edges, graph_initPseudoAncestorsSized(), NULL, GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by graph_initHistory(), packPseudoAncestors(), SCIP_DECL_PROBCOPY(), and SCIPprobdataCreateFromGraph().

◆ graph_initPseudoAncestorsSized()

SCIP_RETCODE graph_initPseudoAncestorsSized ( SCIP scip,
int  nedges,
GRAPH g 
)

◆ graph_freePseudoAncestors()

void graph_freePseudoAncestors ( SCIP scip,
GRAPH g 
)

frees pseudo ancestors

Parameters
scipSCIP data structure
gthe graph

Definition at line 1101 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, pseudo_ancestors::ans_nodes, blockedAncestors_free(), pseudo_ancestors::nAllPseudoancestors, NULL, GRAPH::pseudoancestors, and SCIPfreeMemoryArray.

Referenced by graph_freeHistory().

◆ graph_edge_delPseudoAncestors()

void graph_edge_delPseudoAncestors ( SCIP scip,
int  edge_free,
GRAPH g 
)

frees pseudo ancestor block for given edge

Parameters
scipSCIP data structure
edge_freeedge for which to free pseudo ancestors
gthe graph

Definition at line 1128 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blockedAncestors_freeBlock(), and GRAPH::pseudoancestors.

Referenced by graph_edge_delHistory(), graph_knot_contract(), graph_pseudoAncestors_appendMoveEdge(), and pseudoAncestorsCreation().

◆ graph_knot_delPseudoAncestors()

void graph_knot_delPseudoAncestors ( SCIP scip,
int  node_free,
GRAPH g 
)

frees pseudo ancestor block for given node

Parameters
scipSCIP data structure
node_freenode for which to free pseudo ancestors
gthe graph

Definition at line 1144 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_freeBlock(), graph_pc_isPcMw(), and GRAPH::pseudoancestors.

Referenced by graph_fixed_moveNodePc(), and graph_pseudoAncestors_appendMoveNode().

◆ graph_edge_nPseudoAncestors()

◆ graph_knot_nPseudoAncestors()

int graph_knot_nPseudoAncestors ( const GRAPH g,
int  node 
)

returns number of pseudo ancestors for given node

Parameters
gthe graph
nodenode for which to return number of pseudo ancestors

Definition at line 1174 of file graph_history.c.

References pseudo_ancestors::ans_nodes, GRAPH::pseudoancestors, and blocked_pseudo_ancestor::sizes.

Referenced by graph_fixed_addNodePc(), graph_printEdgeConflicts(), and pseudoAncestorsMergePc().

◆ graph_edge_getPseudoAncestors()

const int* graph_edge_getPseudoAncestors ( const GRAPH g,
int  edge 
)

◆ graph_edge_getAncestors()

◆ graph_knot_printPseudoAncestors()

void graph_knot_printPseudoAncestors ( const GRAPH g,
int  node 
)

prints pseudo ancestors for given node

Parameters
gthe graph
nodenode for which to return pseudo ancestors

Definition at line 1226 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blocked_pseudo_ancestor::blocks, GRAPH::pseudoancestors, and blocked_pseudo_ancestor::sizes.

◆ graph_edge_printPseudoAncestors()

void graph_edge_printPseudoAncestors ( const GRAPH g,
int  edge 
)

prints pseudo ancestors for given edge

Parameters
gthe graph
edgeedge for which to return pseudo ancestors

Definition at line 1248 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blocked_pseudo_ancestor::blocks, GRAPH::pseudoancestors, and blocked_pseudo_ancestor::sizes.

◆ graph_knot_getPseudoAncestors()

const int* graph_knot_getPseudoAncestors ( const GRAPH g,
int  node 
)

returns pseudo ancestors for given node

Parameters
gthe graph
nodenode for which to return pseudo ancestors

Definition at line 1269 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blocked_pseudo_ancestor::blocks, and GRAPH::pseudoancestors.

Referenced by graph_fixed_addNodePc(), and graph_printEdgeConflicts().

◆ graph_getNpseudoAncestors()

int graph_getNpseudoAncestors ( const GRAPH g)

◆ graph_addPseudoAncestor()

void graph_addPseudoAncestor ( GRAPH g,
int *  pseudoancestor 
)

adds new pseudo ancestor and provides index

Parameters
gthe graph (in/out)
pseudoancestorgives the new pseudo ancestor index (out)

Definition at line 1293 of file graph_history.c.

References pseudo_ancestors::nAllPseudoancestors, and GRAPH::pseudoancestors.

Referenced by delPseudoDeleteVertex(), delPseudoPathCreatePseudoAncestorTuple(), pseudoAncestorsCreation(), pseudoAncestorsHash(), pseudoAncestorsMerge(), and testEdgeDeletion2_deprecated().

◆ graph_addPseudoAncestors()

void graph_addPseudoAncestors ( int  nadd,
GRAPH g 
)

adds n new pseudo ancestor

Parameters
naddnumber of ancestors to add
gthe graph (in/out)

Definition at line 1307 of file graph_history.c.

References pseudo_ancestors::nAllPseudoancestors, and GRAPH::pseudoancestors.

Referenced by extractSubgraphInitHistory(), graph_copyPseudoAncestors(), packPseudoAncestors(), and reinsertSubgraphTransferFixedHistory().

◆ graph_pseudoAncestorsGetHashArraySize()

◆ graph_pseudoAncestors_appendCopyEdge()

SCIP_RETCODE graph_pseudoAncestors_appendCopyEdge ( SCIP scip,
int  edge_target,
int  edge_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends copy of pseudo ancestors of edge_source to edge_target

Parameters
scipSCIP data structure
edge_targetedge target
edge_sourceedge source
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1334 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blockedAncestors_appendCopy(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by delPseudoPath(), and graph_pseudoAncestors_appendMoveEdge().

◆ graph_pseudoAncestors_appendCopyNode()

SCIP_RETCODE graph_pseudoAncestors_appendCopyNode ( SCIP scip,
int  node_target,
int  node_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends copy of pseudo ancestors of node source to node target

Parameters
scipSCIP data structure
node_targetnode target
node_sourcenode source
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1358 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_appendCopy(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by graph_pseudoAncestors_appendMoveNode().

◆ graph_pseudoAncestors_appendCopyNodeToEdge()

SCIP_RETCODE graph_pseudoAncestors_appendCopyNodeToEdge ( SCIP scip,
int  edge_target,
int  node_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends copy of pseudo ancestors of node source to edge target

Parameters
scipSCIP data structure
edge_targetedge target
node_sourcenode source
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1380 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, pseudo_ancestors::ans_nodes, blockedAncestors_appendCopy(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by graph_edge_reinsert(), and graph_knot_replaceDeg2().

◆ graph_pseudoAncestors_appendCopyEdgeToNode()

SCIP_RETCODE graph_pseudoAncestors_appendCopyEdgeToNode ( SCIP scip,
int  node_target,
int  edge_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends copy of pseudo ancestors of edge source to node target

Parameters
scipSCIP data structure
node_targetnode target
edge_sourceedge source
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1403 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, pseudo_ancestors::ans_nodes, blockedAncestors_appendCopy(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

◆ graph_pseudoAncestors_appendCopySingToEdge()

SCIP_RETCODE graph_pseudoAncestors_appendCopySingToEdge ( SCIP scip,
int  edge_target,
const SINGLETONANS source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends given of pseudo ancestors to edge target

Parameters
scipSCIP data structure
edge_targetedge target
sourcesource
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1426 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blockedAncestors_appendArray(), FALSE, graph_pseudoAncestorsGetHashArraySize(), singleton_ancestors_edge::npseudoancestors, singleton_ancestors_edge::pseudoancestors, GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by graph_edge_reinsert(), and graph_knot_contract().

◆ graph_pseudoAncestors_appendCopyArrayToEdge()

SCIP_RETCODE graph_pseudoAncestors_appendCopyArrayToEdge ( SCIP scip,
int  edge_target,
const int *  ancestors,
int  nancestors,
GRAPH g,
SCIP_Bool conflict 
)

appends copy of pseudo ancestors in array form to edge target

Parameters
scipSCIP data structure
edge_targetedge target
ancestorspseudo ancestors array
nancestorsnumber of ancestors
gthe graph
conflictconflict?

Definition at line 1458 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blockedAncestors_appendArray(), FALSE, graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_Bool, SCIP_CALL, and SCIP_OKAY.

Referenced by extractSubgraphAddEdge(), graph_copyPseudoAncestors(), graph_knot_replaceDeg2(), graph_subgraphCompleteNewHistory(), and packPseudoAncestors().

◆ graph_pseudoAncestors_appendMoveEdge()

SCIP_RETCODE graph_pseudoAncestors_appendMoveEdge ( SCIP scip,
int  edge_target,
int  edge_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends pseudo ancestors of edge_source to edge_target, ancestors for edge_source are deleted

Parameters
scipSCIP data structure
edge_targettarget edge
edge_sourcesource edge
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1489 of file graph_history.c.

References graph_edge_delPseudoAncestors(), graph_pseudoAncestors_appendCopyEdge(), SCIP_CALL, and SCIP_OKAY.

Referenced by pseudoAncestorsMerge().

◆ graph_pseudoAncestors_appendMoveNode()

SCIP_RETCODE graph_pseudoAncestors_appendMoveNode ( SCIP scip,
int  node_target,
int  node_source,
SCIP_Bool  revertIfConflict,
GRAPH g,
SCIP_Bool conflict 
)

appends pseudo ancestors of node source to node target, ancestors for source are deleted

Parameters
scipSCIP data structure
node_targettarget node
node_sourcesource node
revertIfConflictbreak on conflict
gthe graph
conflictconflict?

Definition at line 1506 of file graph_history.c.

References graph_knot_delPseudoAncestors(), graph_pseudoAncestors_appendCopyNode(), SCIP_CALL, and SCIP_OKAY.

Referenced by pseudoAncestorsMergePc().

◆ graph_pseudoAncestors_addToEdge()

SCIP_RETCODE graph_pseudoAncestors_addToEdge ( SCIP scip,
int  edge_target,
int  ancestor,
GRAPH g 
)

adds pseudo ancestor to ancestor list of given edge

Parameters
scipSCIP data structure
edge_targetedge for which to add pseudo ancestor
ancestor(index of) pseudo ancestor
gthe graph

Definition at line 1523 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, blockedAncestors_addAncestor(), graph_pseudoAncestorsGetHashArraySize(), pseudo_ancestors::halfnedges, pseudo_ancestors::nAllPseudoancestors, GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by delPseudoDeleteVertex(), delPseudoPathCreatePseudoAncestorTuple(), pseudoAncestorsCreation(), pseudoAncestorsHash(), pseudoAncestorsMerge(), and testEdgeDeletion2_deprecated().

◆ graph_pseudoAncestors_addToNode()

SCIP_RETCODE graph_pseudoAncestors_addToNode ( SCIP scip,
int  node_target,
int  ancestor,
GRAPH g 
)

adds pseudo ancestor to ancestor list of given node

Parameters
scipSCIP data structure
node_targetnode for which to add pseudo ancestor
ancestor(index of) pseudo ancestor
gthe graph

Definition at line 1545 of file graph_history.c.

References pseudo_ancestors::ans_nodes, blockedAncestors_addAncestor(), graph_pc_isPcMw(), graph_pc_knotIsDummyTerm(), graph_pseudoAncestorsGetHashArraySize(), pseudo_ancestors::nAllPseudoancestors, pseudo_ancestors::nnodes, GRAPH::pseudoancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by pseudoAncestorsHashPc(), and pseudoAncestorsMergePc().

◆ graph_valid_pseudoAncestors()

SCIP_Bool graph_valid_pseudoAncestors ( SCIP scip,
const GRAPH g 
)

valid pseudo-ancestors (no conflicts)?

Parameters
scipSCIP data structure
gthe graph

Definition at line 1569 of file graph_history.c.

References pseudo_ancestors::ans_halfedges, pseudo_ancestors::ans_nodes, blockedAncestors_isValid(), FALSE, graph_pc_isPcMw(), graph_pseudoAncestorsGetHashArraySize(), GRAPH::pseudoancestors, SCIP_Bool, SCIP_OKAY, and TRUE.

Referenced by graph_knot_replaceDeg2().

◆ graph_init_fixed()

SCIP_RETCODE graph_init_fixed ( SCIP scip,
GRAPH g 
)

◆ graph_free_fixed()

◆ graph_free_fixedEdgesOnly()

void graph_free_fixedEdgesOnly ( SCIP scip,
GRAPH g 
)

frees fixed edges

Parameters
scipSCIP data structure
gthe graph

Definition at line 1671 of file graph_history.c.

References GRAPH::fixedcomponents, fixed_graph_components::fixedges, fixed_graph_components::nfixnodes, NULL, Int_List_Node::parent, and SCIPfreeBlockMemory.

Referenced by graph_subgraphCompleteNewHistory().

◆ graph_fixed_add()

SCIP_RETCODE graph_fixed_add ( SCIP scip,
IDX edges,
const int *  pseudonodes,
int  npseudonodes,
GRAPH g 
)

◆ graph_fixed_addEdge()

SCIP_RETCODE graph_fixed_addEdge ( SCIP scip,
int  edge,
GRAPH g 
)

adds ancestors from given edges

Parameters
scipSCIP data structure
edgeedge
gthe graph

Definition at line 1760 of file graph_history.c.

References GRAPH::ancestors, graph_edge_getAncestors(), graph_edge_getPseudoAncestors(), graph_edge_nPseudoAncestors(), graph_fixed_add(), SCIP_CALL, and SCIP_OKAY.

Referenced by contractEdgeWithFixedEnd(), graph_knot_contractFixed(), reduce_contract0Edges(), and reduce_simple().

◆ graph_fixed_addNodePc()

SCIP_RETCODE graph_fixed_addNodePc ( SCIP scip,
int  node,
GRAPH g 
)

adds ancestors from given edges

Parameters
scipSCIP data structure
nodenode
gthe graph

Definition at line 1778 of file graph_history.c.

References GRAPH::ancestors, graph_fixed_add(), graph_knot_getPseudoAncestors(), graph_knot_nPseudoAncestors(), graph_pc_isPcMw(), graph_pc_knotIsDummyTerm(), GRAPH::pcancestors, SCIP_CALL, and SCIP_OKAY.

Referenced by graph_fixed_moveNodePc(), and packPcMwVanished().

◆ graph_fixed_moveNodePc()

SCIP_RETCODE graph_fixed_moveNodePc ( SCIP scip,
int  node,
GRAPH g 
)

moves ancestors from given edges

Parameters
scipSCIP data structure
nodenode
gthe graph

Definition at line 1798 of file graph_history.c.

References graph_fixed_addNodePc(), graph_knot_delPseudoAncestors(), graph_pc_isPcMw(), GRAPH::pcancestors, SCIP_CALL, SCIP_OKAY, and SCIPintListNodeFree().

Referenced by contractEdgeWithFixedEnd().

◆ graph_fixed_resetMoved()

void graph_fixed_resetMoved ( GRAPH g)

resets

Parameters
gthe graph

Definition at line 1821 of file graph_history.c.

References FALSE, GRAPH::fixedcomponents, fixed_graph_components::movedFrom, and NULL.

Referenced by reinsertSubgraphTransferFixedHistory().

◆ graph_initContractTracing()

SCIP_RETCODE graph_initContractTracing ( SCIP scip,
GRAPH graph 
)

initializes

Parameters
scipSCIP data structure
graphgraph

Definition at line 1836 of file graph_history.c.

References GRAPH::contracttrace, graph_get_nNodes(), nnodes, SCIP_CALL, SCIP_OKAY, and SCIPallocMemoryArray.

Referenced by extractSubgraphBuild().

◆ graph_knot_hasContractTrace()

SCIP_Bool graph_knot_hasContractTrace ( int  node,
const GRAPH graph 
)

has the node a contract trace?

Parameters
nodenode to trace back from
graphgraph

Definition at line 1859 of file graph_history.c.

References GRAPH::contracttrace, and graph_knot_isInRange().

Referenced by borderNodesContract(), and reinsertSubgraphTransferTerminals().

◆ graph_contractTrace()

int graph_contractTrace ( int  node,
const GRAPH graph 
)

traces contraction back; returns traced node

Parameters
nodenode to trace back from
graphgraph

Definition at line 1872 of file graph_history.c.

References GRAPH::contracttrace, GRAPH::grad, and graph_knot_isInRange().

Referenced by borderNodesContract(), and reinsertSubgraphTransferTerminals().

◆ graph_copyFixed()

SCIP_RETCODE graph_copyFixed ( SCIP scip,
GRAPH g,
SCIP_Bool  moveFixedEdges,
GRAPH g_copy 
)

copies and potentially moves fixed components

Parameters
scipSCIP data structure
gthe original graph
moveFixedEdgesmove fixed edges? If false, nothing is done!
g_copythe copied graph

Definition at line 1895 of file graph_history.c.

References BMScopyMemoryArray, GRAPH::fixedcomponents, fixed_graph_components::fixedges, fixed_graph_components::fixpseudonodes, graph_init_fixed(), fixed_graph_components::movedFrom, fixed_graph_components::nfixnodes, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, and TRUE.

Referenced by extractSubgraphInitHistory().

◆ graph_getFixedges()

◆ graph_getFixpseudonodes()

const int* graph_getFixpseudonodes ( SCIP scip,
const GRAPH g 
)

gets fixed pseudo eliminated nodes

Parameters
scipSCIP data structure
gthe graph

Definition at line 1957 of file graph_history.c.

References GRAPH::fixedcomponents, fixed_graph_components::fixpseudonodes, and NULL.

Referenced by fixedPseudoAncestorsAreValid(), and reduce_fixedConflicts().

◆ graph_getNfixpseudonodes()

int graph_getNfixpseudonodes ( const GRAPH g)

gets number of fixed pseudo eliminated nodes

Parameters
gthe graph

Definition at line 1971 of file graph_history.c.

References GRAPH::fixedcomponents, and fixed_graph_components::nfixnodes.

Referenced by fixedPseudoAncestorsAreValid(), graph_printEdgeConflicts(), reduce_fixedConflicts(), and reinsertSubgraphTransferFixedHistory().