Re: нормальная HASH функция для строк
От: ToShA_2K Россия  
Дата: 20.09.02 06:10
Оценка:
Здравствуйте the_moon, Вы писали:

TM>Привет, хочу вот зделать поиск через хэши, нашел в интернете типа такой функции


TM>


TM>
TM>unsigned long mHash( const char* string )
TM>{
TM>    unsigned long Hash = 0;
TM>    for( Hash = 0; *string; string++ ) Hash = (131 * Hash + *string);
TM>    return Hash;
TM>}
TM>


TM>И решил ее протестировать, заполнял строчки мусором хешировал и искл одинаковый хэш для разных строк

TM>за 10 минут на массиве из 100000 строчек вот такой вот ризультат.

TM>

TM>
TM>-------1
TM>The same hashes
TM>{-К-cjMry^)Ъ$sФ*ПТЗТsnMFy|::_'(ШГLЭk{ЙДЙnfiСIJП6vl^ S$⌂9q<Х&b9wЫ!-  24615AD
TM>ФUlpГToЗf, ЩO\W!Nm;FОDС~U#,p^c⌂SVБМD~UOЪYI]E69C*Ш_p*cИ0@УcqB'ТЙTTЕ  24615AD
TM>-------2
TM>The same hashes
TM>$ЩdC<Лu)>gSЖШЫ}IМX0Тu@BmLФghАPqUG@ЮВЮ)T&&u/ZS{MKkhAЦ4BКjК)НS&IV|РЕ  F26102BC
TM>sz5QКC#$1Ю<Q{ЧRZxM8HЪKK |6lЪGА<Ш-dЧGAw#%l$_K\:4УkЕ?-ltoАЪu4,Q]GM<Л  F26102BC
TM>The same hashes
VРeaВUCI`>>OdYГnzfЗ:yyС|+3_РB/j0ЕF%vgY_06QC$fyИzx]JqГ\3|mАC|[cК@h6У  4389B64B
TM>zDK*tУЫЫrЙ ЬTБh;#]DhswdЬL%УJ1Н#XО>Э}ЫxС&OlqdT7J`+[zh*}} ЦHМW@ЩЫГ!Q  4389B64B
TM>


TM>Так вот вопрос, есть ченибуть более надежное?


Есть. Архиваторы.

О какой надежности может идти речь в твоем примере, если точно известно что для любого значения хэша существует множество элементов которые ему соответствуют. Вот только осмысленных среди них должно быть оооочень мало. А мусору с одинаковым хешем наковырять конечно можно.....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.