<?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=321689&amp;view=findpost&amp;p=2785976</guid>
        <pubDate>Tue, 21 Dec 2010 16:48:48 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785976</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=321689&view=findpost&p=2785964'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MBo &#064; <time class="tag-quote__quoted-time" datetime="2010-12-21T19:39:33+03:00">21.12.10, 16:39</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=321689&amp;view=findpost&amp;p=2785965</guid>
        <pubDate>Tue, 21 Dec 2010 16:40:00 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785965</link>
        <description><![CDATA[Pavia: <strong class='tag-b'>FasterHarder</strong><br>
Здесь всё описано.<br>
http://www.cs.cmu.edu/afs/cs.cmu.edu/user/christos/www/courses/826-resources/PAPERS+BOOK/linear-hashing.PDF<br>
Правда применительно к линейной. Но думаю на двойное хэширование тоже распространяется.<br>
Ну если вы перебрали j от 0 до L и всё занято, то просто увеличиваете таблицу (Увеличить L). А для тех у кого туго с английским, то лучше увеличивать не дожидаясь 100% заполнения, а гораздо раньше.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785964</guid>
        <pubDate>Tue, 21 Dec 2010 16:39:33 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785964</link>
        <description><![CDATA[MBo: &gt;возможен вариант вроде, когда это зациклится...<br>Что значит зациклится? Размер таблицы не зря выбирают из простых чисел.]]></description>
        <author>MBo</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785950</guid>
        <pubDate>Tue, 21 Dec 2010 16:26:32 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785950</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=321689&view=findpost&p=2785699'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MBo &#064; <time class="tag-quote__quoted-time" datetime="2010-12-21T13:24:57+00:00">21.12.10, 13:24</time></span><div class='quote '>тогда проверяется (H1(B) + 2 * H2(B)) mod L </div></div><br>
примерно понятно..<br>
<br>
N.B. правда ведь возможен вариант вроде, когда это зациклится...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785699</guid>
        <pubDate>Tue, 21 Dec 2010 13:24:57 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785699</link>
        <description><![CDATA[MBo: &gt;позиция (H1(B) + H2(B)) mod L УЖЕ занята<br>
тогда проверяется (H1(B) + <strong class='tag-b'>2 * </strong>H2(B)) mod L <br>
и т.д.<br>
<br>
<br>
&gt;т е вариант, когда вставляются одинаковые элементы...<br>
не обязательно одинаковые. Хэш-код имеет ограниченную длину, поэтому он может совпадать для разных входных данных. Это называется коллизия.<br>
Хорошая хэш-функция равномерно распределяет коды, но избежать коллизий полностью невозможно<br>
<br>
<br>
пример кода с дв. хэшированием есть тут: http://ru.wikipedia.org/wiki/Хеш-таблица<br>
(обрати внимание, что второй хэш не может быть нулевым - чтобы сдвиг обязательно был) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-12-21T13:29:46+00:00">21.12.10, 13:29</time></span></span><br>
<strong class='tag-b'>Pavia</strong><br>
&gt;По моему неправильно.<br>
Не увидел особой разницы  в наших краткоописаниях.]]></description>
        <author>MBo</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785695</guid>
        <pubDate>Tue, 21 Dec 2010 13:22:15 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785695</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=321689&view=findpost&p=2785691'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2010-12-21T13:19:15+00:00">21.12.10, 13:19</time></span><div class='quote '>Как выбрать &quot;соседнию&quot;? Так вот идея первая круговая. Просто увеличиваем индекс J. (H1(A)+j) mod L до тех пор пока не найдется свободное место.</div></div><br>
так это же вариант с открытой адресацией, причем шаг и количество элементов в таблице должны быть взаимнопростыми числами&#33;...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785691</guid>
        <pubDate>Tue, 21 Dec 2010 13:19:15 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785691</link>
        <description><![CDATA[Pavia: <strong class='tag-b'>MBo</strong><br>
По моему неправильно.<br>
<br>
С двойным хэшированием я плохо знаком теория такая.<br>
Пусть у нас есть таблица. Которая частично заполнена.<br>
Так вот беря h1(A) мы смотрим что у нас в этой таблице пусто хорошо. Уже что-то лжит плохо. Имеем место коллизия? Как бороться? Надо положить в &quot;соседнию&quot; свободную ячейку. <br>
<br>
Так вот таких строк может быть много. Ну посчитали мы второй хэш а вдруг опять коллизия. Такое не годится.<br>
Как выбрать &quot;соседнию&quot;? Так вот идея первая круговая. Просто увеличиваем индекс J. (H1(A)+j) mod L до тех пор пока не найдется свободное место. J и означает цикличность. Но такая группировка не всегда хорошая. Поэтому придумали ряд модификаций.<br>
<br>
Линейная (H1(A)+j*k)mod L квадратичная (H1(A)+j*k1+j*j*k2) mod L. А есть идея использовать второй хэш (H1(A)+j*H2(A)) mod L. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-12-21T13:20:26+00:00">21.12.10, 13:20</time></span></span><br>
http://en.wikipedia.org/wiki/Double_hashing]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785667</guid>
        <pubDate>Tue, 21 Dec 2010 13:07:35 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785667</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>MBo</strong>, начинаю потихоньку понимать, а если будет, что:<br>
позиция (H1(B) + H2(B)) mod L УЖЕ занята (т е на какой то предшествующей операции уже туда попал элемент), что тогда??? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-12-21T13:08:32+00:00">21.12.10, 13:08</time></span></span><br>
т е вариант, когда вставляются одинаковые элементы... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-12-21T13:12:46+00:00">21.12.10, 13:12</time></span></span><br>
и можно ли привести какой либо вариант на натуральных числах с функцией расстановки I(N % 10) использующей двойное хеширование??]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785638</guid>
        <pubDate>Tue, 21 Dec 2010 12:55:35 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785638</link>
        <description><![CDATA[MBo: Пусть хэш-таблица длиной L. И даны две строки A и B.<br>Их хэш-коды первого уровня H1(A) и  H1(B).<br>Если H1(A) &lt;&gt;  H1(B), то индексы А и B в таблице - определенЫ.<br>Если же H1(A) =  H1(B), то вычисляется H2(B), и индекс второй строки будет (H1(B) + H2(B)) mod L.<br>Вот эта операция взятия модуля и называется циклическим смещением.]]></description>
        <author>MBo</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785375</guid>
        <pubDate>Tue, 21 Dec 2010 10:40:16 +0000</pubDate>
        <title>Не могу до конца понять двойное хеширование (перемешанные таблицы)</title>
        <link>https://forum.sources.ru/index.php?showtopic=321689&amp;view=findpost&amp;p=2785375</link>
        <description><![CDATA[FasterHarder: Всем программистам привет&#33; Respect&#33;<br>
Подскажите чтобы окончательно понять метод двойного хеширования&#33;...<br>
в общем разобрался с перемешанными таблицами, использующими перемешивание сложением (открытая адресация) и использующими перемешивание сцеплением...<br>
нашел немного теории про двойное хеширование:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Для обеспечения равномерного распределения ключей в хэш-таблице при наличии коллизий можно применять метод двойного хэширования.</div><div class="code_line">Он состоит в том, что если при включении или поиска ключа в хэш-таблице возникает коллизия, то к ключу (или к комбинации ключа и текущего</div><div class="code_line">индекса массива) применяется вторичная хэш-функция, значение которой указывает циклическое смещение в массиве от текущего индекса к</div><div class="code_line">элементу, в который следует включать или в котором следует искать требуемую запись</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
мне все понятно, кроме: &quot;значение которой указывает циклическое смещение в массиве от текущего индекса к элементу&quot;<br>
<br>
например, если брать перемешивание сцеплением и обрабатывать целых числа, то функцию расстановки (хеш-функцию) можно применить как взятие остатка при делении на 10, т е для чисел 12, 48, 3, 5, 7, 63, 15, 202, 103, 188, 30, 43, 6, 18, 19 получим таблицу:<br>
0-30<br>
1-пусто<br>
2-12-202<br>
3-3-63-103-43<br>
4-пусто<br>
5-5-15<br>
6-6<br>
7-7<br>
8-48-188-18<br>
9-19<br>
<br>
можно ли как-нибудь для этого случая воспользоваться двойным хешированием или нет?...и что означает &quot;значение которой указывает циклическое смещение в массиве от текущего индекса к элементу&quot;? (хотя бы пример любой на пальцах)...<br>
<br>
подскажите как быть то??..буду очень признателен....]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	