<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797038</guid>
        <pubDate>Thu, 25 Apr 2019 06:22:50 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797038</link>
        <description><![CDATA[Dushevny: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3797032'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-04-25T07:33:00+03:00">25.04.19, 04:33</time></span><div class='quote '>что любой байт содержит 8 бит</div></div>Не любой. Но автору темы экзотические архитектуры с размером байта, не равным 8 битам, скорее всего, не встретятся.]]></description>
        <author>Dushevny</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797032</guid>
        <pubDate>Thu, 25 Apr 2019 04:33:00 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797032</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796986'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T14:52:11+00:00">24.04.19, 14:52</time></span><div class='quote '>Поэтому я не выкупаю, как можно создать массив, в котором лярд элементов и на который отводится строго по 1 малому биту&#33;</div></div><br>
Ты в курсе, что любой байт содержит 8 бит и что в &quot;чистом&quot; С89 существуют битовые операции? :D]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797008</guid>
        <pubDate>Wed, 24 Apr 2019 18:39:28 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797008</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796997'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T16:48:33+00:00">24.04.19, 16:48</time></span><div class='quote '>В Плюсах есть std::bitset&lt;&gt; и std::vector&lt;bool&gt;. Тебе какой? </div></div><br>
ага, с битсетом знаком, даже когда-то вроде где-то юзал, но прожка текущая на сях  ;) <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3797005'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T18:16:12+00:00">24.04.19, 18:16</time></span><div class='quote '>Гм. Полный перебор цепочки из десяти тысяч (в среднем&#33;) записей - это быстрый поиск? Ну, не знаю.</div></div><br>
да нет там такого, там все норм. и красиво будет и быстро в том числе (относительно)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3797005'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T18:16:12+00:00">24.04.19, 18:16</time></span><div class='quote '>Дилетант, не понимающий, как решить тривиальную задачу (реализация битового массива)</div></div><br>
поставь мне задачу на создание бит.массива (т е что-то локальное, где нужно именно иметь понимание получения этого типа массива)&#33; вдруг смогу сделать&#33; не смогу - так не смогу)) бывает...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797005</guid>
        <pubDate>Wed, 24 Apr 2019 18:16:12 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3797005</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>быстрый поиск №тел. с применением ХТ на цепочках&#33; все&#33;</div></div><br>
Гм. Полный перебор цепочки из десяти тысяч (в среднем&#33;) записей - это быстрый поиск? Ну, не знаю.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>не путай Программистов и дилетантов)</div></div><br>
Гм. Дилетант, не понимающий, как решить тривиальную задачу (реализация битового массива), но уже замахивающийся на структуры поиска? Тут явно порядок сортировки перепутан.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796997</guid>
        <pubDate>Wed, 24 Apr 2019 16:48:33 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796997</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796986'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T14:52:11+00:00">24.04.19, 14:52</time></span><div class='quote '>прогга у меня на &quot;чистом&quot; С89. <br>
...<br>
А, эти еще есть, БИТОВЫЕ ПОЛЯ в структурах, но ведь там нельзя вроде получить массив бит.</div></div>В Плюсах есть std::bitset&lt;&gt; и std::vector&lt;bool&gt;. Тебе какой?]]></description>
        <author>Qraizer</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796991</guid>
        <pubDate>Wed, 24 Apr 2019 15:36:59 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796991</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796990'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T15:33:47+00:00">24.04.19, 15:33</time></span><div class='quote '>Какова же настоящая задача?</div></div><br>
быстрый поиск №тел. с применением ХТ на цепочках&#33; все&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796990'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T15:33:47+00:00">24.04.19, 15:33</time></span><div class='quote '>Программисты умудряются делать битовые массивы на ассемблере - хотя в ассемблере вообще никаких массивов нет. </div></div><br>
не путай Программистов и дилетантов)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796990</guid>
        <pubDate>Wed, 24 Apr 2019 15:33:47 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796990</link>
        <description><![CDATA[AVA12: Что вопрос решен - это хорошо, но было бы любопытно узнать: а в чем, собственно, вопрос заключался? Задача &quot;захэшировать пятьдесят миллионов значений в таблицу на пять тыщ позиций&quot; изначально звучит бредово. Какова же настоящая задача?<br>
<br>
P. S.<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В общем нету типа данных bit, для которого sizeof(bit) = 0.125 байт.<br>
<br>
Поэтому я не выкупаю, как можно создать массив, в котором лярд элементов и на который отводится строго по 1 малому биту&#33;</div></div><br>
Гм. Программисты умудряются делать битовые массивы на ассемблере - хотя в ассемблере вообще никаких массивов нет.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796986</guid>
        <pubDate>Wed, 24 Apr 2019 14:52:11 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796986</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796975'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T12:01:47+00:00">24.04.19, 12:01</time></span><div class='quote '>Заводим битовый массив длиной миллиард</div></div><br>
прогга у меня на &quot;чистом&quot; С89. Насколько помню, самый дешевый тип данных там char (8 бит). Логич.типа нету, есть он в стандарте C99 (&lt;stdbool.h&gt;), но и там логич.тип наверняка 1байтовый.<br>
А, эти еще есть, БИТОВЫЕ ПОЛЯ в структурах, но ведь там нельзя вроде получить массив бит. В общем нету типа данных bit, для которого sizeof(bit) = 0.125 байт.<br>
<br>
Поэтому я не выкупаю, как можно создать массив, в котором лярд элементов и на который отводится строго по 1 малому биту&#33;<br>
<br>
Итак, решено делать так, тем более, что в сети декларируют, что мол это один из лучших варианов хеширования. окэй&#33;<br>
Дан телефон в виде строки: &quot;8(928) 183-18-35&quot;. Строим из него число x = 281 831 835 (тип данных х --&#62; unsigned, до 4.2 лярдов держит, мне хватит&#33;).<br>
Берем минимальное простое число, которое перекрывает множество алфавита, это число 11.<br>
Можно считать, что имеем число 281831835 по основанию (11). Далее переводим из СС(11) в СС(10) по правилам.<br>
Вообще, по идее, можно числовое представление и не получать,а сразу обрабатывать строковое представление №телефона.<br>
<br>
b0 * 11^0 + b1 * 11^1 + ... + b7 * 11^7 + b8 * 11^8, по идее для этой суммы хватит того же unsigned. В алгоритме, который видел бегут по строке СЛЕВА НАПРАВО, я же пойду наоборот. А какая разница-то? Да, никакой&#33;<br>
Т е ХФ вернет значение вот этой суммы. Хэш-таблица - одномерный динамический массив, у которой тип данных элементов самый дешевый, ну, например, ну, не знаю unsigned char (нету типа данных = 1биту).<br>
<br>
Допустим, ХФ вернуло значение 99 832 104, лезем по этому индексу в ХТ и ставим, ну, не знаю, какой-то признак, ну, например, символ &#39;y&#39; (типа &#39;y&#39; - YES, т е есть такой №тел.). По умолчанию все элементы пустой ХТ равны чему-то, ну, не знаю чему. Да хоть чему, главное не &#39;y&#39;)<br>
<br>
Как я понимаю, в этом случае коллизий не будет вообще, т к любое уникальное число в СС(11) преобразуется в уникальное значение в СС(10).<br>
Я не знаю, вроде хотелось цепочки получать, а их тут НЕ БУДЕТ физически ни одной (кроме 1-го элемента).<br>
На самом деле их можно получить, если, допустим для суммы взять не тип данных unsigned, а, например, unsigned short. В этом случае будет возникать переполнение. НУ И ЧТО&#33; пусть идет вычет по модулю, да и все. В этом случае будет гораздо меньше элементов в ХТ.<br>
<br>
В общем вот так буду делать, и там все должно быть норм. и красиво и быстро и эффективно и не заморочено&#33; УРА&#33;  8-) <br>
<br>
P.S. но вообще, создание хороших ХФ (не как в моем трив.случае), требует не дюжей подготовки в Computer Science, ага...Ну это мое мнение, разумеется)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796975</guid>
        <pubDate>Wed, 24 Apr 2019 12:01:47 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796975</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796968'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T10:50:45+00:00">24.04.19, 10:50</time></span><div class='quote '>Т е есть вот есть произвольный номер: 8(901) 119-38-90. Что бы ты сделал? Получил число &quot;011198390&quot; (кстати, если брать как число, то ведущий 0 отваливается из анализа) и перевел в 2-ную СС? или вообще все совсем по-другому??</div></div><br>
У тебя номера телефонов, судя по маске, 9 циферные. Т.е. всего номеров 1 миллиард. Заводим битовый массив длиной миллиард, в котором 0 - телефона нет. 1 - есть. Всё же очевидно. Твоему номеру телефона соответствует число 11193890 - элемент с таким номером и задавай в 1. И кстати, а чем это не хеш-функция? Причём она идеальная без коллизий :D]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796968</guid>
        <pubDate>Wed, 24 Apr 2019 10:50:45 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796968</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>Akina</strong>, ну есть файл с телефонами и <strong class='tag-b'>нужно</strong> создать на ее основе хеш-таблицу методом цепочек ДЛЯ ПОИСКА. вот и все условие. Детали формата написаны в 1-ом посте (там все тривиально).<br>
Вот я и думаю), какую бы ХФ пооптимальнее соорудить...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T05:21:53+00:00">24.04.19, 05:21</time></span><div class='quote '>С чего бы? Во втором варианте у тебя он не от 0 же будет. Т.е. такой заменой ты просто сдвинул множество значений твоего хеша. И всё это один фиг хуже, чем просто тупой mod (то, что ты обозвал infinity) будет. </div></div><br>
ну, в принципе да&#33; сдвинуть в 0 даже удобнее с позиции языка СИ, т к нумерация элементов идет от 0... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-04-24T10:51:59+00:00">24.04.19, 10:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796926'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T04:36:08+00:00">24.04.19, 04:36</time></span><div class='quote '>Во-вторых, почему одну, а не, скажем, 4 или 5? </div></div><br>
а вот именно по этой причине и был создан вопрос в разделе &quot;Алгоритмы&quot;, что понять, 1цифру или 4 или 5, а может даже 6&#33; Или вообще совсем др.подход использовать... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-04-24T10:57:40+00:00">24.04.19, 10:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-04-24T05:21:53+00:00">24.04.19, 05:21</time></span><div class='quote '>Я бы битовым массивом тупо всё сделал.</div></div><br>
я чисто для себя полюбопытствовать (хотя битовую сетка в задании не нужна). Битовая сетка - это ведь набор элементов/бит, принимающих значения из множества {0, 1}.<br>
Т е есть вот есть произвольный номер: 8(901) 119-38-90. Что бы ты сделал? Получил число &quot;011198390&quot; (кстати, если брать как число, то ведущий 0 отваливается из анализа) и перевел в 2-ную СС? или вообще все совсем по-другому??]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796927</guid>
        <pubDate>Wed, 24 Apr 2019 05:21:53 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796927</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796911'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T20:00:47+00:00">23.04.19, 20:00</time></span><div class='quote '>а сколько бы ты сделал (т е подается N номеров и отражается во сколько записей ХТ)?</div></div><br>
Нисколько. Я бы битовым массивом тупо всё сделал. Его размер получился бы 128 мегабайт всего. Всяко меньше, чем вся хеш-таблица, содержащая 50 миллионов номеров.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796911'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T20:00:47+00:00">23.04.19, 20:00</time></span><div class='quote '>ИМХО, 2-й вариант уменьшает вероятность появления коллизий. Нет??</div></div><br>
С чего бы? Во втором варианте у тебя он не от 0 же будет. Т.е. такой заменой ты просто сдвинул множество значений твоего хеша. И всё это один фиг хуже, чем просто тупой mod (то, что ты обозвал infinity) будет.]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796926</guid>
        <pubDate>Wed, 24 Apr 2019 04:36:08 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796926</link>
        <description><![CDATA[Akina: Нужно, нужно... хрень голимая. Всё, что делается - делается зачем-то, а не для умственного онанизма. А потому - формулируй задачу. На<s class='tag-s'>ху</s> зачем тебе это хэширование нужно? Искать номер? считать статистику? что-то ещё? от задачи и будет плясать оптимальное решение.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796895'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T17:30:23+00:00">23.04.19, 17:30</time></span><div class='quote '>Есть. БД. Индексы.</div></div><br>
+146% Правильно спроектированная и проиндексированная БД - выиграет у любого рукописного приложения, за исключением узкоспецифичных однозадачников.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796901'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T18:12:47+00:00">23.04.19, 18:12</time></span><div class='quote '>смутно помню, в основе индексов лежат какие-то древовидные структуры данных</div></div><br>
После получения хэша тебе ещё надо оптимизировать таблицу этих хэшей для быстрого поиска. И эта оптимизированная таблица поиска у тебя будет сортированной, а оптимизацию самого поиска ты будешь производить, интерпретируя сортированный массив хэшей как дерево - явно или неявно (если не хочешь проиграть по дисковым операциям и операциям поиска в загруженном в память массиве). Заодно придёшь к мысли о кластеризации хэш-таблицы, и... поздравляю, ты придумал свою СУБД.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796883'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T14:03:36+00:00">23.04.19, 14:03</time></span><div class='quote '>1. вернуть последнюю цифру №тел. - тогда в ХТ будет 10 записей, а в каждой цепочке примерно 5млн.записей и коллизия при обработке каждого 10-го №тел.</div></div><br>
Во-первых, коллизия для любого телефона с вероятностью 1-0,9<sup class='tag-sup'>4999999</sup>. Т.е. вероятностью отсутствия коллизии можно смело пренебречь. А не прогнозируемые тобой 90%.<br>
Во-вторых, почему одну, а не, скажем, 4 или 5?]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796911</guid>
        <pubDate>Tue, 23 Apr 2019 20:00:47 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796911</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T19:28:14+00:00">23.04.19, 19:28</time></span><div class='quote '>или сколько тебе там значений хеша нужно</div></div><br>
а сколько бы ты сделал (т е подается N номеров и отражается во сколько записей ХТ)? в 1-ом посте и спрашиваю в том числе про это кол-во.<br>
<br>
&#39;0&#39; --&#62; 0 или &#39;0&#39; --&#62; 48??<br>
ИМХО, 2-й вариант уменьшает вероятность появления коллизий. Нет??]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796908</guid>
        <pubDate>Tue, 23 Apr 2019 19:28:14 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796908</link>
        <description><![CDATA[OpenGL: Номер телефона, преобразованный в число mod 5000 (или сколько тебе там значений хеша нужно) и всё, если уж хочешь изобретать велосипед.]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796901</guid>
        <pubDate>Tue, 23 Apr 2019 18:12:47 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796901</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414667&view=findpost&p=3796895'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-23T17:30:23+00:00">23.04.19, 17:30</time></span><div class='quote '>БД. Индексы. </div></div><br>
насколько смутно помню, в основе индексов лежат какие-то древовидные структуры данных&#33;<br>
меня интересует почти оптимальная хэш-функция...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796895</guid>
        <pubDate>Tue, 23 Apr 2019 17:30:23 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796895</link>
        <description><![CDATA[Gonarh: Есть. БД. Индексы.]]></description>
        <author>Gonarh</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796894</guid>
        <pubDate>Tue, 23 Apr 2019 17:10:28 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796894</link>
        <description><![CDATA[FasterHarder: нашел такой пример в инете хеширования строк&#33;<br>
№тел.такой: 8(9ХХ) ХХХ-ХХ-ХХ, преобразуем в строку вида &quot;ХХХХХХХХХ&quot;, т е в строку, состоящую ТОЛЬКО из 10-ных цифр в кол-ве РОВНО 9 штук.<br>
Мощность алфавита М = 10 (т к всего 10 различных цифр). Берем максимальное простое число, попадающее по значению в мощность множества Р = 7 (Р &lt;= M) + Р-простое.<br>
И после этого вычисляем ХЭШ по правилу:<br>
&lt;АСКИ-код 1-й цифры строки&gt; * P^0 + &lt;АСКИ-код 2-й цифры&gt; * P^1 + ... + &lt;АСКИ-код предпоследней цифры&gt; * P^7 + &lt;АСКИ-код последней&gt; * P^8<br>
<br>
Номера телефонов лежат на отрезке [&quot;000000000&quot; .. &quot;999999999&quot;]. Значит, хеш-код будет лежать на отрезке от 0 до <br>
57 + 57*7 + 57*7^2 + ... + 57*7^7 + 57*7^8 = infinity<br>
<br>
вот тут не знаю, может имеет смысл брать не АСКИ-коды цифр-символов (&#39;0&#39; --&#62; 48, &#39;1&#39;---&#62; 49, ..., &#39;9&#39;--&#62; 57), а цифру-цифру равную символе-цифре(&#39;0&#39; --&#62; 0, .., &#39;9&#39; --&#62; 9), тогда правая граница значительно сократится&#33;<br>
<br>
Но в любом случае, хэш-таблица будет представлять собой динамический массив, у которого кол-во элементов равно этому &quot;инифинити&quot;. Но ведь таблица будет очень РАЗРЯЖЕННОЙ, т к не все хеш-коды можно сгенерить. Это нормально, да??<br>
<br>
Кстати, этот алгоритм очень мне напоминает алгоритм сравнения двух дат, когда ДД, ММ и ГГГГ умножаются на возрастающие коэффы, а потом складываются...<br>
<br>
Наверное, так тупо и буду делать или есть ГОРАЗДО лучше что-то??]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796892</guid>
        <pubDate>Tue, 23 Apr 2019 15:21:18 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796892</link>
        <description><![CDATA[Pavia: А зачем вам метод цепочек?<br>
Использовать двойное хэширование и всё.<br>
<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=321689' target='_blank'>Не могу до конца понять двойное хеширование (перемешанные таблицы)</a>]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796883</guid>
        <pubDate>Tue, 23 Apr 2019 14:03:36 +0000</pubDate>
        <title>Хеш-функция (хеш-таблица) для кодирования номеров телефонов</title>
        <link>https://forum.sources.ru/index.php?showtopic=414667&amp;view=findpost&amp;p=3796883</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Сходу к делу&#33;<br><br>Есть текстовый файл, в котором хранятся номера моб.телефонов(на 1 строке файла лежит 1 номер).<br>Маска телефонов: 8(9XX) XXX-XX-XX, X - цифра, т е принимает целое значение от 0 до 9.<br>Примеры правильных ном. телефонов:<br>1. 8(919) 100-08-73<br>2. 8(903) 981-02-22<br>...<br>В файле может хранится до 50 млн. РАЗЛИЧНЫХ ном.телефонов.<br>Нужно в общем их захешировать по оптимальнее (не прям чтоб идеально) методом цепочек.<br>===================================================<br>Вот, если требовалось бы только искать ном.телефонов, тогда я бы преобразовал ном.телефонов в целые числа (без учета первой 8-ки и 9-ки), отсортировал бы Хоаром и дихотомией бы искал. Оптимальнее способа ИМХО не существовало бы. Но тогда бы вставка была бы недопустимой из-за сдвига на 1 позицию влево-вправо лютого кол-ва элементов. Прогга умерла бы при вставке, удалении (с послед.сжатием).<br><br>Нужна какая-то хэш-функция&#33; Желательно получше...<br>1. Нужно понять, в каком типе данных обрабатывать ном.тел.: строка или перевод в целое число?<br>2. Хотелось бы эти 50млн. записей в файле ОТРАЗИТЬ в хеш-таблицу, в которой не более 5000 записей. Т е в отношении 1 к 10 000. Или мало 5000 для хеш-таблицы?? Очевидно, что коллизий НЕ ИЗБЕЖАТЬ ни при каких раскладах...<br><br>Примеры ХФ:<br>1. вернуть последнюю цифру №тел. - тогда в ХТ будет 10 записей, а в каждой цепочке примерно 5млн.записей и коллизия при обработке каждого 10-го №тел.<br>2. вернуть (сумму цифр тел.) mod (длина номера) - некий аналоги способа 1.<br>3. вернуть самую часто встречаемую цифру в №тел. - опять-таки, будет всего 10 записей в ХТ и коллизия на каждом 10-ом<br>...<br><br>т е все, что приходит на ум из простого отображает все номера телефонов в 10 записей ХТ. Это ведь плохо, так?<br><br>Если привязывать к АСКИ-кодам цифр (№тел. рассматривается как строка), тут, что можно придумать?<br><br>Я хотел бы узнать у общества, вот, если подается 50млн.записей, то в какой размер ХТ это желательно отразить? №тел.задаются ХАОТИЧНО и там нет никакой частотности или закономерности.<br>Какую ХФ лучше взять?]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	