www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de