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

Detailed Description

hash table that resolves conflicts by probing

Macros

#define SCIPhashSignature64(a)
#define SCIPhashTwo(a, b)
#define SCIPhashThree(a, b, c)
#define SCIPhashFour(a, b, c, d)
#define SCIPhashFive(a, b, c, d, e)
#define SCIPhashSix(a, b, c, d, e, f)
#define SCIPhashSeven(a, b, c, d, e, f, g)

Functions

static INLINE uint32_t SCIPrealHashCode (double x)
SCIP_RETCODE SCIPhashtableCreate (SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void SCIPhashtableFree (SCIP_HASHTABLE **hashtable)
SCIP_RETCODE SCIPhashtableInsert (SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableSafeInsert (SCIP_HASHTABLE *hashtable, void *element)
void * SCIPhashtableRetrieve (SCIP_HASHTABLE *hashtable, void *key)
SCIP_Bool SCIPhashtableExists (SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableRemove (SCIP_HASHTABLE *hashtable, void *element)
void SCIPhashtableRemoveAll (SCIP_HASHTABLE *hashtable)
SCIP_Longint SCIPhashtableGetNElements (SCIP_HASHTABLE *hashtable)
int SCIPhashtableGetNEntries (SCIP_HASHTABLE *hashtable)
void * SCIPhashtableGetEntry (SCIP_HASHTABLE *hashtable, int entryidx)
SCIP_Real SCIPhashtableGetLoad (SCIP_HASHTABLE *hashtable)
void SCIPhashtablePrintStatistics (SCIP_HASHTABLE *hashtable, SCIP_MESSAGEHDLR *messagehdlr)

Macro Definition Documentation

◆ SCIPhashSignature64

#define SCIPhashSignature64 ( a)
Value:
(UINT64_C(0x8000000000000000)>>((UINT32_C(0x9e3779b9) * ((uint32_t)(a)))>>26))
SCIP_VAR * a

Definition at line 566 of file pub_misc.h.

Referenced by addCoef(), calcSignature(), consdataGetSignature(), consdataUpdateSignatures(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), and SCIP_DECL_HASHKEYVAL().

◆ SCIPhashTwo

#define SCIPhashTwo ( a,
b )
Value:
((uint32_t)((((uint32_t)(a) + 0xd37e9a1ce2148403ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) )>>32))
SCIP_VAR ** b

Definition at line 568 of file pub_misc.h.

Referenced by hashIndexPair(), hashIndexPair(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), and SCIPrandomSetSeed().

◆ SCIPhashThree

#define SCIPhashThree ( a,
b,
c )
Value:
((uint32_t)((((uint32_t)(a) + 0xbd5c89185f082658ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) + \
(uint32_t)(c) * 0xd37e9a1ce2148403ULL)>>32 ))
int c

Definition at line 570 of file pub_misc.h.

Referenced by SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), and SCIP_DECL_HASHKEYVAL().

◆ SCIPhashFour

#define SCIPhashFour ( a,
b,
c,
d )
Value:
((uint32_t)((((uint32_t)(a) + 0xbd5c89185f082658ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) + \
((uint32_t)(c) + 0xd37e9a1ce2148403ULL) * ((uint32_t)(d) + 0x926f2d4dc4a67218ULL))>>32 ))

Definition at line 573 of file pub_misc.h.

Referenced by SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), SCIP_DECL_HASHKEYVAL(), and SCIP_DECL_HASHKEYVAL().

◆ SCIPhashFive

#define SCIPhashFive ( a,
b,
c,
d,
e )
Value:
((uint32_t)((((uint32_t)(a) + 0xbd5c89185f082658ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) + \
((uint32_t)(c) + 0xd37e9a1ce2148403ULL) * ((uint32_t)(d) + 0x926f2d4dc4a67218ULL) + \
(uint32_t)(e) * 0xf48d4cd331e14327ULL)>>32 ))

Definition at line 576 of file pub_misc.h.

◆ SCIPhashSix

#define SCIPhashSix ( a,
b,
c,
d,
e,
f )
Value:
((uint32_t)((((uint32_t)(a) + 0xbd5c89185f082658ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) + \
((uint32_t)(c) + 0xd37e9a1ce2148403ULL) * ((uint32_t)(d) + 0x926f2d4dc4a67218ULL) + \
((uint32_t)(e) + 0xf48d4cd331e14327ULL) * ((uint32_t)(f) + 0x80791a4edfc44c75ULL))>>32 ))

Definition at line 580 of file pub_misc.h.

Referenced by SCIP_DECL_HASHKEYVAL().

◆ SCIPhashSeven

#define SCIPhashSeven ( a,
b,
c,
d,
e,
f,
g )
Value:
((uint32_t)((((uint32_t)(a) + 0xbd5c89185f082658ULL) * ((uint32_t)(b) + 0xe5fcc163aef32782ULL) + \
((uint32_t)(c) + 0xd37e9a1ce2148403ULL) * ((uint32_t)(d) + 0x926f2d4dc4a67218ULL) + \
((uint32_t)(e) + 0xf48d4cd331e14327ULL) * ((uint32_t)(f) + 0x80791a4edfc44c75ULL) + \
(uint32_t)(g) * 0x7f497d9ba3bd83c0ULL)>>32 ))

Definition at line 584 of file pub_misc.h.

Function Documentation

◆ SCIPrealHashCode()

INLINE uint32_t SCIPrealHashCode ( double x)
static

computes a hashcode for double precision floating point values containing 15 significant bits, the sign and the exponent

Definition at line 593 of file pub_misc.h.

References ABS, assert(), SCIPisFinite, and x.

◆ SCIPhashtableCreate()

SCIP_RETCODE SCIPhashtableCreate ( SCIP_HASHTABLE ** hashtable,
BMS_BLKMEM * blkmem,
int tablesize,
SCIP_DECL_HASHGETKEY((*hashgetkey)) ,
SCIP_DECL_HASHKEYEQ((*hashkeyeq)) ,
SCIP_DECL_HASHKEYVAL((*hashkeyval)) ,
void * userptr )

creates a hash table

Parameters
hashtablepointer to store the created hash table
blkmemblock memory used to store hash table entries
tablesizesize of the hash table
-gets the key of the given element
-returns TRUE iff both keys are equal
-returns the hash value of the key
userptruser pointer

Definition at line 2298 of file misc.c.

References assert(), BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSallocClearBlockMemoryArray, LOG2, MAX, NULL, SCIP_ALLOC, SCIP_DECL_HASHGETKEY, SCIP_DECL_HASHKEYEQ, SCIP_DECL_HASHKEYVAL, SCIP_OKAY, and SCIPhashtableCreate().

Referenced by addOrbitope(), bilinearTermsInsertEntry(), checkConsnames(), collectBranchingCands(), copyConsPseudoboolean(), detectHiddenProducts(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), findCumulativeConss(), inithashmapandtable(), mod2matrixPreprocessColumns(), mod2matrixPreprocessRows(), nodepairqueueCreate(), presoldataInitHashtables(), propdataInit(), SCIP_DECL_CONSINIT(), SCIP_DECL_EVENTINITSOL(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEURINIT(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_READERREAD(), SCIP_DECL_READERWRITE(), SCIPcliquetableCreate(), SCIPcutpoolCreate(), SCIPhashtableCreate(), SCIPhypergraphComputeOverlaps(), SCIPparamsetCreate(), SCIPprobCreate(), SCIPvariableGraphCreate(), SCIPvisualizeConsCumulative(), SCIPwriteLp(), SCIPwriteMps(), SCIPwritePip(), and writeOpb().

◆ SCIPhashtableFree()

◆ SCIPhashtableInsert()

SCIP_RETCODE SCIPhashtableInsert ( SCIP_HASHTABLE * hashtable,
void * element )

inserts element in hash table (multiple inserts of same element override the previous entry)

inserts element in hash table

Note
multiple inserts of same element overrides previous one
Parameters
hashtablehash table
elementelement to insert into the table

Definition at line 2535 of file misc.c.

References assert(), SCIP_HashTable::hashes, hashtableCheckLoad(), hashtableInsert(), hashvalue(), SCIP_HashTable::mask, NULL, SCIP_CALL, SCIPhashtableInsert(), SCIP_HashTable::slots, TRUE, and SCIP_HashTable::userptr.

Referenced by addConflictBinvar(), bilinearTermsInsertEntry(), checkConsnames(), cleanupHashDatas(), collectAggregatedVars(), collectAggregatedVars(), collectAggregatedVars(), collectBranchingCands(), collectMinactImplicVars(), copyConsPseudoboolean(), correctPresoldata(), createAndAddAndCons(), createConstantAssignment(), createPresoldata(), createVariable(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), determineVariableFixings(), fillRelationTables(), findCumulativeConss(), findOverlap(), getConflictImplics(), mod2matrixPreprocessColumns(), mod2matrixPreprocessRows(), nodepairqueueCreate(), retrieveParallelConstraints(), SCIP_DECL_CONSCHECK(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_EVENTINITSOL(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_READERWRITE(), SCIPcliquetableAdd(), SCIPcliquetableCleanup(), SCIPcreateConsPseudobooleanWithConss(), SCIPcutpoolAddNewRow(), SCIPhashtableInsert(), SCIPprobAddConsName(), SCIPprobAddVarName(), SCIPvariablegraphBreadthFirst(), SCIPvisualizeConsCumulative(), SCIPwriteMps(), selectSolsRandomized(), setupAndSolveSubscipCrossover(), writeOpbFixedVars(), and writeOpbRelevantAnds().

◆ SCIPhashtableSafeInsert()

SCIP_RETCODE SCIPhashtableSafeInsert ( SCIP_HASHTABLE * hashtable,
void * element )

inserts element in hash table (multiple insertion of same element is checked and results in an error)

inserts element in hash table

Note
multiple insertion of same element is checked and results in an error
Parameters
hashtablehash table
elementelement to insert into the table

Definition at line 2567 of file misc.c.

References assert(), FALSE, SCIP_HashTable::hashes, hashtableCheckLoad(), hashtableInsert(), hashvalue(), SCIP_HashTable::mask, NULL, SCIP_CALL, SCIPhashtableSafeInsert(), SCIP_HashTable::slots, and SCIP_HashTable::userptr.

Referenced by paramsetAdd(), retrieveParallelConstraints(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_HEUREXEC(), and SCIPhashtableSafeInsert().

◆ SCIPhashtableRetrieve()

void * SCIPhashtableRetrieve ( SCIP_HASHTABLE * hashtable,
void * key )

retrieve element with key from hash table, returns NULL if not existing

Parameters
hashtablehash table
keykey to retrieve

Definition at line 2596 of file misc.c.

References assert(), ELEM_DISTANCE, SCIP_HashTable::hashes, hashvalue(), SCIP_HashTable::mask, NULL, SCIPhashtableRetrieve(), SCIP_HashTable::shift, SCIP_HashTable::slots, TRUE, and SCIP_HashTable::userptr.

Referenced by applyVariableAssignment(), cancelCol(), cancelRow(), checkConsnames(), consdataFree(), CREATE_CONSTRAINT(), createAndAddAndCons(), createConstantAssignment(), createLinking(), createVariable(), detectProductsUnconditional(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), detectRedundantConstraints(), extractGates(), fillRelationTables(), findOverlap(), getRowOrder(), mod2matrixPreprocessColumns(), mod2matrixPreprocessRows(), nodepairqueueCreate(), paramSetBool(), paramSetChar(), paramSetInt(), paramSetLongint(), paramSetReal(), paramsetSetHeuristicsAggressive(), paramsetSetHeuristicsFast(), paramsetSetPresolvingAggressive(), paramsetSetPresolvingFast(), paramsetSetSeparatingAggressive(), paramsetSetSeparatingDefault(), parseAggregation(), parseArrayIndex(), parseConstraint(), parseQuadratic(), parseSolveItem(), parseValue(), parseVariableArrayAssignment(), populateRootedPathColumnOrder(), retrieveParallelConstraints(), scalePenalties(), SCIP_DECL_HEUREXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PRESOLEXEC(), SCIPcliquetableAdd(), SCIPcliquetableCleanup(), SCIPcreateConsPseudobooleanWithConss(), SCIPcutpoolAddRow(), SCIPcutpoolDelRow(), SCIPcutpoolIsCutNew(), SCIPgetBilinTermIdxNonlinear(), SCIPhashtableExists(), SCIPhashtableRetrieve(), SCIPparamsetCopyParams(), SCIPparamsetFix(), SCIPparamsetGetBool(), SCIPparamsetGetChar(), SCIPparamsetGetInt(), SCIPparamsetGetLongint(), SCIPparamsetGetParam(), SCIPparamsetGetReal(), SCIPparamsetGetString(), SCIPparamsetIsFixed(), SCIPparamsetSet(), SCIPparamsetSetBool(), SCIPparamsetSetChar(), SCIPparamsetSetDefaultBool(), SCIPparamsetSetDefaultChar(), SCIPparamsetSetDefaultInt(), SCIPparamsetSetDefaultLongint(), SCIPparamsetSetDefaultReal(), SCIPparamsetSetDefaultString(), SCIPparamsetSetEmphasis(), SCIPparamsetSetInt(), SCIPparamsetSetLongint(), SCIPparamsetSetReal(), SCIPparamsetSetString(), SCIPparamsetSetToDefault(), SCIPprobFindCons(), SCIPprobFindVar(), SCIPprobRemoveConsName(), SCIPshadowTreeGetShadowNodeFromNodeNumber(), and transformToOrig().

◆ SCIPhashtableExists()

◆ SCIPhashtableRemove()

◆ SCIPhashtableRemoveAll()

◆ SCIPhashtableGetNElements()

SCIP_Longint SCIPhashtableGetNElements ( SCIP_HASHTABLE * hashtable)

returns number of hash table elements

Parameters
hashtablehash table

Definition at line 2755 of file misc.c.

References assert(), SCIP_HashTable::nelements, NULL, SCIP_Longint, and SCIPhashtableGetNElements().

Referenced by SCIP_DECL_HEUREXEC(), and SCIPhashtableGetNElements().

◆ SCIPhashtableGetNEntries()

int SCIPhashtableGetNEntries ( SCIP_HASHTABLE * hashtable)

gives the number of entries in the internal arrays of a hash table

Parameters
hashtablehash table

Definition at line 2765 of file misc.c.

References SCIP_HashTable::mask, and SCIPhashtableGetNEntries().

Referenced by detectHiddenProducts(), freeOrbitope(), freeShadowTree(), SCIP_DECL_PRESOLEXEC(), and SCIPhashtableGetNEntries().

◆ SCIPhashtableGetEntry()

void * SCIPhashtableGetEntry ( SCIP_HASHTABLE * hashtable,
int entryidx )

gives the element at the given index or NULL if entry at that index has no element

Parameters
hashtablehash table
entryidxindex of hash table entry

Definition at line 2773 of file misc.c.

References SCIP_HashTable::hashes, NULL, SCIPhashtableGetEntry(), and SCIP_HashTable::slots.

Referenced by detectHiddenProducts(), freeOrbitope(), freeShadowTree(), and SCIPhashtableGetEntry().

◆ SCIPhashtableGetLoad()

SCIP_Real SCIPhashtableGetLoad ( SCIP_HASHTABLE * hashtable)

returns the load of the given hash table in percentage

Parameters
hashtablehash table

Definition at line 2782 of file misc.c.

References assert(), SCIP_HashTable::mask, SCIP_HashTable::nelements, NULL, SCIP_Real, and SCIPhashtableGetLoad().

Referenced by SCIPhashtableGetLoad().

◆ SCIPhashtablePrintStatistics()

void SCIPhashtablePrintStatistics ( SCIP_HASHTABLE * hashtable,
SCIP_MESSAGEHDLR * messagehdlr )

prints statistics about hash table usage

Parameters
hashtablehash table
messagehdlrmessage handler

Definition at line 2792 of file misc.c.

References assert(), ELEM_DISTANCE, SCIP_HashTable::hashes, i, SCIP_HashTable::mask, MAX, SCIP_HashTable::nelements, NULL, SCIP_Real, SCIPhashtablePrintStatistics(), and SCIPmessagePrintInfo().

Referenced by detectRedundantConstraints(), and SCIPhashtablePrintStatistics().