Leiden University LIACS
home    contact    webmail    blackboard    wiki
Home
Contact
Current Projects
SNP
DNAvis
Finished Projects
Publications
Posters
Presentations
Education
Links
Studies
Personal page
Search 

Algoritmiek 2008

Op deze pagina staat wat informatie over de werkgroep Algoritmiek, het practicum en de programmeeropgaven. Als er iets mist of onduidelijk is, laat het mij weten. Zie ook de pagina voor het vak zelf.
De pagina van het jaar 2007 is ook nog beschikbaar.

Practicum

Het skeletprogramma staat hier. Volg de volgende stappen om te beginnen.
  • Gebruik "tar -xzvf practicum.tgz" om het skeletprogramma uit te pakken.
  • Type "cd practicum".
  • Type "make" om het practicum te compileren.
  • Type "sh test.sh | less" om het practicum te draaien.
  • Gebruik de 'up' en 'down' pijltjestoetsen om te scrollen en 'q' om te stoppen.
De opgaven staan hier. Bewerk "boom.cc" om de opgaven in het practicum te verwerken. In dit bestand staat duidelijk aangegeven van waar tot waar aanpassingen gemaakt dienen te worden.

Voor het 2e gedeelte van het practicum moet:
  • "sh zoek.sh | less"
gebruikt worden.

De liefhebbers kunnen ook zelf bomen maken om uit te proberen. Let er wel op dat de bomen niet hoger mogen zijn dan 6 en dat de invoer een geldige preordewandeling van een boom moet zijn. Het getal '0' is gereserveerd voor het aangeven van een NULL pointer.
De preordestring "a00" geeft dus een boom met 'a' als wortel en geen kinderen. De string "a0b00" geeft een boom met 'a' als wortel en 'b' als rechterkind.

De uitwerkingen zijn hier te vinden, als alles goed is, dan moet het programma een uitvoer hebben die sterk hierop lijkt. De uitvoer van het testprogramma voor de zoekbomen moet hierop lijken.

Programmeeropgave 1

De opgave is hier te vinden. Het inleveren moet zowel electronisch als op papier gebeuren.
De papieren versie van het verslag met de code als bijlage kan in de daarvoor bestemde doos (met het opschrift algoritmiek) in de postkamer (kamer 156, 1e verdieping). De deadline is 28 maart.

Werkcolleges: Aangezien dit een redelijk uigebreide opgave is, verdient het aanbeveling om het een en ander gestructureerd aan te pakken. Daarom zullen we in het eerste werkcollege de nadruk leggen op de volgende punten:
  • Het inlezen van een graaf en het implementeren van een geschikte klasse.
  • Het omzetten van een bord naar een graaf.
  • Het schrijven van debug-functies die een representatie van de graaf en een labeling afdrukken.
  • Het implementeren van een klasse voor de opslag van de bereikbare toestanden.
  • Het inlezen van een labeling (nodig voor het 2e gedeelte van de opdracht).
  • Het invoeren van een zet en het spelen van het spel tot de gebruiker wil stoppen.
Hier onder staat een tabel met invoer en mogelijke uitvoer.

InvoerUitvoer
2x2 (1)2x2 (1)
2x2 (2)2x2 (2)
2x2 (3)2x2 (3)
2x32x3
3x3-1 (1)3x3-1 (1)
3x3-1 (2)3x3-1 (2)
3x33x3

Bij de eerste 4 tests wordt de lijst met bereikbare toestanden ook afgedrukt, dit is alleen ter controle. Het is niet nodig om dit zelf te doen.

Cijfers opgave 1:
Naam Cijfer
Blankevoort / Zomervrucht9
de Bruijn 7.5
van den Broek 9
Dal 7.5
Everts 7.5
Feenstra 7
Heisterkamp / de Ruiter -
Keizer / Vietor 9
Kortsmit / Rijk 10
ter Laak 7.5
Lo *
van Luik v
Nieuwenhuijsen *
Mus v
van Nieuwenburg 8.5
Rot / van der Weiden v

* : Nog niet volledig ingeleverd.
- : Onvoldoende en moet nog aanvullende werkzaamheden verrichten.
v : Goedgekeurd.

Hier staat een werkende implementatie, deze is gebruikt bij het nakijken.

Programmeeropgave 2

De opgave is hier te vinden. Het inleveren moet zowel electronisch als op papier gebeuren.
De papieren versie van het verslag met de code als bijlage kan in de daarvoor bestemde doos (met het opschrift algoritmiek) in de postkamer (kamer 156, 1e verdieping). De deadline is 25 april.

Werkcolleges: Het bestandsformaat is als volgt:
  • Regel 1: Het aantal bellers (n).
  • Regel 2: De optie (1 of 2).
  • Regel 3 - (n + 3): Voor optie 1: n regels met per regel:
    • Het aantal roddels dat deze beller kent.
    • De lijst met roddels.
  • Regel 3 - (n + 3): Voor optie 2: n regels met per regel:
    • Het aantal mensen waar deze beller een hekel aan heeft.
    • De lijst met mensen waar deze beller een hekel aan heeft.
Neem aan dat bij optie 2 de hekel wederzijds is. De invoer zal dus symmetrisch zijn; als op de regel corresponderend met beller x een y staat, dan staat op de regel corresponderend met beller y ook een x.

Nu volgt een tabel met invoer en mogelijke uitvoer voor optie 1 van het programma.

InvoerUitvoer
4 (1)4 (1)
4 (2)4 (2)
4 (3)4 (3)
5 (1)5 (1)
5 (2)5 (2)

En hier een tabel met invoer en mogelijke uitvoer voor optie 2 van het programma.

InvoerUitvoer
4 (1)4 (1)
4 (2)4 (2)
5 (1)5 (1)
5 (2)5 (2)
77

Cijfers opgave 2:
Naam Cijfer
Blankevoort 8
de Bruijn 9
van den Broek / Lo 9
Dal 8.5
Everts 7
Feenstra 9
Heisterkamp / de Ruiter *
Keizer / Vietor 8.5
Kortsmit / Rijk 9.5
ter Laak 9
van Luik v
Mus 6
van Nieuwenburg 9
Rot / van der Weiden 7
Zomervrucht 9.5

* : Nog niet volledig ingeleverd.
- : Onvoldoende en moet nog aanvullende werkzaamheden verrichten.
v : Goedgekeurd.

En voor de aardigheid een tabel met wat scores voor dit invoerbestand (/usr/bin/time -f %U ./executable < invoer).

Naam Tijd (in seconden)
ter Laak 0.00
van den Broek / Lo 0.11
Zomervrucht 0.12
Keizer / Vietor 0.20
de Bruijn 0.23
Mus 0.39
Kortsmit / Rijk 1.83
Blankevoort 4.18
Dal 32.10
van Nieuwenburg 45.56
Feenstra 55.95
Rot / van der Weiden 513.49
Everts &
Heisterkamp / de Ruiter *
van Luik &

* : Nog niet volledig ingeleverd.
- : Geen werkend programma.
& : Erg lang.

Hier staat een werkende implementatie, deze is gebruikt bij het nakijken.

Programmeeropgave 3

De opgave is hier te vinden. Het inleveren moet zowel electronisch als op papier gebeuren.
De papieren versie van het verslag met de code als bijlage kan in de daarvoor bestemde doos (met het opschrift algoritmiek) in de postkamer (kamer 156, 1e verdieping). De deadline is 19 mei.

Werkcolleges: We geven nu een tabel met mogelijke invoer en mogelijke uitvoer, de opbouw van het invoerbestand is als volgt:
  • Regel 1: De optie (0 of 1):
    • 0: Gebruik de bottum up zoekmethode.
    • 1: Gebruik de top down zoekmethode.
  • Regel 2: Het aantal testgevallen n.
  • Regel i + 3: Strings van testgeval i (0 ≤ i < n).
Bottom up
Top down
InvoerUitvoer InvoerUitvoer
invoer 1.1 uitvoer 1.1 invoer 1.2 uitvoer 1.2
invoer 2.1 uitvoer 2.1 invoer 2.2 uitvoer 2.2
invoer 3.1 uitvoer 3.1 invoer 3.2 uitvoer 3.2
invoer 4.1 uitvoer 4.1 invoer 4.2 uitvoer 4.2

Let er op dat bij de uitvoer de lengte van de langste gemeenschappelijke deelrij wel vast staat, maar dat de langste gemeenschappelijke deelrij zelf nagenoeg nooit uniek is.

Cijfers opgave 3:
Naam Cijfer
Blankevoort v
de Bruijn *
van den Broek / Lo 9
Dal 9.5
Everts 9
Feenstra 9
Heisterkamp / de Ruiter *
Keizer / Vietor 7.5
Kortsmit / Rijk 9
ter Laak 9
van Luik 9.5
Mus 8.5
van Nieuwenburg 8.5
Rot / van der Weiden -
Zomervrucht 10

* : Nog niet volledig ingeleverd.
- : Onvoldoende en moet nog aanvullende werkzaamheden verrichten.
v : Goedgekeurd.

Hier staat een werkende implementatie, deze is gebruikt bij het nakijken.
previous page go to top
Last edited by: Jeroen Laros with /usr/bin/vim