Kruskals algoritme
Kruskals algoritme is een algoritme uit de grafentheorie om de minimaal opspannende boom te vinden voor gewogen grafen. Hierbij zoeken we een deelverzameling van bogen die een boom vormen die alle knopen bevat, waarbij daarenboven het totale gewicht minimaal is. Als de graaf niet volledig verbonden is dan zoekt het een minimaal opspannend woud (een minimale overspannende boom voor elke onverbonden deelgraaf). Kruskals algoritme, beschreven in 1956[1] is een voorbeeld van een gulzig algoritme.
Het algoritme kan als volgt geformuleerd worden (G is de gegeven graaf):
"Voer de volgende stap zo vaak uit als mogelijk: Kies uit de bogen van G die nog niet werden gekozen, de kortste boog die geen kring vormt met de bogen die reeds werden gekozen."
Met "kortste boog" bedoelt men de boog met het kleinste gewicht. Als er geen kandidaten meer overblijven vormen de geselecteerde bogen de minimaal opspannende boom.
Voorbeeld
[bewerken | brontekst bewerken]Merk op dat de gekozen bogen tijdens het verloop van het algoritme niet altijd een boom vormen maar een "woud" van niet-verbonden bomen. Maar aan het einde zal er wel een boom overblijven. Wanneer er meerdere kandidaat-bogen met hetzelfde gewicht zijn, moet men er een kiezen en bij een andere keuze kan men een andere minimaal opspannende boom bekomen. Enkel wanneer alle bogen een verschillend gewicht hebben, is er een unieke minimaal opspannende boom.
Zie ook
[bewerken | brontekst bewerken]Andere algoritmes voor dit probleem zijn Prims algoritme, het Reverse-Delete-algoritme en Borůvka's algoritme.
- ↑ Joseph B. Kruskal, Jr. (1956). On the shortest spanning subtree of a graph and the traveling salesman problem. Proceedings of the American Mathematical Society 7 (1): 48-50. DOI: 10.1090/S0002-9939-1956-0078686-7.