<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Abbruchbedingungen bei Kollisionsauflösung&#x2F;Hashtabellen]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich soll mich gerade mit Hashtabellen beschaeftigen und erstmal eine Klasse schreiben, die Daten einfuegen/suchen/loeschen kann, erstmal mit Open Adressing, verschiedene Arten der Kollisionsaufloesung.<br />
Tjoar, und da bin ich jetzt etwas verwirrt am Gruebeln, nach wievielen Kollisionsaufloesungen es wohl Sinn macht, auszusteigen.</p>
<p>Eine Abbruchbedingung ist klar, egal welches Verfahren ich benutze: Leerer Eintrag.<br />
Aber was, wenn die Tabelle vollgestopft ist?<br />
Fuer lineares sondieren und double hashing ist der Fall auch noch einfach: naemlich wenn der errechnete Ersatzindex wieder dem urspruenglich errechneten Hashwert entspricht (also die ganze Tabelle einmal abgelaufen wurde).</p>
<p>Wie sieht das aber nun zB. mit Inkrementellem sondieren (also i[j] = (i[j-1] + j * a) % M , wobei a irgendein statischer Faktor und M die groesse der Tabelle), oder quadratischem Sondieren (i[j] = (i[0] + j^2)%M) aus?</p>
<p>Ich bin da bisher nur auf die Idee gekommen, die Aufloesung entweder nach M-1 Durchgaengen, oder auch wieder wenn i[j+1] == i[0] (also der urspruengliche Index) ist, aubzubrechen.</p>
<p>Noch irgendwelche besseren Ideen? Und welche der beiden Varianten ist wohl besser? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164687/abbruchbedingungen-bei-kollisionsauflösung-hashtabellen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 21:46:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164687.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Nov 2006 14:50:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abbruchbedingungen bei Kollisionsauflösung&#x2F;Hashtabellen on Sat, 11 Nov 2006 14:50:45 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich soll mich gerade mit Hashtabellen beschaeftigen und erstmal eine Klasse schreiben, die Daten einfuegen/suchen/loeschen kann, erstmal mit Open Adressing, verschiedene Arten der Kollisionsaufloesung.<br />
Tjoar, und da bin ich jetzt etwas verwirrt am Gruebeln, nach wievielen Kollisionsaufloesungen es wohl Sinn macht, auszusteigen.</p>
<p>Eine Abbruchbedingung ist klar, egal welches Verfahren ich benutze: Leerer Eintrag.<br />
Aber was, wenn die Tabelle vollgestopft ist?<br />
Fuer lineares sondieren und double hashing ist der Fall auch noch einfach: naemlich wenn der errechnete Ersatzindex wieder dem urspruenglich errechneten Hashwert entspricht (also die ganze Tabelle einmal abgelaufen wurde).</p>
<p>Wie sieht das aber nun zB. mit Inkrementellem sondieren (also i[j] = (i[j-1] + j * a) % M , wobei a irgendein statischer Faktor und M die groesse der Tabelle), oder quadratischem Sondieren (i[j] = (i[0] + j^2)%M) aus?</p>
<p>Ich bin da bisher nur auf die Idee gekommen, die Aufloesung entweder nach M-1 Durchgaengen, oder auch wieder wenn i[j+1] == i[0] (also der urspruengliche Index) ist, aubzubrechen.</p>
<p>Noch irgendwelche besseren Ideen? Und welche der beiden Varianten ist wohl besser? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172526</guid><dc:creator><![CDATA[Nobuo T]]></dc:creator><pubDate>Sat, 11 Nov 2006 14:50:45 GMT</pubDate></item></channel></rss>