<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Divisionsrestmethode</id>
	<title>Divisionsrestmethode - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Divisionsrestmethode"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Divisionsrestmethode&amp;action=history"/>
	<updated>2026-05-22T17:17:34Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Divisionsrestmethode&amp;diff=333721&amp;oldid=prev</id>
		<title>imported&gt;HilberTraum: /* Hashing von Zeichenketten */ das kann doch ganz raus, oder?</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Divisionsrestmethode&amp;diff=333721&amp;oldid=prev"/>
		<updated>2019-11-15T18:51:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Hashing von Zeichenketten: &lt;/span&gt; das kann doch ganz raus, oder?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Divisionsrestmethode&amp;#039;&amp;#039;&amp;#039; (siehe auch [[Modulo]]) liefert eine [[Hashfunktion]].&lt;br /&gt;
&lt;br /&gt;
Die Funktion lautet:&lt;br /&gt;
&amp;lt;math&amp;gt;h(k) = k \bmod m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; ist die Größe der Hashtabelle.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
# Die Hash-Funktion kann sehr schnell berechnet werden&lt;br /&gt;
# Die Wahl der Tabellengröße &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; beeinflusst die Kollisionswahrscheinlichkeit der Funktionswerte von &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für die meisten Eingabedaten ist zum Beispiel die Wahl einer Zweierpotenz für &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, also &amp;lt;math&amp;gt;m = 2^i&amp;lt;/math&amp;gt;, ungeeignet, da dies der Extraktion der &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-niedrigstwertigen Bits von &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; entspricht, so dass alle höherwertigen Bits bei der Hash-Berechnung ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Für praxisrelevante Anwendungen liefert die Wahl einer [[Primzahl]] für &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, welche keine [[Mersenne-Primzahl]] ist, eine geringe Anzahl von zu erwartenden Kollisionen bei vielen Eingabedatenverteilungen.&amp;lt;ref&amp;gt;{{Literatur&lt;br /&gt;
 | Autor=Thomas H. Cormen, [[Charles E. Leiserson]], [[Ronald L. Rivest]], Clifford Stein&lt;br /&gt;
 | Titel=Introduction to Algorithms&lt;br /&gt;
 | Verlag=MIT Press unter anderem&lt;br /&gt;
 | Ort=Cambridge MA unter anderem&lt;br /&gt;
 | Auflage=2.&lt;br /&gt;
 | Jahr=2001&lt;br /&gt;
 | ISBN=0-262-03293-7&lt;br /&gt;
 | Seiten=231&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hashing von Zeichenketten==&lt;br /&gt;
Zeichenketten können mit der Divisionsmethode gehasht werden, indem sie in ganze Zahlen zur Basis &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; umgewandelt werden, wobei &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; die Zeichensatzgröße bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Um Integer-Überläufe zu vermeiden, kann für die Berechnung des Hashwertes bei Schlüsseln das [[Horner-Schema]] angewendet werden. Das folgende Beispiel zeigt eine Berechnung eines Hashwertes für eine 7-Bit-[[ASCII]]-Zeichenkette &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k \bmod m = (\ldots (s_{1} \cdot 128 + s_{2}) \bmod m) \cdot 128 + s_{3}) \bmod m) \cdot 128 + \ldots + s_{l-1}) \bmod m) \cdot 128 + s_{l}) \bmod m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somit kann als Zwischenergebnis maximal &amp;lt;math&amp;gt;\left(m - 1\right) \cdot 128 + 127&amp;lt;/math&amp;gt; auftreten.&lt;br /&gt;
&lt;br /&gt;
Dargestellt in [[Pseudocode]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Parameter&amp;#039;&amp;#039;&amp;#039;: [[natürliche Zahlen]] i, h=0; [[Feld_(Datentyp)|Feld]] s&lt;br /&gt;
  for i = 0 to i &amp;lt; länge_von(s)&lt;br /&gt;
 	h = (h * 128 + s[i]) mod m;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Ergebnis&amp;#039;&amp;#039;&amp;#039;: h.&lt;br /&gt;
&lt;br /&gt;
Die Multiplikation mit &amp;lt;code&amp;gt;128 = 2^7&amp;lt;/code&amp;gt; entspricht der Links-[[Bitweise Verschiebung|Bit-Shift-Operation]] &amp;lt;code&amp;gt;&amp;lt;&amp;lt; 7&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* [[Donald E. Knuth]]: &amp;#039;&amp;#039;[[The Art of Computer Programming]].&amp;#039;&amp;#039; Band 3: &amp;#039;&amp;#039;Sorting and Searching.&amp;#039;&amp;#039; 2nd edition. Addison-Wesley, Upper Saddle River NJ unter anderem 1998, ISBN 0-201-89685-0, S. 515.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;br /&gt;
[[Kategorie:Hash]]&lt;/div&gt;</summary>
		<author><name>imported&gt;HilberTraum</name></author>
	</entry>
</feed>