PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was bedeutet "allokieren"?


Gast0816
2005-06-15, 19:56:24
hallo, wir sollen in unserer übung "eine neue Hash-Tabelle allokieren". (ist eine dynamisch hashtabelle, die sich aber einer bestimmten groesse vergroessert).
ich frage mich allerdings, was das wort allokieren bedeutet. habe das in keinem woerterbuch gefunden.

danke für jede hilfe

ethrandil
2005-06-15, 19:58:20
Da wartest du lieber auf die Cracks, aaaaber...

es heißt so viel wie 'Speicher reservieren' wenn du mich fragst :)

- Eth

Aqualon
2005-06-15, 20:31:49
http://pronix.linuxdelta.de/C/standard_C/c_programmierung_17.shtml

Da geht es um dynamische Speicherverwaltung in C, wenn du dich für eine tiefergehende Erklärung interessierst.

Hash-Tabelle allokieren bedeutet wahrscheinlich, dass du zum vergrößern eine neue Hash-Tabelle anlegst und die Daten der alten reinkopierst. Aber genaueres kann man dir ohne Kenntnis der Aufgabenstellung nicht sagen. Um welche Programmiersprache gehts denn eigentlich?

Aqua

Gast
2005-06-15, 20:45:37
es geht um java. so sieht die aufgabe aus


Folgende zusätzliche Anforderungen vertiefen die Aufgabe:

Implementieren Sie ein dynamisches Hash-Verfahren, bei dem die Größe der Hash-Tabelle mit der Anzahl der Einträge wächst. Gehen Sie dabei wie folgt vor:

1. Initial hat Ihre Hash-Tabelle die Größe n.
2. Zählen Sie mit wieviele Einträge Ihre Hash-Tabelle hat (etwa c).
3. Dieser Zähler erhöht sich mit jedem Eintrag und verringert sich mit jedem Löschvorgang.
4. Sobald Ihre Hash-Tabelle einen gewissen Füllgrad (r, zum Beispiel 0,75) überschreitet (c/n > r), vergrößern Sie Ihre Hash-Tabelle.
5. Dazu allokieren Sie eine neue Hash-Tabelle der Größe 2*n+1 und übertragen alle Einträge aus der alten Hash-Tabelle in die neue. Beachten Sie dabei, dass Sie mit der neuen Größe der Hash-Tabelle auch eine neue Hash-Funktion bekommen (n hat sich verändert). Das heißt, die Einträge landen in der neuen Hash-Tabelle nicht an der selben Position wie in der alten.
6. Ein Verkleinern der Hash-Tabelle ist nicht nötig, auch wenn entsprechend viele Einträge gelöscht wurden.

Demirug
2005-06-15, 20:51:54
Ja, allokieren bedeutet in diesem Zusammenhang einfach das entsprechenden Objekt (Hash-Tabelle) anzulegen.

Gast
2005-06-15, 21:43:39
sowas sollte doch im prinzip ganz einfach sein ... oder?
wie überträgt man denn die alten werte in der alten hashtabelle in die neue? muss man da was beachten?

Aqualon
2005-06-15, 22:29:01
Habt ihr da selber eine Hashtabelle geschrieben, oder die normale hashtable aus Java genommen?

Auf jedenfall solltet ihr eine set und eine get-funktion haben. Du kannst dann einfach mit get jeden Eintrag der alten Hashtabelle auslesen und per set in die neue einfügen.

Aqua

zeckensack
2005-06-15, 23:51:30
Ist ein Anglizismus. "Allocate" (http://www.infoplease.com/ipd/A0313302.html) bedeutet einfach nur "zuteilen", und im Programmierkontext eigentlich immer "reservieren".

"Allokieren" ist so weit ich das überblicken kann kein deutsches Wort.

muhkuh_rs
2005-06-16, 15:42:30
Das deutsche Wort dafür ist alloziieren.

Coda
2005-06-16, 19:55:35
Oder einfach reservieren, warum umständlich... :rolleyes:

Unser Info Dozent übersetzt Heap mit "Halde". Das finde ich hingegen recht bescheuert :D

Demirug
2005-06-16, 19:59:44
Oder einfach reservieren, warum umständlich... :rolleyes:

Unser Info Dozent übersetzt Heap mit "Halde". Das finde ich hingegen recht bescheuert :D

Ist aber üblich wenn man es eindeutscht. Und der Stack ist der Kellerspeicher.

patrese993
2005-06-16, 20:41:37
allocated disk space beispielsweise sollte jedem bekannt sein.

Xmas
2005-06-17, 20:30:31
Das deutsche Wort dafür ist alloziieren.
Nein, allozieren (http://faql.de/fremdwort.html#allocate)

CannedCaptain
2005-06-23, 23:40:50
Irre ich mich oder sind generische Klassen in Java nicht eh dynamisch? Sprich der Hash verwaltet seine größe selber?

Aqualon
2005-06-24, 22:42:02
Irre ich mich oder sind generische Klassen in Java nicht eh dynamisch? Sprich der Hash verwaltet seine größe selber?
Macht er, aber die Aufgabe klingt eher danach, den Hash selbst nachzuprogrammieren (oder es ist eine typische Uniaufgabe mit wenig Praxisbezug ;-)).

Aqua

HellHorse
2005-06-25, 01:09:13
(oder es ist eine typische Uniaufgabe mit wenig Praxisbezug ;-))
So scheint es auf den ersten Blick.
Allerdings bilden Hashtables da IMHO eine Ausnahme, denn man kann dabei wirklich einiges "für's Leben" lernen:

Warum eine Hashfunktion eine gute Verteilung haben sollte.
Warum wenn man #equals überschreibt auch #hashCode überschreiben soll, so dass falls #equals für zwei Objekte true zurück gibt, auch deren Hashwert gleich sein sollte.
Warum #hashCode über die Lebenszeit stabil sein sollte.
Warum sich die beiden vorherigen Forderungen bei veränderlichen Objekten kaum realisieren lassen und es trotzdem Sinn machen kann #equals und #hashCode zu überschreiben.
Und letztendlich lernt man, warum es eine verdammt gute Idee ist, dass Strings in Java immutable sind.

Lernziel: man macht einen grossen Bogen um #equals uns #hashCode