Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

priority queue with O(1) access to the minimum element

Functions

SCIP_RETCODE SCIPpqueueCreate (SCIP_PQUEUE **pqueue, int initsize, SCIP_Real sizefac, SCIP_DECL_SORTPTRCOMP((*ptrcomp)))
 
void SCIPpqueueFree (SCIP_PQUEUE **pqueue)
 
void SCIPpqueueClear (SCIP_PQUEUE *pqueue)
 
SCIP_RETCODE SCIPpqueueInsert (SCIP_PQUEUE *pqueue, void *elem)
 
void * SCIPpqueueRemove (SCIP_PQUEUE *pqueue)
 
void * SCIPpqueueFirst (SCIP_PQUEUE *pqueue)
 
int SCIPpqueueNElems (SCIP_PQUEUE *pqueue)
 
void ** SCIPpqueueElems (SCIP_PQUEUE *pqueue)
 

Function Documentation

◆ SCIPpqueueCreate()

SCIP_RETCODE SCIPpqueueCreate ( SCIP_PQUEUE **  pqueue,
int  initsize,
SCIP_Real  sizefac,
SCIP_DECL_SORTPTRCOMP((*ptrcomp))   
)

creates priority queue

Parameters
pqueuepointer to a priority queue
initsizeinitial number of available element slots
sizefacmemory growing factor applied, if more element slots are needed

Definition at line 1135 of file misc.c.

References BMSallocMemory, MAX, pqueueResize(), SCIP_ALLOC, SCIP_CALL, and SCIP_OKAY.

Referenced by initData(), initProblem(), nodepairqueueCreate(), and SCIPconflictCreate().

◆ SCIPpqueueFree()

void SCIPpqueueFree ( SCIP_PQUEUE **  pqueue)

frees priority queue, but not the data elements themselves

Parameters
pqueuepointer to a priority queue

Definition at line 1160 of file misc.c.

References BMSfreeMemory, and BMSfreeMemoryArray.

Referenced by freeProblem(), nodepairqueueFree(), and SCIPconflictFree().

◆ SCIPpqueueClear()

void SCIPpqueueClear ( SCIP_PQUEUE pqueue)

clears the priority queue, but doesn't free the data elements themselves

Parameters
pqueuepriority queue

Definition at line 1171 of file misc.c.

References SCIP_PQueue::len.

Referenced by conflictClear().

◆ SCIPpqueueInsert()

SCIP_RETCODE SCIPpqueueInsert ( SCIP_PQUEUE pqueue,
void *  elem 
)

inserts element into priority queue

Parameters
pqueuepriority queue
elemelement to be inserted

Definition at line 1181 of file misc.c.

References SCIP_PQueue::len, PQ_PARENT, pqueueResize(), SCIP_CALL, SCIP_OKAY, and SCIP_PQueue::slots.

Referenced by conflictQueueBound(), createAndSplitProblem(), nodepairqueueCreate(), propagateVbounds(), and solveProblem().

◆ SCIPpqueueRemove()

void* SCIPpqueueRemove ( SCIP_PQUEUE pqueue)

removes and returns best element from the priority queue

Parameters
pqueuepriority queue

Definition at line 1208 of file misc.c.

References SCIP_PQueue::len, PQ_LEFTCHILD, PQ_PARENT, PQ_RIGHTCHILD, and SCIP_PQueue::slots.

Referenced by conflictFirstCand(), conflictRemoveCand(), nodepairqueueRemove(), propagateVbounds(), and solveProblem().

◆ SCIPpqueueFirst()

void* SCIPpqueueFirst ( SCIP_PQUEUE pqueue)

returns the best element of the queue without removing it

Parameters
pqueuepriority queue

Definition at line 1249 of file misc.c.

References SCIP_PQueue::len, and SCIP_PQueue::slots.

Referenced by conflictFirstCand(), and nodepairqueueIsEmpty().

◆ SCIPpqueueNElems()

int SCIPpqueueNElems ( SCIP_PQUEUE pqueue)

◆ SCIPpqueueElems()

void** SCIPpqueueElems ( SCIP_PQUEUE pqueue)

returns the elements of the queue; changing the returned array may destroy the queue's ordering!

Parameters
pqueuepriority queue

Definition at line 1274 of file misc.c.

References SCIP_PQueue::len, and SCIP_PQueue::slots.

Referenced by conflictAddConflictset(), and conflictResolveBound().