Discrete Wiskunde en Programmeren, najaar 2003

Discrete Wiskunde en Programmeren, najaar 2003


Dit is een nieuw, verplicht, vak in het tweede jaar van de wiskundeopleiding. zie ook de beschrijving van het vak in de studiegids wiskunde.

Voor de kwartalen 5 en 6 (het derde semester) ziet het rooster er zo uit:


Aanvang: woensdag 3 september 2003
College:
Plaats: CK N6/TK 8
Dag en Tijd: woensdag, 13:45 - 15:30


Het eerste huiswerk (inleveren uiterlijk 12 september) bestaat uit het lezen van Hoofdstuk 1 van het boek (van Johnsonbaugh) en het maken van de volgende opgaven (let op: dit zijn opgaven uit de lijst van Exercises na elke sectie van het boek, niet van de `Section Review Exercises' die daaraan vooraf gaan):


De tweede collectie huiswerkopgaven moet uiterlijk 3 oktober ingeleverd worden en bestaat uit de volgende opgaven:


De onderstaande opgaven dienen met magma te worden gemaakt. Inleveren uiterlijk 31 oktober.
  1. Opwarmertje.
    Een natuurlijk getal N is een driehoeksgetal wanneer je het kunt verkrijgen als het aantal punten in een driehoekje dat ontstaat door op de eerste rij 1 punt te plaatsen, op de tweede rij 2, enzovoorts.
    1. Maak in magma op drie verschillende wijzen de verzameling van alle driehoeksgetallen onder de 500.
    2. Maak in magma op twee manieren de verzameling van getallen n onder de 500 waarvoor n^2 - 1 een produkt van twee priemgetallen is.
    3. Bepaal of de doorsnede van de in onderdelen a en b genoemde verzamelingen leeg is of niet.
  2. IsPrime(n) is een functie in magma die kan bepalen of een getal n een priemgetal is. Hiermee is de verzameling van alle priemgetallen die kleiner zijn dan 1000 te maken. Bijvoorbeeld:

        P := { p : p in [1..1000] | IsPrime(p) };

    1. Maak in magma de verzameling van alle priemgetallen die kleiner zijn dan 1000 door de Zeef van Eratosthenes te gebruiken. (Hint: zie opgave 82 blz 63.)
    2. Implementeer in magma een functie die gegeven een grens N alle priemgetallen kleiner dan N geeft (met de Zeef).
  3. In hoofdstuk 3 paragraaf 3 wordt het Euclidische algoritme gegeven. Vorig jaar is behandeld dat er een uitgebreid Euclidisch algoritme is dat bij geven gehele getallen a en b, ook gehele getallen s en t vindt zodat

        s·a + t·b = ggd(a,b).

    Implementeer het uitgebreide Euclidische algoritme in magma.
  4. De machtsverzameling (oftewel powerset) van een verzameling U is de collectie van alle deelverzamelingen van U. Voorbeeld: als U = {1,2,3} dan is

        { {}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} }

    de machtsverzameling van U.
    1. Implementeer in magma een functie die met behulp van recursie de machtsverzameling van een gegeven verzameling geeft. Noem deze functie rpowerset.
    2. Implementeer in magma een functie die ZONDER recursie de machtsverzameling van een gegeven verzameling geeft. Noem deze functie ipowerset. (i staat voor inductief.)
  5. Bekijk de verzameling W van strings die alleen maar bestaan uit de karakters "a" en "b". (Merk op dat de ``lege'' string "" ook in W zit.) De verzameling W heeft met de operatie concatenatie een structuur die lijkt op die van een groep:
    1. Voor ieder element w uit W geldt

          w cat "" = "" cat w = w.

    2. Als u en v in W dan geldt

          u cat v

      in W.
    Het enige dat je niet kunt is een inverse van een string nemen in W. (Dat wil zeggen: niet voor elk element u uit W bestaat er een v uit W zodat u cat v = v cat u = "".) We gaan nu "aa" als de `inverse' van "b" nemen. Als een element w van W ergens de substring "aab" of "baa" heeft dan mogen we die weglaten. Laat bijvoorbeeld w = "aaababbba" dan mogen we herschrijven w = "bba". We zeggen dat w van normaalvorm is als in w de substring "aab" en "baa" niet voorkomen.
    1. Implementeer in magma een functie die van een gegeven string w uit W de normaalvorm geeft.
    2. Implementeer in magma een functie die een rechtsinverse van een string uit W geeft als we "aa" zien als de inverse van "b".


De huiswerkopgaven bij Hoofdstuk 4 moeten uiterlijk 31 oktober ingeleverd worden. Het zijn Bovendien zijn er drie programmeeropdrachten bij dit Hoofdstuk: Uitdaging:


Huiswerkopgaven over Hoofdstuk 6 (eerste deel, bij het college van 29 oktober) moeten uiterlijk 14 november worden ingeleverd. Het gaat om:


De opdracht voor het practicum programmeren in Magma op 5 november luidde (opzettelijk heel vaag): `Schrijf een Magma-programma om een Eulercircuit in een graph te vinden'.
Huiswerkopgaven over Hoofdstuk 6 (tweede deel, bij het college van 12 november) moeten uiterlijk 5 december worden ingeleverd. Het gaat om:
De opdracht voor het practicum op 19 november luidt:
Huiswerkopgaven over Hoofdstuk 6 (derde deel, bij het college van 26 november) moeten uiterlijk 19 december worden ingeleverd. Het zijn:
[home] [back]
Last update: 5 november 2003