www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenAlgorithmen und DatenstrukturenHashing
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "Algorithmen und Datenstrukturen" - Hashing
Hashing < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:30 Di 03.06.2008
Autor: Wimme

Aufgabe
Wir betrachten geschlossenes Hashing mit Arraygröße [mm] M=2^k [/mm] für ein k [mm] \in \mathbb [/mm] N, k [mm] \geq [/mm] 1.
Betrachten Sie für eine gegebene Hashfunktion h^* die wie folgt definierte Sondierungsfolge:
[mm] h_0(x),h_1(x)... [/mm]

[mm] h_0(x)=h^{\star}(x) [/mm] mod M
[mm] h_i(x)=(h_{i-1}(x)+i) [/mm] mod M

Zeigen Sie: Für jedes einzufügende Element x wird mit M Sondierungsschritten die ganze Hashtabelle durchsucht.

Hallo!

Wie macht man das?

Muss ich zeigen, dass [mm] \summe_{i=0}^{2^k-1}{h_i(x)}=h_0(x) [/mm] ist?

Also ich brauche ja M Sondierungsschritte, deswegen gehe ich bis [mm] M-1=2^k-1. [/mm] In jedem Schritt mache ich das nächste [mm] h_i. [/mm] In den Anfangsplatz [mm] (h_0(x)) [/mm] will ich zurück, weil ich da gestartet bin, und....hm...ne ist eigentlich quatsch, ne? Ich muss ja nicht die ganze Tabelle durchsucht haben, um wieder im gleichen Platz zu landen..

Irgendwelche Tipps?

        
Bezug
Hashing: Antwort
Status: (Antwort) fertig Status 
Datum: 08:04 Mi 04.06.2008
Autor: rainerS

Hallo!

> Wir betrachten geschlossenes Hashing mit Arraygröße [mm]M=2^k[/mm]
> für ein k [mm]\in \mathbb[/mm] N, k [mm]\geq[/mm] 1.
>  Betrachten Sie für eine gegebene Hashfunktion h^* die wie
> folgt definierte Sondierungsfolge:
>  [mm]h_0(x),h_1(x)...[/mm]
>  
> [mm]h_0(x)=h^{\star}(x)[/mm] mod M
>  [mm]h_i(x)=(h_{i-1}(x)+i)[/mm] mod M
>  
> Zeigen Sie: Für jedes einzufügende Element x wird mit M
> Sondierungsschritten die ganze Hashtabelle durchsucht.
>  Hallo!
>  
> Wie macht man das?
>  
> Muss ich zeigen, dass [mm]\summe_{i=0}^{2^k-1}{h_i(x)}=h_0(x)[/mm]
> ist?
>  
> Also ich brauche ja M Sondierungsschritte, deswegen gehe
> ich bis [mm]M-1=2^k-1.[/mm] In jedem Schritt mache ich das nächste
> [mm]h_i.[/mm] In den Anfangsplatz [mm](h_0(x))[/mm] will ich zurück, weil ich
> da gestartet bin, und....hm...ne ist eigentlich quatsch,
> ne? Ich muss ja nicht die ganze Tabelle durchsucht haben,
> um wieder im gleichen Platz zu landen..

Du hast eine Tabelle mit M Einträgen. Wenn du irgendeine (andere als die gegebene) Sondierungsfolge nimmst, könnte es doch sein, dass du mehrmals denselben Tabelleneintrag anschaust. Du musst also zeigen, dass in den M Schritten nie zweimal dasselbe Tabellenelement angeschaut wird, dass also die Folge

[mm] h_0(x),h_1(x)...[/mm]

alle Zahlen von 0 bis M-1 enthält.

Bedenke, dass [mm] $h^{\star}$ [/mm] zwar beliebig ist, aber nur einmal (für [mm] $h_0$) [/mm] berechnet wird!

Viele Grüße
   Rainer

Bezug
                
Bezug
Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 08:33 Mi 04.06.2008
Autor: Wimme

genau, darauf bin ich gestern abend dann auch noch gekommen!

Aber wie zum Geier zeige ich, dass in einer Summe alle Summenglieder verschieden sind, bzw. dass alle Indizes auftauchen?

Bezug
                        
Bezug
Hashing: Antwort
Status: (Antwort) fertig Status 
Datum: 19:44 Mi 04.06.2008
Autor: rainerS

Hallo!

> genau, darauf bin ich gestern abend dann auch noch
> gekommen!
>  
> Aber wie zum Geier zeige ich, dass in einer Summe alle
> Summenglieder verschieden sind, bzw. dass alle Indizes
> auftauchen?

Du kannst doch den n-ten Schritt, also [mm] $h_n(x)$ [/mm] direkt als Summe (mod M) schreiben. Für diese Summe gibt es eine Formel.

Außerdem kannst du schließen, dass die Hälfte der [mm] $h_n(x)$ [/mm] gerade und die andere Hälfte ungerade ist. Dann überlege dir, dass die Hälfte der geraden Werte durch 4 teilbar ist, usw.

Viele Grüße
   Rainer

Bezug
                                
Bezug
Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:17 Mi 04.06.2008
Autor: Wimme

hallo Rainer!

mir fehlt immer noch der finale Schritt. Immerhin glaube ich jetzt die geschlossene Formel gefunden zu haben:

[mm] h_n(x)=(h^{\star}+\frac{n(n+1)}{2}) [/mm] mod M

damit kann ich jetzt also den n-ten Schritt ausdrücken.
Ich möchte zeigen, dass alle Zahlen von 0 bis M-1 rauskommen, wenn die die Folge [mm] h_0 [/mm] .. [mm] h_{M-1} [/mm] anwende. Offensichtlich unterschieden sich die [mm] h_i(x) [/mm] nur in [mm] \frac{n(n+1)}{2} [/mm] was ich sicher irgendwie ausnutzen muss, bestimmt im Zusammenhang, dass M eine Zweierpotenz ist.

Hmmm...ich komm noch nicht drauf!! Mit deinem Tipp von Hälfte ungerade Hälfte gerade kann ich auch nicht richtig etwas anfangen :((

Bezug
                                        
Bezug
Hashing: Bisektion
Status: (Antwort) fertig Status 
Datum: 07:32 Fr 06.06.2008
Autor: rainerS

Hallo!

> mir fehlt immer noch der finale Schritt. Immerhin glaube
> ich jetzt die geschlossene Formel gefunden zu haben:
>  
> [mm]h_n(x)=(h^{\star}+\frac{n(n+1)}{2})[/mm] mod M
>  
> damit kann ich jetzt also den n-ten Schritt ausdrücken.
>  Ich möchte zeigen, dass alle Zahlen von 0 bis M-1
> rauskommen, wenn die die Folge [mm]h_0[/mm] .. [mm]h_{M-1}[/mm] anwende.
> Offensichtlich unterschieden sich die [mm]h_i(x)[/mm] nur in
> [mm]\frac{n(n+1)}{2}[/mm] was ich sicher irgendwie ausnutzen muss,
> bestimmt im Zusammenhang, dass M eine Zweierpotenz ist.

Ja. Der Wert von [mm] $h^{\star}$ [/mm] spielt für die Überlegung keine Rolle.

> Hmmm...ich komm noch nicht drauf!! Mit deinem Tipp von
> Hälfte ungerade Hälfte gerade kann ich auch nicht richtig
> etwas anfangen :((

Ich meine, du müsstest das Problem durch Bisektion lösen können. Die Menge der möglichen Werte zerfällt in zwei gleich große Teile, eine mit allen geraden, die andere mit allen ungeraden Werten. Dann betrachtest du jeden Teil für sich, aber mit $M/2$ statt M.

Viele Grüße
   Rainer

Bezug
                                                
Bezug
Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:12 Fr 06.06.2008
Autor: Wimme

hallo Rainer!

hmm..also im Prinzip betrachte ich jetzt nur:

[mm] (\frac{n(n+1)}{2})mod 2^k [/mm]

Und betrachte alle geraden Zahlen von n(n+1)/2 im Intervall [mm] 0..2^k-1 [/mm] und alle ungeraden separat. Ok..

Aber mir ist nicht ganz klar, wieso ich dann [mm] M(=2^k) [/mm] einfach halbieren darf. Dadurch verfälsche ich doch die Ergebnisse des Modulo?
z.B. 4 mod 8 = 4 aber 4 mod 4 = 0

:-(

Bezug
                                                        
Bezug
Hashing: Antwort
Status: (Antwort) fertig Status 
Datum: 17:12 Fr 06.06.2008
Autor: rainerS

Hallo!

> hallo Rainer!
>  
> hmm..also im Prinzip betrachte ich jetzt nur:
>  
> [mm](\frac{n(n+1)}{2})mod 2^k[/mm]
>  
> Und betrachte alle geraden Zahlen von n(n+1)/2 im Intervall
> [mm]0..2^k-1[/mm] und alle ungeraden separat. Ok..
>  
> Aber mir ist nicht ganz klar, wieso ich dann [mm]M(=2^k)[/mm]
> einfach halbieren darf. Dadurch verfälsche ich doch die
> Ergebnisse des Modulo?
>  z.B. 4 mod 8 = 4 aber 4 mod 4 = 0

Nein, ich meinte, du nimmst alle geraden Zahlen teilst sie alle durch zwei. Und statt mod M machst du dann die Betrachtung mod (M/2).

Für die ungeraden Zahlen ziehst du 1 ab und halbierst und betrachtest wieder alle Zahlen mod (M/2).

Viele Grüße
   Rainer

Bezug
                                                                
Bezug
Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:09 Fr 06.06.2008
Autor: Wimme

sorry, ich verstehe nicht inwiefern mir das helfen soll.

Bin anscheinend etwas begriffsstutzig bei dieser Aufgabe.

Könntest du es vielleicht mal teilweise vorführen und erklären, warum es mich bei der Lösung vorwärts bringt?

Bezug
                                                                        
Bezug
Hashing: Antwort
Status: (Antwort) fertig Status 
Datum: 22:44 Fr 06.06.2008
Autor: rainerS

Hallo!

> sorry, ich verstehe nicht inwiefern mir das helfen soll.
>  
> Bin anscheinend etwas begriffsstutzig bei dieser Aufgabe.
>  
> Könntest du es vielleicht mal teilweise vorführen und
> erklären, warum es mich bei der Lösung vorwärts bringt?

Fortgesetzte Bisektion: wenn du die geraden Zahlen alle halbierst, müssen diese neuen Zahlen die Menge aller Zahlen von 0 bis M/2-1 sein, sonst ist die Aussage falsch. Analoges gilt für die ungeraden.

Damit hast du das Problem halbiert. Das machst du k mal.

Viele Grüße
   Rainer

Bezug
                                                                                
Bezug
Hashing: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:04 Sa 07.06.2008
Autor: Wimme

hallo Rainer!

Naja, dann versuche ich jetzt mal selbst ein Beispiel vorzuführen:
Nehmen wir an, ich betrachte die Ergebnismenge 0..7
So, jetzt nehme ich mir alle geraden Zahlen heraus, also 0,2,4,6 und alle ungeraden 1,3,5,7

So, wenn ich dich richtig verstehe, meinst du man könnte das dann einfach halbieren, so dass ich die Zahlen
0,1,2,3 hätte. Wenn mein Modulo vorher also 8 war, soll ich also Modulo 4 betrachten?
Das ist mir jetzt denke ich klarer geworden. Denn wenn etwas vorher den Rest 0-3 erzeugt hat bei Modulo 8, muss es das auch bei Mod 4 noch tun.

Ok, das läuft darauf hinaus, dass ich am Ende mod [mm] (2^0) [/mm] betrachte und 0 herausbekommen möchte, was ja auch stimmt. Aber wieso beweist das nun, dass das für allgemeine ks funktioniert? Aus einer falschen Annahme, kann ich doch im Prinzip alles folgern, oder nicht?

Bei dem Prinzip fließt ja auch gar nicht wirklich meine aufgestellte Formel ein. Das könnte ich ja so mit jedem Modulo [mm] 2^k [/mm] machen.

Nehmen wir auch mal [mm] 2^k [/mm] für k=1. Ich muss also die Reste 0 und 1 erzeugen.Dafür steht mir [mm] h_0 [/mm] und [mm] h_1 [/mm] zur Verfügung, also einmal
[mm] (h^{\star}+0) [/mm] mod [mm] 2^1 [/mm] und [mm] (h^{\star}+2) [/mm] mod [mm] 2^1. [/mm] Folgt daraus nicht, dass [mm] h^{\star} [/mm] ungerade sein muss?

Ich weiß, man soll ja keine Erwartungshaltung haben..aber kannst du es nicht einfach mal zumindest teilweise vorführen? Ich bemühe mich ja auch. Es ist irgendwie ziemlich frustrierent, nicht zu verstehen, warum es das tut, was es soll, wie das genau funktionieren soll und mich deine Hilfestellungen leider nicht weiter bringen.

Bezug
                                                                                        
Bezug
Hashing: Antwort
Status: (Antwort) fertig Status 
Datum: 20:37 Sa 07.06.2008
Autor: rainerS

Hallo!

> hallo Rainer!
>  
> Naja, dann versuche ich jetzt mal selbst ein Beispiel
> vorzuführen:
>  Nehmen wir an, ich betrachte die Ergebnismenge 0..7
>  So, jetzt nehme ich mir alle geraden Zahlen heraus, also
> 0,2,4,6 und alle ungeraden 1,3,5,7
>  
> So, wenn ich dich richtig verstehe, meinst du man könnte
> das dann einfach halbieren, so dass ich die Zahlen
>  0,1,2,3 hätte. Wenn mein Modulo vorher also 8 war, soll
> ich also Modulo 4 betrachten?
>  Das ist mir jetzt denke ich klarer geworden. Denn wenn
> etwas vorher den Rest 0-3 erzeugt hat bei Modulo 8, muss es
> das auch bei Mod 4 noch tun.
>  
> Ok, das läuft darauf hinaus, dass ich am Ende mod [mm](2^0)[/mm]
> betrachte und 0 herausbekommen möchte, was ja auch stimmt.
> Aber wieso beweist das nun, dass das für allgemeine ks
> funktioniert? Aus einer falschen Annahme, kann ich doch im
> Prinzip alles folgern, oder nicht?
>  
> Bei dem Prinzip fließt ja auch gar nicht wirklich meine
> aufgestellte Formel ein. Das könnte ich ja so mit jedem
> Modulo [mm]2^k[/mm] machen.

Nein, du brauchst die Formel, um die Aussage in jedem Schritt zu beweisen. Die Sache funktioniert ja nur, weil im ersten Schritt die Hälfte der Zahlen gerade, und die andere Hälfte ungerade sind. Und das liegt daran, dass

[mm] \bruch{n(n+1)}{2} [/mm] gerade [mm] \gdw [/mm] n ist durch 4 teilbar oder (n+1) ist durch 4 teilbar.

und

[mm] \bruch{n(n+1)}{2} [/mm] ungerade [mm] \gdw [/mm] (n+2) ist durch 4 teilbar oder (n+3) ist durch 4 teilbar.

Da n alle Werte von 0 bis [mm] $2^k-1$ [/mm] annehmen kann, ergeben sich [mm] $2^{k-1}$ [/mm] gerade und [mm] $2^{k-1}$ [/mm] ungerade Werte für [mm] \bruch{n(n+1)}{2} [/mm].

Im zweiten Schritt zeigst du, dass die [mm] $2^{k-1}$ [/mm] geraden Werte bestehen aus [mm] $2^{k-2}$ [/mm] Zahlen, die durch 4 zeilbar sind, und [mm] $2^{k-2}$ [/mm] Zahlen, die nicht durch 4 teilbar sind. Ebenso zeigst du, dass die [mm] $2^{k-1}$ [/mm] ungeraden Werte zur Hälfte von der Form $4m+1$ und zur anderen Hälfte von der Form $4m+3$ sind.

Nach m Schritten hast du die Menge [mm] $\{0,\dots,2^{k}-1\}$ [/mm] in [mm] $2^m$ [/mm] gleich große Teile zerlegt, und für jeden Teil hast du eine andere Teilbarkeitsregel:

  n ist durch [mm] $2^{m+1}$ [/mm] teilbar oder n+1 ist durch [mm] $2^{m+1}+1$ [/mm] teilbar

  n+2 ist durch [mm] $2^{m+1}$ [/mm] teilbar oder n+3 ist durch [mm] $2^{m+1}$ [/mm] teilbar

   [mm] $\dots$ [/mm]

  [mm] $n+2^{m+1}-2$ [/mm] ist durch [mm] $2^{m+1}$ [/mm] teilbar oder [mm] $n+2^{m+1}-1$ [/mm] ist durch [mm] $2^{m+1}$ [/mm] teilbar

Viele Grüße
  Rainer

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]