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<)