SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches

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 SCIPpqueueDelPos (SCIP_PQUEUE *pqueue, int pos)
 
voidSCIPpqueueRemove (SCIP_PQUEUE *pqueue)
 
voidSCIPpqueueFirst (SCIP_PQUEUE *pqueue)
 
int SCIPpqueueNElems (SCIP_PQUEUE *pqueue)
 
void ** SCIPpqueueElems (SCIP_PQUEUE *pqueue)
 
int SCIPpqueueFind (SCIP_PQUEUE *pqueue, void *elem)
 

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 1295 of file misc.c.

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

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

◆ SCIPpqueueFree()

void SCIPpqueueFree ( SCIP_PQUEUE ** pqueue)

frees priority queue, but not the data elements themselves

Parameters
pqueuepointer to a priority queue

Definition at line 1322 of file misc.c.

References assert(), BMSfreeMemory, BMSfreeMemoryArray, and NULL.

Referenced by freeProblem(), nodepairqueueFree(), SCIP_DECL_PROPEXITSOL(), SCIPbendersDeactivate(), SCIPconflictFree(), and subtreeSumGapDelSubtrees().

◆ SCIPpqueueClear()

void SCIPpqueueClear ( SCIP_PQUEUE * pqueue)

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

Parameters
pqueuepriority queue

Definition at line 1333 of file misc.c.

References assert(), SCIP_PQueue::len, and NULL.

Referenced by conflictClear().

◆ SCIPpqueueInsert()

SCIP_RETCODE SCIPpqueueInsert ( SCIP_PQUEUE * pqueue,
void * elem )

◆ SCIPpqueueDelPos()

void SCIPpqueueDelPos ( SCIP_PQUEUE * pqueue,
int pos )

delete element at specified position, maintaining the heap property

Parameters
pqueuepriority queue
posposition of element that should be deleted

Definition at line 1433 of file misc.c.

References assert(), i, SCIP_PQueue::len, NULL, PQ_LEFTCHILD, PQ_PARENT, PQ_RIGHTCHILD, pqueueElemChgPos(), SCIPpqueueNElems(), and SCIP_PQueue::slots.

Referenced by SCIPpqueueRemove(), and subtreeSumGapRemoveNode().

◆ SCIPpqueueRemove()

void * SCIPpqueueRemove ( SCIP_PQUEUE * pqueue)

removes and returns best element from the priority queue

Parameters
pqueuepriority queue

Definition at line 1493 of file misc.c.

References assert(), SCIP_PQueue::len, NULL, SCIPpqueueDelPos(), and SCIP_PQueue::slots.

Referenced by conflictFirstCand(), conflictRemoveCand(), createSolveSubproblemIndexList(), 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 1513 of file misc.c.

References assert(), SCIP_PQueue::len, NULL, and SCIP_PQueue::slots.

Referenced by conflictFirstCand(), nodepairqueueIsEmpty(), subtreeSumGapComputeFromScratchEfficiently(), and subtreeSumGapRemoveNode().

◆ SCIPpqueueNElems()

◆ 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 1538 of file misc.c.

References assert(), SCIP_PQueue::len, NULL, and SCIP_PQueue::slots.

Referenced by conflictAddConflictset(), conflictResolveBound(), subtreeSumGapDelSubtrees(), subtreeSumGapRemoveNode(), and subtreeSumGapStoreNode().

◆ SCIPpqueueFind()

int SCIPpqueueFind ( SCIP_PQUEUE * pqueue,
void * elem )

return the position of elem in the priority queue, or -1 if element is not found

Parameters
pqueuepriority queue
elemelement to be inserted

Definition at line 1549 of file misc.c.

References i, SCIPpqueueNElems(), and SCIP_PQueue::slots.

Referenced by propagateVbounds().