Datastructuren en algoritmen
Voor sorteren op parallelle hardware zoals GPU's worden soms sorteermethoden met een vaste reeks vergelijk-en-verwisselstappen (sorteernetwerken) gebruikt, zoals bitonic sort. Waarom?
- AZe doen O(n) vergelijkingen, minder dan de ondergrens O(n log n) voor sorteren op basis van vergelijkingen
- BHet zijn stabiele sorteermethoden die elementen met gelijke sleutels in hun oorspronkelijke volgorde houden
- CWelke paren elementen worden vergeleken en verwisseld, ligt vooraf vast, onafhankelijk van de waarden van de gegevens; zo kunnen veel threads tegelijk dezelfde stappen uitvoeren, met uniforme vertakkingen
Antwoord en toelichting tonen
Antwoord: C. Welke paren elementen worden vergeleken en verwisseld, ligt vooraf vast, onafhankelijk van de waarden van de gegevens; zo kunnen veel threads tegelijk dezelfde stappen uitvoeren, met uniforme vertakkingen
Bij bitonic sort worden de paren die in elke fase worden vergeleken alleen door hun indexen bepaald, en alle vergelijk-en-verwisselbewerkingen binnen een fase kunnen tegelijk worden uitgevoerd. n = 2ᵏ elementen worden in k(k+1)/2 fasen gesorteerd: 16 elementen vragen 10 fasen en in totaal 80 vergelijkingen, 1024 elementen 55 fasen en 28.160 vergelijkingen. Het totale aantal vergelijkingen is O(n log² n), meer dan bij quicksort en vergelijkbare algoritmen, maar omdat de stappen niet van de gegevens afhangen, voeren apparaten zoals GPU's, waar veel threads dezelfde instructies uitvoeren, ze efficiënt uit zonder uiteenlopende vertakkingen. Geen methode die alleen met vergelijkingen sorteert, kan met minder dan O(n log n) vergelijkingen toe, en bitonic sort is in het algemeen ook niet stabiel.