Triple Eye Industrieel Ingenieur Informatica Algemeen Intranet Derde jaar Algoritmen Algoritmen
AlgoI (09-10): reeks 16

Algoritmen I (2009-2010)

reeks 16: minimaal overspannende boom

Gegeven:

  • graaf.h: klasse voor gerichte en ongerichte grafen
  • ggraaf.h: afgeleide klasse voor gewogen grafen
  • graaftest.cpp: testcode
  • Een voorbeeldgraaf.

    1. Op papier

    Zoek op papier een Minimaal Overspannende Boom (MOB) voor de gegeven gewogen ongerichte ijle graaf met de methode van Prim. Wat is het totaal gewicht?

    2. Op de computer

    Implementeer een algoritmeklasse die MOB berekent van een gegeven GewogenGraaf<ONGERICHT>.

    Met algoritmeklasse wordt een klasse bedoeld die een algoritme kan uitvoeren, en waarvan de resultaten opgeslagen worden in attributen van de klasse, zodat ze achteraf opgevraagd kunnen worden. Uiteraard moet de graaf als parameter meegegeven worden, bv. aan de constructor of aan een lidfunctie.

    In dit geval moet achteraf het totale gewicht van de MOB en de "ouder" van elke knoop opgevraagd kunnen worden.

    Het algoritme maakt gebruik van een prioriteitswachtrij waarvan de prioriteiten aanpasbaar zijn. Omdat dit niet zo eenvoudig is gebruiken we een truc: voeg een knoop meerdere keren toe indien zijn prioriteit gewijzigd wordt (en negeer de duplicaten...)
    Maak gebruik van std::priority_queue, en een hulpklasse die een knoopnummer bijhoudt met geassocieerde prioriteit (implementeer de operator<)


  • R. Stoop 22/03/2010

    Welkom | Hogeschool Gent | INWE | Studentenserver | Docentenserver | Intranet