[GS] Portfolio 2de zittijd

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

Heatryn
Posts: 62

[GS] Portfolio 2de zittijd

Post#1 » Thu Aug 30, 2007 5:41 pm

Code: Select all

1.	Implementeer het ADT tabel met behulp van een 2-3 boom. Volgende operaties dienen voorzien te worden:

a. Creëer een lege tabel.
b. Wis een tabel.
c. Voeg een nieuw element aan de tabel toe.
d. Verwijder een element.
e. Doorloop de elementen van de tabel, gesorteerd volgens search key, en geef de inhoud weer.

2. Zorg voor een uitgebreide test waarin wordt aangetoond dat voor alle operaties alle mogelijke gevallen behandeld worden zoals voorzien. Denk bv. aan insert in een blad waar nog plaats is, insert in een blad dat een “split” tot gevolg heeft, “split” van een interne knoop, “split” van de root, …

3. Schrijf een tweede implementatie voor het ADT tabel, dit maal gebaseerd op hashing. Maak gebruik van seperate chaining om collisions op te vangen. Om de items op te vangen, worden er 2-3 bomen gebruikt. Zorg voor een dynamische allocatie van de hash table: van zodra er een 2-3 boom van hoogte 4 voorkomt, moet de grootte van de hash table vergroot worden tot het eerste priemgetal groter dan 2 * tableSize.

4. Voorzie ook voor deze tweede implementatie een uitgebreide test.
Die eerste opdracht heb ik al gemaakt, nu is mijn vraag over de tweede, want ik versta de opgave niet zo goed.

Ik maak dus een array aan (hashtable) waarvan elk element een 2-3 boom is. als ik dan een element wil toevoegen, dan bereken ik eerst volgens de zoeksleutel de plaats in mijn hashtabel en als dan voeg ik gewoon dat element op die plaats toe aan mijn 2-3 boom. van zodra er dan een boom in mijn hashtabel voorkomt met grootte >= 4 dan moet ik dus mijn hashtabel gaan vergroten, dus geowon mijn array langer maken. Nu was mijn vraag, hoe groot zou ik mijn hashtabel maken als ik start en als ik mijn hashtabel vergroot dan gaat mijn hash calculator toch een andere waarde geven voor de element die ik er dan op dat moment al heb insteken, dus die ga ik dan nooit meer terugvinden toch?

User avatar
Shinta
WOZ
Posts: 1122

Post#2 » Fri Aug 31, 2007 4:28 pm

Hey heathryn, ik heb eens nagedacht over je vraag maar kan slechts gedeeltelijk antwoorden.

Die eerste opdracht heb ik al gemaakt, nu is mijn vraag over de tweede, want ik versta de opgave niet zo goed. Als je start kan je in theorie elk priemgetal nemen, maar ik denk dat je het mooiste resultaat en de beste testresultaten zult bekomen als je een array maakt met als grootte het kleinste priemgetal, namelijk 1, zo zie je duidelijk hoe de grootte van je array wijzigt.

Op de tweede vraag is geen sluitend antwoord. Het is op deze manier eenvoudig om elementen toe te voegen (aangenomen dat je als hashfunctie KEY mod LENGTETABEL gebruikt), maar voor het zoeken van elementen zou eigenlijk heel de tabel sequentieel doorlopen moeten worden. Een alternatieve manier zou zijn om per entry in de hashtabel een record te maken van je 2-3 boom en een pointer naar de locatie waar de hashfunctie voor de vergroting naar zou hebben gewezen zodat je eerst de op de locatie van de vroegere elementen zoekt en dan pas zoekt in de 2-3 boom van de huidige hashtabel met de nieuwe grootte. Indien deze aanpak je aanspreekt laat je maar iets weten en dan leg ik het verder uit.

Echter, deze aanpak lijkt me te omslachtig voor de opgave en het lijkt me zelfs dat hier niet over nagedacht is geweest door Patricia, want je kan niet zomaar je tabel vergroten, daarom zou ik met je tweede vraag naar Patricia/Els Laenens gaan.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

Heatryn
Posts: 62

Post#3 » Fri Aug 31, 2007 10:29 pm

Het probleem is dat ik al heb gemaild naar Patricia Geerts, alsook heb gebeld naar haar kantoor, maar ze neemt niet op, noch reactie op mijn mail. Nu, ik moet morgen die opdracht al eens insturen voor 20u. Ik moet ze wel pas komen voorstellen volgende week dinsdag, dus nog even tijd. Maar het lijkt me inderdaad zo wel dat ze daar een paar dingen over het hoofd heeft gezien.

Ik had het opgelost op de volgende manier: als ik mijn tabel vergroot, dan maak ik een nieuwe tabel aan en dan ga ik de oude tabel af, entry per entry en dan ga ik in elke entry kijken naar alle zoeksleutels, en deze 1 voor 1 terug invoegen in de hash tabel. Nu, dat gaat wel veel tijd kosten als je met enorme tabellen zit. Dus daar zitten we wel met een probleem. Maar uiteraard gaat de efficientie van het ophalen van een element voor op de efficientie van het toevoegen. Nog een vraag dan:

Hoe ga ik na dat er een tabel is van hoogte > 3. Ik kan misschien per tabel een variabele bijhouden die wordt geïncrementeerd van zodra ik een nieuwe root aanmaak en die wordt verkleind van zodra ik een root verwijder?

Toch een opdracht waar meerdere opinies over bestaan.

User avatar
Shinta
WOZ
Posts: 1122

Post#4 » Fri Aug 31, 2007 11:20 pm

Heatryn wrote:Het probleem is dat ik al heb gemaild naar Patricia Geerts, alsook heb gebeld naar haar kantoor, maar ze neemt niet op, noch reactie op mijn mail. Nu, ik moet morgen die opdracht al eens insturen voor 20u. Ik moet ze wel pas komen voorstellen volgende week dinsdag, dus nog even tijd. Maar het lijkt me inderdaad zo wel dat ze daar een paar dingen over het hoofd heeft gezien.

Ik had het opgelost op de volgende manier: als ik mijn tabel vergroot, dan maak ik een nieuwe tabel aan en dan ga ik de oude tabel af, entry per entry en dan ga ik in elke entry kijken naar alle zoeksleutels, en deze 1 voor 1 terug invoegen in de hash tabel. Nu, dat gaat wel veel tijd kosten als je met enorme tabellen zit. Dus daar zitten we wel met een probleem. Maar uiteraard gaat de efficientie van het ophalen van een element voor op de efficientie van het toevoegen. Nog een vraag dan:

Hoe ga ik na dat er een tabel is van hoogte > 3. Ik kan misschien per tabel een variabele bijhouden die wordt geïncrementeerd van zodra ik een nieuwe root aanmaak en die wordt verkleind van zodra ik een root verwijder?

Toch een opdracht waar meerdere opinies over bestaan.
Je tabel heeft geen maximale hoogte he, het is je boom dat een maximale hoogte heeft :). Je maakt gewoon in je ADT 2-3 boom een methode calculateheight of dergelijke.

Probeer ook els laenens te contacteren.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

Heatryn
Posts: 62

Post#5 » Sat Sep 01, 2007 1:07 pm

Zou ik daar naar mogen bellen? Of is dat niet echt beleefd?

User avatar
Shinta
WOZ
Posts: 1122

Post#6 » Sat Sep 01, 2007 1:30 pm

Heatryn wrote:Zou ik daar naar mogen bellen? Of is dat niet echt beleefd?
Euh mja, probeer het eens he, tis vrij dringend dus :d
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

Heatryn
Posts: 62

Post#7 » Sat Sep 01, 2007 2:28 pm

Gebeld, gemaild... geen van beide geeft antwoord. Ik ga het daarom op de volgende manier implementeren:

Van zodra m'n tabel moet vergroot worden, dan maak ik een tabel met eerste priemgetal groter dan 2*tabelsize aan. En dan ga ik de oude tabel entry per entry af en dan voeg ik al die elementen gewoon terug toe. Nu dan zal ik voor m'n 2-3 boom een extra operatie moeten schrijven namelijk gewoon de root weghalen (verwijderen) en deze in de andere steken. Deze operatie zit echter niet in de standaard dat ik moest schrijven voor patricia. Dus ik vrees inderdaad dat dit niet gaat mogen. Maar een andere oplossing zie ik echter niet!

User avatar
Shinta
WOZ
Posts: 1122

Post#8 » Sat Sep 01, 2007 11:44 pm

Heatryn wrote:Gebeld, gemaild... geen van beide geeft antwoord. Ik ga het daarom op de volgende manier implementeren:

Van zodra m'n tabel moet vergroot worden, dan maak ik een tabel met eerste priemgetal groter dan 2*tabelsize aan. En dan ga ik de oude tabel entry per entry af en dan voeg ik al die elementen gewoon terug toe. Nu dan zal ik voor m'n 2-3 boom een extra operatie moeten schrijven namelijk gewoon de root weghalen (verwijderen) en deze in de andere steken. Deze operatie zit echter niet in de standaard dat ik moest schrijven voor patricia. Dus ik vrees inderdaad dat dit niet gaat mogen. Maar een andere oplossing zie ik echter niet!
mja mja :p laten we hopen op het beste he ;)
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
Robbe
WOZ
Posts: 2161
Contact:

Post#9 » Sun Sep 02, 2007 1:52 am

Heatryn wrote:Deze operatie zit echter niet in de standaard dat ik moest schrijven voor patricia. Dus ik vrees inderdaad dat dit niet gaat mogen. Maar een andere oplossing zie ik echter niet!
Ik denk dat als je de operaties hebt die ze gevraagd heeft en de extra operatie echt wel een nut heeft in het ADT Tabel, dat het niet al te veel uitmaakt wat je extra implementeert.

en @Kristof: het kleinste priemgetal is NIET 1, maar 2. Shame on you! :P
"I'm not afraid of falling, I'm afraid of landing" -- Sam
How To Ask Questions The Smart Way

Zingen? UKA-n dat ook!

User avatar
Shinta
WOZ
Posts: 1122

Post#10 » Sun Sep 02, 2007 11:40 am

Robbe wrote:
Heatryn wrote:Deze operatie zit echter niet in de standaard dat ik moest schrijven voor patricia. Dus ik vrees inderdaad dat dit niet gaat mogen. Maar een andere oplossing zie ik echter niet!
Ik denk dat als je de operaties hebt die ze gevraagd heeft en de extra operatie echt wel een nut heeft in het ADT Tabel, dat het niet al te veel uitmaakt wat je extra implementeert.

en @Kristof: het kleinste priemgetal is NIET 1, maar 2. Shame on you! :P
Das een eeuwenoude discussie en ik vind da 1 een priemgetal is aangezien het alleen deelbaar is door 1 en zichzelf.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
Nick
Prosenior
Posts: 1850
Contact:

Post#11 » Sun Sep 02, 2007 1:33 pm

Shinta wrote:Das een eeuwenoude discussie en ik vind da 1 een priemgetal is aangezien het alleen deelbaar is door 1 en zichzelf.
Mja ik vind ook dat actie met een k mag geschreve worde, maar het is nog steeds fout :P
To Woef or not to Woef, that is the question!

WINAK Scriptor 2006-2007
WINAK Vice-Praeses 2007-2008
WINAK Praeses 2008-2009
WINAK Cantor 2009-2010
... en kortom: Eeuwig WINAKer 8)

Joycie!
WOZ
Posts: 176

Post#12 » Sun Sep 02, 2007 2:14 pm

priem·ge·tal (het ~)
1 [wisk.] getal dat alleen door de eenheid en door zichzelf deelbaar is

User avatar
Nick
Prosenior
Posts: 1850
Contact:

Post#13 » Sun Sep 02, 2007 2:40 pm

Joycie! wrote:priem·ge·tal (het ~)
1 [wisk.] getal dat alleen door de eenheid en door zichzelf deelbaar is
wilde daar nu mee zegge dat 1 wel een priemgetal is of ni? :P
To Woef or not to Woef, that is the question!

WINAK Scriptor 2006-2007
WINAK Vice-Praeses 2007-2008
WINAK Praeses 2008-2009
WINAK Cantor 2009-2010
... en kortom: Eeuwig WINAKer 8)

User avatar
Evitje
WOZ
Posts: 640

Post#14 » Sun Sep 02, 2007 5:25 pm

dat is dus inderdaad een eeuwenoude discussie :)
Men moet niet steeds dezelfde fout maken; er is keus genoeg

Joycie!
WOZ
Posts: 176

Post#15 » Sun Sep 02, 2007 5:40 pm

moet juist deelbaar zijn door 2 getallen,
bij 1 is dit enkel 1 (zichzelf zijnde ook 1)
--> 1 is geen priemgetal

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 52 guests