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" - Aufbau MinHeap
Aufbau MinHeap < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Aufbau MinHeap: Datenstrukturen Algorithmen
Status: (Frage) beantwortet Status 
Datum: 15:58 Di 21.07.2009
Autor: Daniel1985

Aufgabe
MinHeapsort Aufbau..

Array größe: 10
Zahlen im Array: 69,33,95,5,18,1,21,16,81,46
                  
                        69
              33                  95
          5           18        1   21
       16   81     46

Das der Baum im Level-order aufgebaut wird, ist mir klar..
Im ersten durchlauf wird 46 mit 18 verglichen. Keine Änderung. Im zweiten durchlauf wird 16 mit 5 verglichen. Auch keine Änderung. Im dritten durchlauf wird 1 mit 95 verglichen. Die 1 nimmt den platz von 95 ein und 95 wandert runter zur eins.. Soweit ist ja noch alles klar.. Das gleiche passiert mit 5 und 33. Hier der neue AVL Baum.

                             69
                   5                  1
             33          18        95   21
         16    81     46

Nur was ich nicht ganz so verstehe ist warum wird nun 16 mit 33 verglichen und die 16 nimmt den Platz von der 33 ein und die 33 wandert runter zur 16?? Ich hätte anstatt der 16 und 33 eigentlich in diesem Fall die 1 mit der 69 getauscht, was aber falsch ist.. Kann mir vielleicht einer erklären wie das mit dem Min Heap geht?? Ich steig das an gewissen stellen nicht mehr durch warum die vergleiche irgendwann dann wieder runter gehen und wann das passiert.. :(

# Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt

        
Bezug
Aufbau MinHeap: Linearer Aufbau
Status: (Antwort) fertig Status 
Datum: 21:12 Do 23.07.2009
Autor: CSSX

Du musst dir den Heap als Liste bzw. als Array ansehen. Dabei ist die Wurzel das erste Element, und dann gehst du einfach von links nach rechts in jeder Stufe des Baumes und bildest dir eine Liste. Diese Liste wird jetzt von hinten nach vorne bearbeitet: Für jeden Knoten überprüfst du, ob die Heap-Invariante erfüllt ist.

Wenn du von hinten anfängst, erfüllen die ersten (untersten) Knoten ja bereits die Invariante für den Heap (stelle sie dir als Teilbaum vor): Sie haben keine Kinder die grösser/kleiner sind als sie selbst. Dann gehst du einfach zum nächsten Knoten, bis du zum ersten Knoten kommst welcher kein Blatt ist: Dort tauscht du dann entsprechend den Knoten mit einem der Kinder falls nötig. Diesen Knoten musst du dann aber auch sozusagen weiterverfolgen und "runtersickern" lassen bis keines der Kinder mehr grösser/kleiner ist oder ein Blatt daraus geworden ist.

Du machst bei dem Baum also folgendes:
Prüfe 46 -> OK
Prüfe 81 -> OK
Prüfe 16 -> OK
Prüfe 21 -> OK
Prüfe 1 -> OK
Prüfe 18 -> Tausche mit 46 -> OK
Prüfe 5 -> OK
Prüfe 95 -> Tausche mit 1 -> OK
Prüfe 33 -> Tausche mit 5 -> Tausche mit 16 -> OK
...
und so weiter.

Am Ende sollte dann ein Min-Heap entstehen, d.h. für jeden Knoten sollte die Invariante gelden.

Bezug
                
Bezug
Aufbau MinHeap: Korrektur
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:33 Do 23.07.2009
Autor: CSSX

Sorry, da hat sich ein kleiner Fehler eingeschlichen: Die 18 tauscht man natürlich nicht mit der 46. Ich hoffe es ist trotzdem klar :-)

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


^ Seitenanfang ^
www.vorhilfe.de