FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 Zettel 3

P3 Zettel 3 2002-11-18 19:31
TriPhoenix
Ich mach mal den Anfang für die nächsten zwei Wochen P3 ;)

Und zwar habe ich da zu Aufgabe 1 folgende Frage:
Was itst ein links-vollständiger Binärbaum und wie ist dessen Arraydarstellung zu verstehen [img]http://www.sternenvolk.de/symb/26.gif[/img]

Edit: Google hat doch glatt eine Seite mit links-vollständig aufgetan :) ist die Array darstellung so zu verstehen, dass zuerst die Wurzel kommt, dann die beiden Knoten in Ebene 1, dann die 4 in Ebene 2 etc ?

Links-vollständig bedeutet, dass ein Baum der Höhe h bis zur Höhe h-1 vollständig, d.h. jeder Knoten hat zwei Söhne, sein muss.
Die Knoten der Höhe h liegen so weit links wie möglich. Wenn also ein Knoten der Höhe h keinen linken Sohn hat, kann er auch keinen rechten Sohn haben.
So ist außerdem gewährleistet, dass es keine Löcher im Baum gibt.

Re: P3 Zettel 3 2002-11-18 20:03
Slater
ui, es geht wieder los ;)

kann nur zustimmen, in der vorlesung wurde nur eine solche array-darstellung für bäume eingeführt (seite 26, folie I-51),

über links-vollständig steht auf seite 33, folie I-65 was



Re: P3 Zettel 3 2002-11-18 21:23
TriPhoenix
Schön, wieder was zum nachlesen :)

und gleich die nächste Frage:

Angenommen ich habe einen 4-Wege-Suchbaum und habe bisher 2, 3, 4 eingefügt. Dann habe ich den Wurzelknoten in dem die Zahlen 2, 3, 4 in dieser Folge stehen. Angenommen ich füge nun eine 1 ein, werden die anderen beiseite geschoben oder ein neuer Knoten eröffnet? Die Beispiele im Skript umschiffen dieses Problem sehr elegant durch die Wahl der Zahlen [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 Zettel 3 2002-11-18 21:34
Slater
hmm, folie I-71 mit 85,90,95 is wohl doch eindeutig ;)

Re: P3 Zettel 3 2002-11-18 21:49
TriPhoenix
hmm, folie I-71 mit 85,90,95 is wohl doch eindeutig ;)

*aua* und ich hab vorhin noch gedacht das wäre nicht das was ich Suche, danke für den Hinweis ;)

Re: P3 Zettel 3 2002-11-18 22:06
TriPhoenix
Ok, hier kommt die nächste Runde [img]http://www.sternenvolk.de/symb/24.gif[/img]

Wir sollen bei dem M-Wege-Baum ja die durchschnittliche Pfadlänge angeben. Ist das mal irgendwo vernünftig definiert?
Ich meine, zählen innere Knoten mit oder nicht, Zählt ein Knoten der 3 Elemente enthält 3fach etc?

Re: P3 Zettel 3 2002-11-18 22:23
Slater
neues bildchen? der zaphod auch..,

naja ich bin jetzt auch überfragt, dafür gibts ja termine


Re: P3 Zettel 3 2002-11-20 18:41
Fred
Was itst ein links-vollständiger Binärbaum und wie ist dessen Arraydarstellung zu verstehen [img]http://www.sternenvolk.de/symb/26.gif[/img]
Edit: Google hat doch glatt eine Seite mit links-vollständig aufgetan :) ist die Array darstellung so zu verstehen, dass zuerst die Wurzel kommt, dann die beiden Knoten in Ebene 1, dann die 4 in Ebene 2 etc ?
Rein logisch betrachtet denke ich das auch, bin mir aber noch nicht ganz sicher [img]http://www.sternenvolk.de/symb/2.gif[/img]
http://wwwagr.informatik.uni-kl.de/~tombers/ESSY2/ESSY2_F02_2.pdf
http://www.stud.fernuni-hagen.de/q5635942/1661-1801.pdf
http://www.fh-wolfenbuettel.de/fb/i/organisation/personal/ruediger/lehre/Inf/ThillmRue.pdf



Re: P3 Zettel 3 2002-11-21 00:06
Fred
Ich rege mich schon wieder ueber die Zeitangaben auf den Aufgabenzetteln auf [img]http://www.sternenvolk.de/symb/8.gif[/img] Fuer Aufgabe 1 habe ich nicht eine Stunde sondern etwas ueber zwei benoetigt
Jetzt moechte ich natuerlich meine Ergebnisse mit Euren vergleichen. Wie macht ihr aus dem Baum einen Heap? Ich sortiere einfach das Array absteigend, nicht gerade intelligent, aber es funktioniert [img]http://www.sternenvolk.de/symb/24.gif[/img]
Bessere Loesung ist sicherlich http://ist.unibw-muenchen.de/Lectures/WT2000/EinfuehrungII/Blaetter/Blatt8.pdf

007 018 021 014 004 026 005 009 006 015 013 001 002 011 Abb. 1 - initialisierter, linksvollständiger binärer Baum 026 021 018 015 014 013 011 009 007 006 005 004 002 001 Abb. 2 - Heap, der aus Abb.1 durch Sortieren hervorgeht


Re: P3 Zettel 3 2002-11-21 12:11
Felix
Fred: Vielleicht irre ich mich ja, aber ich glaube Du hast das Array genau falschrum sortiert. Teilwurzel <= Söhne ist die Heap-Eigenschaft.
Ich sortiere jeden Pfad von einem Blatt bis zu der Wurzel per "BubbleSort" beginnend bei dem ("linksseitig" gesehenen) ersten Blatt.

Was habt ihr eigentlich bei der Höhe des m-Wege-Baums rausbekommen? Ich hab 5 (Wurzel hat Höhe 1)

Re: P3 Zettel 3 2002-11-21 18:16
Liller
Stimmt: In der Wurzel muss das kleinste Element stehen, und jeder Knoten ist kleiner als seine (beiden) Nachfolger!

Re: P3 Zettel 3 2002-11-21 19:43
Fred
Fred: Vielleicht irre ich mich ja, aber ich glaube Du hast das Array genau falschrum sortiert. Teilwurzel <= Söhne ist die Heap-Eigenschaft.
Ich denke mal es ist egal, wierum man sortiert, wenn es nur um das Sortieren an sich geht und die Ordnung nicht einen speziellen Zweck symbolisiert.


Re: P3 Zettel 3 2002-11-21 19:45
Fred
Stimmt: In der Wurzel muss das kleinste Element stehen, und jeder Knoten ist kleiner als seine (beiden) Nachfolger!
Steht sicher so im Skript, oder warum behauptest Du das so fest [img]http://www.sternenvolk.de/symb/7.gif[/img]
Gegenbeispiel gibts z.B. auf http://gtsun.et.fh-osnabrueck.de/lehre/algorithmen/alds-skript/node20.html

Eine <= Relation kann man auch so auslegen, dass groessere Zahlen <= sind als kleinere Zahlen…


Re: P3 Zettel 3 2002-11-21 23:49
flatline
Ich weiß nicht ob ich mich nun arg täusche, aber ein Heap ist wie liller sagt genau anders herum sortiert. auf Folie I-64 steht ja Die Wurzel eines Teilbaums ist das Minimum des Teilbaums. Man muß jetzt also jeden Strang mit einem Verfahren ähnlich Bubblesort sortieren. Und zwar immer beginnend mit dem linken strang. So wollten wir das lösen… hat aber nun jemand ne Idee wie man das direkt im Array macht?

Re: P3 Zettel 3 2002-11-22 02:46
Fred
Ich weiß nicht ob ich mich nun arg täusche, aber ein Heap ist wie liller sagt genau anders herum sortiert.
Ist doch fuer das Prinzip des Heapsort schnurzegal! Die Ordnung muss man einmal festlegen, und dann dafuer sorgen, dass sie fuer jeden Knoten im Baum gilt. Ob nun groesser oder kleiner… wen interessiert's? Es sagt ja auch niemand, dass es falsch ist, eine Namensliste absteigend von z nach a zu sortieren.

Re: P3 Zettel 3 2002-11-23 15:52
Fred
Man muß jetzt also jeden Strang mit einem Verfahren ähnlich Bubblesort sortieren. Und zwar immer beginnend mit dem linken strang. So wollten wir das lösen… hat aber nun jemand ne Idee wie man das direkt im Array macht?
Dass Du Rekursion benutzen musst, ist Dir klar? Vater von i ist i/2, Kinder von i sind 2i und 2i+1. Dann sollte das eigentlich kein Problem mehr sein… oder doch? [img]http://www.sternenvolk.de/symb/23.gif[/img]

Re: P3 Zettel 3 2002-11-23 23:23
Faleiro
Ich verstehe nicht ganz… ihr stellt den Baum als Array dar? Wie das denn? Einfach ein Array von int-Werten? Ich dachte, man muß das mit einer Klasse node und einer Klasse heaptree machen… und dann halt sich rekursiv durchwuehlen…

Re: P3 Zettel 3 2002-11-23 23:32
Fred
Ich verstehe nicht ganz… ihr stellt den Baum als Array dar? Wie das denn? Einfach ein Array von int-Werten? Ich dachte, man muß das mit einer Klasse node und einer Klasse heaptree machen… und dann halt sich rekursiv durchwuehlen…
Aufgabe 1 soll man doch ganz klar in einem Array machen. Die Indizes haben dann folgende Bedeutung:
1: Wurzel
2: linkes Kind von 1
3: rechtes Kind von 1
4: linkes Kind von 2
5: rechtes Kind von 2
6: linkes Kind von 3
7: rechtes Kind von 3

usw.




Re: P3 Zettel 3 2002-11-23 23:59
Slater

"b) Entwickeln und implementieren Sie einen Algorithmus, der einen beliebigen links-vollständigen Binärbaum in einen Heap überführt. "
>>klingt nach baum und nicht nach array

"c) Wenden Sie (neben eigenen Testfällen) das resultierende Programm auf den oben gegebenen Binärbaum an und geben Sie das Ergebnis wiederum in Array-Darstellung aus."
>>klingt stark nach baum als baum und nur die ausgabe als array

Re: P3 Zettel 3 2002-11-24 01:12
Fred
>>klingt nach baum und nicht nach array
Das Array repraesentiert einen Baum!


Re: P3 Zettel 3 2002-11-24 09:29
Popcorn
Das ist jetzt aber doch recht weit ausgelegt. Dann ist ein Integer ja irgendwie auch 'n Baum, nur ohne Blätter, hmm?

Re: P3 Zettel 3 2002-11-24 13:37
Anonymer User
Das ist jetzt aber doch recht weit ausgelegt. Dann ist ein Integer ja irgendwie auch 'n Baum, nur ohne Blätter, hmm?
Loetzinn! Ein Integer ist natuerlich kein Baum, aber ein einelementiger Array mit einem Integer ist ein Baum bzw. kann als Baum interpretiert werden.


Re: P3 Zettel 3 2002-11-24 13:38
Anonymer User
>>klingt nach baum und nicht nach array
Das Array repraesentiert einen Baum!

Fred hat wie immer recht!

Re: P3 Zettel 3 2002-11-24 15:16
Popcorn
Ja gut. Nun trotz aller Behauptungen: Wie sieht denn die Begründung aus, dass ein Array einen Baum repräsentieren soll. Das ein Integer kein Baum ist, ist mir auch noch gerade klar. Ich stehe ja auf der anderen Seite, das ich Array und Baum nicht so ganz vereinbaren kann. Sicher, Array und Baum sind beides verkettete Listen, aber danach hört es für mich auch schon auf.

Re: P3 Zettel 3 2002-11-24 16:04
Liller
Die Darstellung im Array ist doch nur eine mögliche Art und Weise. Sie hat den Vorteil, dass man sich keinen neuen Behälter zusammenbasteln muss. Schließlich ist es doch egal wie ich einen Baum INTERN repräsentiere, wenn nichts explizieit in der Aufgabenstellung gefordert ist.

@Fred
Wir wurden in unserer P3-Ü extra darauf hingewiesen, dass wir
eine Heap so verstehen sollen, dass das kleinste Element in der Wurzel usw. steht! Dies ist natürlich nur Definitionssache und man kann einen Heap genauso andersherum definieren. Wäre nur blöd wenn man wegen so einer Sache einen Punkt abgezogen bekommt, wie es mir auf dem ersten Zettel mit LinkedList passiert ist [img]http://www.sternenvolk.de/symb/10.gif[/img]

Re: P3 Zettel 3 2002-11-24 16:17
Popcorn
Die Darstellung im Array ist doch nur eine mögliche Art und Weise. Sie hat den Vorteil, dass man sich keinen neuen Behälter zusammenbasteln muss. Schließlich ist es doch egal wie ich einen Baum INTERN repräsentiere, wenn nichts explizieit in der Aufgabenstellung gefordert ist.
Ähm. Dem habe ich nicht widersprochen. Ich habe meinen Baum auch in ein Array gestopft. Das heißt aber noch lange nicht, dass Arrays Bäume repräsentieren? Wenn ich ein Buch zerpflücke und die Zettel in meinen Rucksack werfe, repräsentiert mein Rucksack doch kein Buch? [img]http://www.sternenvolk.de/symb/baby.gif[/img] Ich verstehe Euch nicht.

Re: P3 Zettel 3 2002-11-24 16:44
Anonymer User
Yo leutz,
hat schon jemand aus Aufgabe 3 den B* Baum aufgemalt??
Würde den gern mal sehen.so zum Vergleich, müssen ja nicht die einzelnen Schritte sein, aber das Resultat wäre nicht schlecht!

Re: P3 Zettel 3 2002-11-24 16:56
Anonymer User
Nach den ersten 7 Zahlen sieht das doch so aus, oder?:

17 33
/ | \
7,17 20,29 37,47


und wie geht's weiter?

Re: P3 Zettel 3 2002-11-24 17:03
Elnino
Grrr…wieder nicht eingeloggt gewesen!
Das sieht ja schlimm aus!!! Ich meinte natürlich damit,
das der Baum so aussieht:
*17*33*
linker pointer auf 7*17
mittlerer pointer auf 20*29
und rechter pointer auf 37*47




Re: P3 Zettel 3 2002-11-24 17:05
Liller
Die Darstellung im Array ist doch nur eine mögliche Art und Weise. Sie hat den Vorteil, dass man sich keinen neuen Behälter zusammenbasteln muss. Schließlich ist es doch egal wie ich einen Baum INTERN repräsentiere, wenn nichts explizieit in der Aufgabenstellung gefordert ist.
Ähm. Dem habe ich nicht widersprochen. Ich habe meinen Baum auch in ein Array gestopft. Das heißt aber noch lange nicht, dass Arrays Bäume repräsentieren? Wenn ich ein Buch zerpflücke und die Zettel in meinen Rucksack werfe, repräsentiert mein Rucksack doch kein Buch? [img]http://www.sternenvolk.de/symb/baby.gif[/img] Ich verstehe Euch nicht.

Gutes Beispiel: Ein Buch ist doch nur ein Behälter für Informationen, die dort in einer bestimmten Art abgelegt sind.
In deinem Rucksack liegen die selben Informationen eben in einer anderen Weise, nämlich unsortiert, vor.

Re: P3 Zettel 3 2002-11-24 17:21
Popcorn
Gutes Beispiel: Ein Buch ist doch nur ein Behälter für Informationen, die dort in einer bestimmten Art abgelegt sind.
In deinem Rucksack liegen die selben Informationen eben in einer anderen Weise, nämlich unsortiert, vor.
Ja genau. Der Inhalt ist gleich. Aber der Behälter ist kein Baum/Buch mehr, sondern ein Array/Rucksack.

Re: P3 Zettel 3 2002-11-24 21:31
Faleiro
Fred hat Recht, danke Fred. Es fiel mir heute, als die Gedanken wanderten (d.h. M1-Vorlesung) wie Schuppen von den Augen.
Wenn man den Index eines Kindes berechnen kann, braucht man ja nicht mehr, das reicht fuer die ganze Aufgabe.
Haette ich brav eine Node-Klasse etc. geschrieben, waere das Array-maessige Ausgeben ein grosses Problem geworden.

Gut, dass ich noch nicht weit bin ;-))

Re: P3 Zettel 3 2002-11-24 23:09
Fred
Sicher, Array und Baum sind beides verkettete Listen
Die Begriffe "Array" und "Baum" funktionieren auf zwei verschiedenen Ebenen. Ein Array ist eine Ansammlung von Daten des gleichen Typs, die physikalisch im Speicher hintereinander angeordnet sind und per Index angesprochen werden koennen. Was Du als Programmierer mit dem Array machst ist Dir ueberlassen. Ein Array an sich steht ansonsten erst mal fuer gar nichts.
Ein "Baum" ist ein abstrakter Datentyp, in dem Relationen zwischen Elementen eingefuehrt werden, Stichwort: Vater/Sohn. Die zugrundeliegende Datenstruktur muss es also moeglich machen, von jedem beliebigen Element den Vater und die Soehne bestimmen zu koennen. Eine moegliche Implementierung (!) ist das Verwenden einer Node-Klasse, deren Exemplar auf andere Exemplare verweisen. Bei m-Wege-Baeumen oder stark entarteten binären Baumen sollte dieser Weg eingeschlagen werden.
Fuer den Spezialfall des linksvollstaendigen Binaerbaumes ist der Aufwand, mit Exemplaren einer Node-Klasse zu jonglieren, nicht gerechtfertigt. Wenn man die (gedachten) Knoten des Baumes von oben nach unten sowie von links nach rechts abzaehlt und dabei mit 1 an der Wurzel beginnt, ergibt sich eine vorteilhafte Numerierung, da das "Rumwandern" im Baum von Vater zu Sohn oder umgekehrt nicht mehr ueber Zeiger erledigt werden muss, sondern sich auf einfache Integer-Arithmetik beschraenkt (linker Sohn = 2*Vater, rechter Sohn = 2*Vater+1, Vater = Sohn/2).

Und ein Array ist mit Sicherheit keine verkettete Liste, wie Du oben schrobst [img]http://www.sternenvolk.de/symb/25.gif[/img]

Die Darstellung im Array ist doch nur eine mögliche Art und Weise
Genau. Wobei ich da gerade ein bischen ueber die Begrifflichkeit des Sowieso-Behaelters stolpere. Ein Array ist ja ganz klar ein technischer Behaelter. Aber was ist ein Baum? Fuer einen fachlichen Behaelter ist er mir irgendwie zu unspezifisch und abstrakt.

Wir wurden in unserer P3-Ü extra darauf hingewiesen, dass wir eine Heap so verstehen sollen, dass das kleinste Element in der Wurzel usw. steht! Dies ist natürlich nur Definitionssache und man kann einen Heap genauso andersherum definieren. Wäre nur blöd wenn man wegen so einer Sache einen Punkt abgezogen bekommt, wie es mir auf dem ersten Zettel mit LinkedList passiert ist
Danke fuer den Hinweis! Wobei ich einen Punktabzug auf dem ersten Zettel schon irgendwie nachvollziehen kann, wenn da die Ordnung EXPLIZIT vorgegeben ist. Durch den Begriff "Heap" alleine ist dagegen noch keine Ordnung festgelegt.

Ich habe meinen Baum auch in ein Array gestopft. Das heißt aber noch lange nicht, dass Arrays Bäume repräsentieren?
Generell repräsentieren Arrays gar nichts. Erst die Verwendung durch den Programmierer gibt dem speziellen Array einen Sinn.

Wenn ich ein Buch zerpflücke und die Zettel in meinen Rucksack werfe, repräsentiert mein Rucksack doch kein Buch?
Du kannst ein Buch (fachlicher Behaelter) nicht mit einem Array (technischer Behaelter) vergleichen. (Es verbietet Dir ja nicht einmal jemand, das Buch als Array zu implementieren.)

Ja genau. Der Inhalt ist gleich. Aber der Behälter ist kein Baum/Buch mehr, sondern ein Array/Rucksack
Wieso ist ein Rucksack ein Array???

Wenn man den Index eines Kindes berechnen kann, braucht man ja nicht mehr, das reicht fuer die ganze Aufgabe
Eben. Die Implementierung als Array hat nebenbei erwaehnt natuerlich den Nachteil, dass nicht einfach ganze Teilheaps mit einer einzigen Tauschoperation austauschen kann, aber das ist fuer die erste Aufgabe ja auch gar nicht noetig, elementeweises Tauschen genuegt vollkommen.


Re: P3 Zettel 3 2002-11-25 03:36
Tzwoenn
Du solltest Heiliger werden… so sehr wie du dich um das baumtechnische Seelenwohl der anderen kümmerst [img]http://www.sternenvolk.de/symb/22.gif[/img]



Re: P3 Zettel 3 2002-11-25 10:24
Cyrax
LOL. Naja, wenn hier jemand etwas anscheinend nicht verstanden hat und Sachen durcheinander würfelt, so das nachher überhaupt keiner mehr durchblickt isses besser, wenn das mal eine klar stellt.
Und genau das hat Fred gemacht. Thnx Fred [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 Zettel 3 2002-11-25 16:32
Fred
Du solltest Heiliger werden… so sehr wie du dich um das baumtechnische Seelenwohl der anderen kümmerst [img]http://www.sternenvolk.de/symb/22.gif[/img]
Und Du solltest Dich ein bischen mehr um Dein eigenes Wohl kuemmern und nicht noch um 3:36 UniMatiX Beitrage tippern [img]http://www.sternenvolk.de/symb/25.gif[/img]


Re: P3 Zettel 3 2002-11-25 17:38
Elnino
Ich hab jetzt nicht ganz mitgekriegt, wie ihr die Sache mit dem Heap gelöst habt, aber was ist denn nu richtig??? Wenn man das z.B. bei Aufgabe 1d) mitreinnehmen will, spielt das doch ne Rolle, ob:

1)Wurzel <= Nachfolger, oder
2)Wurzel >= Nachfolger

Ich dachte immer, das der erste Fall richtig ist. Nun nach ein bißchen googl'n…finde ich etwa 50:50 Meinungen zu beiden!!! [img]http://www.sternenvolk.de/symb/3.gif[/img] Dabei sind Beispiele in Musterlösungen von Klausuren dabeigewesen, in denen ein Baum nur wegen 1) (da dort ein Heap nach 2) definiert wurde) als FALSCH gesehen wurde (laut Musterlösung)! Sprich: sind nun die kleinsten Schlüssel näher an der Wurzel oder doch die größten???

Re: P3 Zettel 3 2002-11-25 18:29
Slater
in wie fern sind denn die anderen interpretationen interessant?,
im skript steht doch einwandfrei, das das kleinste element oben stehen soll, im aufgabenzettel steht nix anderes, also solls so gemacht werden,
da hat noch nicht mal Fred widersprochen ;))

Re: P3 Zettel 3 2002-11-25 19:17
Labskaus
Wir fragen einfach am Donnerstag nach und gut is.

Re: P3 Zettel 3 2002-11-25 19:37
Tzwoenn
Du solltest Heiliger werden… so sehr wie du dich um das baumtechnische Seelenwohl der anderen kümmerst [img]http://www.sternenvolk.de/symb/22.gif[/img]
Und Du solltest Dich ein bischen mehr um Dein eigenes Wohl kuemmern und nicht noch um 3:36 UniMatiX Beitrage tippern [img]http://www.sternenvolk.de/symb/25.gif[/img]

Ups, das war ich nicht *sich rausred* da hat wer die Serverzeit umgestellt, ehrlich. Würd mich hüten nach Midnight noch auf den Beinen zu sein.

Re: P3 Zettel 3 2002-11-25 20:45
Slater
wie war das jetzt noch mal mit den pfadlängen?:
kleinste: die vom blatt mit der geringsten höhe
grösste: höhe des baums - 1
durchschnitt: pfadlänge aller blätter / anzahl aller blätter

richtig so definiert?

Re: P3 Zettel 3 2002-11-26 00:44
Fred
sind nun die kleinsten Schlüssel näher an der Wurzel oder doch die größten???
Geht das schon wieder los? [img]http://www.sternenvolk.de/symb/22.gif[/img]
Per Definition ist ein Heap ein binärer Baum, in dem für jeden Knoten gilt, dass dieser in einer bestimmten, transitiven Relation sowohl zu seinem linken als auch zu seinem rechten Sohn steht. Aus der Transitivität ergibt sich automatisch auch, dass der Knoten zu allen seinen Unterknoten in dieser Relation steht.
Welche Relation das ist, haengt vom jeweiligen Einsatzgebiet ab. Wenn Du einen Heap z.B. als Prioritaetswarteschlange verwenden moechtest, so sollte man fuer den Fall, dass kleinere Zahlen eine hoehere Priotitaet symbolisieren, die = Relation zu verwenden.
Besteht die Aufgabenstellung lediglich aus der Implementation eines beliebigen Heap ohne spezielles Einsatzgebiet und ist keine Ordnung explizit vorgegebn, so spielt es fuer die "Richtigkeit" der Implementation keine Rolle, welche Relation Du verwendest.
Du hast ja selbst gesehen, dass bei einem Zahlenheap beide Varianten (=) in der Praxis vorkommen. Wer sich nach dem BEISPIELheap aus dem Skript richtet und die <= Relation verwendet geht natuerlich kein Risiko ein, Punkte abgezogen zu bekommen, weil man sich als Student immer auf die vorhanden Skripte berufen kann.
Es wuerde mich allerdings stark wundern, wenn ein kompetenter Uebungsgruppenleiter wegen einer vom SkriptBEISPIEL abweichenden Ordnung noergelt, der Sortieralgorithmus zur Sicherstellung der Heapeigenschaft aber ansonsten in Ordnung ist…

im skript steht doch einwandfrei, das das kleinste element oben stehen soll, im aufgabenzettel steht nix anderes, also solls so gemacht werden, da hat noch nicht mal Fred widersprochen ;))
Ich sage nur, dass jemand, der = Relation gewesen sein. Das heisst aber nicht, dass die >= Relation falsch ist.
Auf eine normale Liste uebertragen wuerde das ja bedeuten: eine alphabetisch aufsteigende Liste ist eine sortierte Liste, waehrend eine alphabetisch absteigend sortierte Liste keine sortierte Liste ist. Kommt irgendwie nicht hin, oder?

wie war das jetzt noch mal mit den pfadlängen?
kleinste: die vom blatt mit der geringsten höhe
Genau, wobei leere Blaetter nicht zaehlen, das muessen schon echte sein [img]http://www.sternenvolk.de/symb/23.gif[/img]

grösste: höhe des baums - 1
Joa, ich habe die groesste implementiert und die Hoehe dann als 1 mehr realisiert, aber wie rum man das macht ist natuerlich egal.

durchschnitt: pfadlänge aller blätter / anzahl aller blätter
Genau, wobei ich es unsinnig finde, die durchschnittliche Pfadlaenge als int zurueckzugeben.

richtig so definiert?
AFAIK schon, aber darauf gebe ich keine Garantie. Fuer mich macht es so einfach am meisten Sinn

Was ist eigentlich, wenn man zwei Objekte mit identischem Schluessel einfuegt? Bin ich heute mit Julian drueber gestolpert. Die Definition des mWege Suchbaumes verbietet dies nicht. Aber die Methode find(key) gibt ja lediglich ein einziges Objekt zurueck… schlecht oder?

NP: Beethoven


Re: P3 Zettel 3 2002-11-26 09:57
Slater
Was ist eigentlich, wenn man zwei Objekte mit identischem Schluessel einfuegt? Bin ich heute mit Julian drueber gestolpert. Die Definition des mWege Suchbaumes verbietet dies nicht. Aber die Methode find(key) gibt ja lediglich ein einziges Objekt zurueck… schlecht oder?
da sind 2 interessante sätze auf der definition von folie I-69 (falls sie nicht einfach nur ein beispiel ist ;)) )

"die schlüsselwerte sind aufsteigend geordnet, Ki <= Ki+1 "(wohlbemerkt kleinergleich, also mit doppelten)

"die elemente von unterbäumen sind kleiner/ grösser als die umschliessenden schlüsselwerte" (wohlbemerkt echt kleiner/ grösser, also keine doppelten, oder max. 3 und keine zwischenbäume…)

-> wenn man doppelte zulässt, hat man probleme mit der 2. bedingung, und davon abgesehen ist es ziemlich undefiniert, wo man denn das x. element des gleichen schlüsssels einfügt ;),
wenn man keine doppelten zulässt, ist die erste bedingung bisschen ungenau, aber sonst alles ok

–> also ne übungsfrage ;)

Re: P3 Zettel 3 2002-11-26 13:43
Fred
die elemente von unterbäumen sind kleiner/grösser als die umschliessenden schlüsselwerte" (wohlbemerkt echt kleiner/ grösser, also keine doppelten, oder max. 3 und keine zwischenbäume…)
Das ist ja furchtbar! Andererseits sollte es bei vernuenftiger Wahl des Schluessels natuerlich niemals vorkommen, dass zwei Schluessel identisch sind. Fragt sich dann nur, warum Ki <= Ki+1, irgendwie muss es ja doch erlaubt sein… [img]http://www.sternenvolk.de/symb/5.gif[/img]

Noch ne Frage zu I-73: Was ist der Unterschied zwischen der ersten und der dritten Formel? Bin ich blind? [img]http://www.sternenvolk.de/symb/3.gif[/img]


Re: P3 Zettel 3 2002-11-26 14:02
Zaphod
Noch ne Frage zu I-73: Was ist der Unterschied zwischen der ersten und der dritten Formel?
Es gibt keinen! [img]http://www.sternenvolk.de/symb/25.gif[/img]

Bin ich blind?
weiß nich.. zum Tippen reicht es offenbar gerade noch [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 Zettel 3 2002-11-26 15:05
Fred
Noch ne Frage zu I-73: Was ist der Unterschied zwischen der ersten und der dritten Formel?
Es gibt keinen! [img]http://www.sternenvolk.de/symb/25.gif[/img]
Ach so, super. Sollte da eigentlich was anderes stehen, oder sinds nur zwei Formeln, die wichtig sind?


Re: P3 Zettel 3 2002-11-26 15:38
Felix
Ich hab mal 'ne Frage zu den B*-Bäumen:
Auf Folie I-105 sind diese ja definiert worden, nur leider steht nicht dabei, wieviele Elemente die Wurzel als Blatt aufnehmen kann, bevor gesplittet werden muss! Ich hab mich jetzt zwar für 2k* entschieden, aber wenn es 2k wären, wäre mein ganzer schöner Baum hinfällig. Hab ich einfach irgendwo was übersehen oder wurde einfach vergessen, das zu definieren?
Und dann noch eine Frage zum Splitten:
Auf Folie I-113 wurde angegeben, daß nach dem Split-Vorgang das entstehende linke Blatt k* Elemente enthält, das rechte k* +1 Elemente. Auf der Folie I-112 wurden aber beim Splitten links k* +1 und recht k* Elemente eingefügt! Was ist denn nun richtig?



Re: P3 Zettel 3 2002-11-26 15:51
Felix
Achso, falls jemand vergleichen möchte, mein B-Baum sieht nach dem Einfügen aller Elemente so aus:
20 28 33 51 || 7 17 | 25 27 | 29 31 | 37 47 | 60 80 90

Der B*-Baum so:
20 29 47 || 7 17 | 25 27 | 31 37 |51 60 || 7 | 17 | 20 | 25 |27 |28 29 | 31 | 33 37 | 47 | 51 | 60 | 80 90

Re: P3 Zettel 3 2002-11-26 18:17
Slater
Noch ne Frage zu I-73: Was ist der Unterschied zwischen der ersten und der dritten Formel?
Es gibt keinen! [img]http://www.sternenvolk.de/symb/25.gif[/img]
Ach so, super. Sollte da eigentlich was anderes stehen, oder sinds nur zwei Formeln, die wichtig sind?
na das kann man sich ja wohl denken, was da stehen soll,
x e K(Pb): x>Kp

Re: P3 Zettel 3 2002-11-26 23:23
Elnino
Achso, falls jemand vergleichen möchte, mein B-Baum sieht nach dem Einfügen aller Elemente so aus:
20 28 33 51 || 7 17 | 25 27 | 29 31 | 37 47 | 60 80 90

Der B*-Baum so:
20 29 47 || 7 17 | 25 27 | 31 37 |51 60 || 7 | 17 | 20 | 25 |27 |28 29 | 31 | 33 37 | 47 | 51 | 60 | 80 90


Ähmm…also bei 3a) sieht mein Baum so aus:

29 || 17,25 | 51,80 || 7 | 20 | 27,28 | 31,33 | 60 | 90

oder meinste ne andere Aufgabe?


Re: P3 Zettel 3 2002-11-26 23:29
Slater
Ähmm…also bei 3a) sieht mein Baum so aus:
29 || 17,25 | 51,80 || 7 | 20 | 27,28 | 31,33 | 60 | 90
oder meinste ne andere Aufgabe?
man beachte, das für k=2 in einen knoten 4 elemente passen, da gibt es doch extra das applet wo man nur draufdrücken muss (und vorher k=2 einstellen..)


Re: P3 Zettel 3 2002-11-26 23:41
Fred
Ich sortiere jeden Pfad von einem Blatt bis zu der Wurzel per "BubbleSort" beginnend bei dem ("linksseitig" gesehenen) ersten Blatt.
Du gehst wirkich jeden Pfad von unten nach oben? Das kann man aber noch optimieren [img]http://www.sternenvolk.de/symb/17.gif[/img]


Re: P3 Zettel 3 2002-11-27 15:20
Felix
Fred:
Sicherlich nicht die schnellste Methode, allerdings finde ich die persönlich am elegantesten [img]http://www.sternenvolk.de/symb/17.gif[/img]

Mein B*-Baum war wohl falsch, der sieht mittlerweile so aus:

20 33 || 7 17 | 27 29 | 37 47 51 60 || 7 | 17 | 20 | 25 27 | 28 29 | 31 33 | 37 | 47 | 51 | 60 | 80 90

mit Wurzel als Blatt höchstens 2k* Einträge, und ansonsten beim Splitten nach Einfügen von "Key_x" erst Key_x zu dem passenden Blatt hinzufügen, danach Key_k* ermitteln und Blatt splitten.

Re: P3 Zettel 3 2002-11-29 02:01
TriPhoenix
20 33 || 7 17 | 27 29 | 37 47 51 60 || 7 | 17 | 20 | 25 27 | 28 29 | 31 33 | 37 | 47 | 51 | 60 | 80 90

Ich habe im Angebot:
29 ||
17 25 27 | 33 37 51 80 ||
7 17 | 20 25 | 27 28 | 29 | 31 33 | 37 | 47 51 | 60 80 | 90

oder auch:
+--+ /29\ /+--+\ / \ +------------------+ +-----------------------+ |17 | 25 | 27| |33 | 37 | 51 | 80| /-----|-------|----\ /----|------|-----|-----\ / | | \ / | | | \ +----+ +-----+ +-----+ +--+ +-----+ +--+ +-----+ +-----+ +--+ |7 17| |20 25| |27 28| |29| |31 33| |37| |47 51| |60 80| |90| +----+ +-----+ +-----+ +--+ +-----+ +--+ +-----+ +-----+ +--+
Will nicht nochmal wer sein B*-Baum-Ergebnis dazulegen?
Ich finde die Dinger sind wahnsinnig schlecht zu checken



Re: P3 Zettel 3 2002-11-29 02:44
Zaphod
/; ;\ __ \\____// /{_\_/ `'\____ \___ (o) (o } _____________________________/ :--' Muh! ,-,'`@@@@@@@@ @@@@@@ \_ `__\ ;:( @@@@@@@@@ @@@ \___(o'o) :: ) @@@@ @@@@@@ ,'@@( `====' :: : @@@@@: @@@@ `@@@: :: \ @@@@@: @@@@@@@) ( '@@@' ;; /\ /`, @@@@@@@@@\ :@@@@@) ::/ ) {_----------------: :~`,~~; ;;;; : : ; : ; ; : `'`' / : : : : : : )_ \__; ";" :_ ; \_\ `,',' :__\ \ * `,'* \ \ : \ * 8`;'* * `^' \ :/ `^' `-^-' \v/ : \/ Kei' Allohol is aoch keine Lösung…. *hicks*



Re: P3 Zettel 3 2002-11-29 02:45
Zaphod
hmm… ohne Zweizeiligkeit sieht das besser aus ;-)

Re: P3 Zettel 3 2002-11-29 09:43
Popcorn
Zaphi, das ist hier der P und nicht der Offtopic Bereich

:´¯ `·. .·´¯`: '·. •`·. .·´• .' `:--·´ `·--:´ ;´`; `·. ' ' .·´ ; ; ;`·-·´; (¯' '¯)

Re: P3 Zettel 3 2002-11-29 12:36
Spacelord
Ich habe im Angebot:
29 ||
17 25 27 | 33 37 51 80 ||
7 17 | 20 25 | 27 28 | 29 | 31 33 | 37 | 47 51 | 60 80 | 90

Meiner sieht bis auf die 28 genau so aus:
29 ||
17 25 27 | 33 37 51 80 ||
7 17 | 20 25 | 27 | 28 29 | 31 33 | 37 | 47 51 | 60 80 | 90

Re: P3 Zettel 3 2002-11-29 16:29
TriPhoenix
Das lässt, hoffen, dann checke ich nochmal genau, warum die 28 da bei mir steht :)

So, hab nochmal gecheckt, emine 28 war daneben gegangen, mein Ergebnis stimmt jetzt überein [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 Zettel 3 2002-11-30 17:04
Newbie
Servus,

wie sieht es in 3. b) mit dem Löschen aus dem B*-Baum aus? Das Skript ist diesbezüglich ja nicht sehr ergiebig, und in einem anderen Skript habe ich ein doch recht umfangreiches Manual zum Löschen und Handling gefunden, wenn nach dem Löschen in einem Blatt weniger als k* Schlüssel übrig sind (Stichworte Ausgleichen und Mischen).

Habt ihr da sowas berücksichtigt oder einfach nur "stumpf" die Schlüssel (bzw. das Blatt?) gelöscht?

Re: P3 Zettel 3 2002-11-30 17:45
Spacelord
Bei mir passiert ziemlich wenig beim Löschen (hatte unser ÜG-Leiter aber auch schon vorher angemerkt).
25 aus Blatt löschen, im Knoten drin lassen
20 aus Blatt löschen, Blatt wird gelöscht weils leer ist, 25 aus Knoten löschen

Re: P3 Zettel 3 2002-11-30 18:39
Fred
Wie hoch ist ein Baum, der nur aus einer Wurzel besteht? 1 oder 0?

Re: P3 Zettel 3 2002-11-30 18:42
Zaphod
0
steht im Skript beim Anfang der Bäume

Re: P3 Zettel 3 2002-11-30 18:43
Cyrax
Eigentlich 0 oder? In einem Binärbaum wäre es ja bspw. auch die 2^0, denn es gibt ja immer nur eine Wurzel. Gleiches bei 3^0, 4^0, n^0 = 1. Von daher würd ich sagen Höhe = 0. Oder liege ich falsch?

Re: P3 Zettel 3 2002-11-30 18:50
Slater
in einem binärbaum ist das so,

in m-wege-baum ist es aber 1, wenn die wurzel nicht leer ist,
vergleiche I-74, schranken für die höhe eines m-wege-suchbaums, I-81 für b-bäume (wahrscheinlich auch b*)

Re: P3 Zettel 3 2002-11-30 18:57
Spacelord
Wie ist Höhe definiert?
Ich würde h beim B-Baum und h* beim B*-Baum nehmen und die sind für einen Baum, der nur aus der Wurzel besteht 1 (Beispiel I-80). Höhe 0 wäre dann der leere Baum.

Re: P3 Zettel 3 2002-11-30 19:19
Fred
in einem binärbaum ist das so, in m-wege-baum ist es aber 1, wenn die wurzel nicht leer ist,
Kann ich mich da 100% drauf verlassen? Ich brauchs fuer die Implementation der getHeight() Methode des mWegeSuchbaums, da gebe ich einfach die maximale Pfadlaenge+1 zurueck.


Re: P3 Zettel 3 2002-11-30 19:25
Slater
na doll, 100% kann ich überhaupt nix sagen ;),
nur: ich bin davon überzeugt, dass die höhe eines nichtleeren m-baumes nach folie I-74 die untere schranke 1 hat,
so stehts da ja geschrieben..

Re: P3 Zettel 3 2002-11-30 21:42
Newbie
Wo wir schon bei Genauigkeit sind:
Auf Folie I-105 Seite 53 ist unter Punkt 4 ein "Blattknoten" genannt. Damit ist doch das Blatt selbst gemeint oder nicht? Weil in 2 wird wieder "nur" von Blättern geredet…

Ich bin verwirrt!

Re: P3 Zettel 3 2002-11-30 23:20
Fred
Wo wir schon bei Genauigkeit sind:
Auf Folie I-105 Seite 53 ist unter Punkt 4 ein "Blattknoten" genannt. Damit ist doch das Blatt selbst gemeint oder nicht? Weil in 2 wird wieder "nur" von Blättern geredet…
Ja das ist schon das gleiche, keine Sorge. Ein Blatt ist ja auch ein Knoten, also kann man auch Blattknoten sagen.


Re: P3 Zettel 3 2002-12-01 17:18
Slater
Will nicht nochmal wer sein B*-Baum-Ergebnis dazulegen?
Ich finde die Dinger sind wahnsinnig schlecht zu checken
me hat auch so


Re: P3 Zettel 3 2002-12-01 19:48
Fred
Denkt dran, heute 23:59 ist Abgabetermin - ich haette es fast verschlafen [img]http://www.sternenvolk.de/symb/2.gif[/img] und das kaeme natuerlich nicht so gut.

Re: P3 Zettel 3 2002-12-01 22:19
Newbie
Will nicht nochmal wer sein B*-Baum-Ergebnis dazulegen?
Ebenso :-)


Re: P3 Zettel 3 2002-12-06 13:20
Slater
ne frage in loser verbinung zum personenreader:

kann man eine eingelesene txt.datei mit stringtokenizer nach tabs trennen?,

bzw:
ich will ne excel-tabelle in java übernehmen,
wie mach ich das am geschicktesten?
(bisher meine idee: als tab-txt speichern (kann man anderes trennzeichen einstellen?)),
und dann so mühsam analog zum personenreader einlesen,

bin für alle java-bibliotheken offen ;)

Re: P3 Zettel 3 2002-12-06 13:42
TriPhoenix
kann man eine eingelesene txt.datei mit stringtokenizer nach tabs trennen?,

bzw:
ich will ne excel-tabelle in java übernehmen,
wie mach ich das am geschicktesten?
(bisher meine idee: als tab-txt speichern (kann man anderes trennzeichen einstellen?)),
und dann so mühsam analog zum personenreader einlesen,

Jap, das geht allerbestens so. Alternativ gibts noch das CSV-Format, das nimmt ; als Trennzeichen. So oder so denke ich bist du mit nem selbstgebastelten Reader am besten bedient, denn eine Library muss immer jeden beliebigen Fall aktzeptieren können und wäre demnach wohl entsprechend komplex zu bedienen.


Re: P3 Zettel 3 2002-12-06 13:45
Slater
W I E ?


(wie heisst der befehl, was ist das zeichen für tab ;) )

Re: P3 Zettel 3 2002-12-06 14:05
TriPhoenix
W I E ?


(wie heisst der befehl, was ist das zeichen für tab ;) )

[img]http://www.sternenvolk.de/symb/7.gif[/img]
String s = .....; StringTokenizer st = new StringTokenizer(s, "\t"); String s1 = st.nextToken(); ...
besser? [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 Zettel 3 2002-12-06 14:47
Slater
jo danke [img]http://www.sternenvolk.de/symb/22.gif[/img] \t also..