1. Permutatie Machine:
Ergens in 1963 heeft B.R. Heap al het algoritme uitgevonden voor permutatie zonder recursieve
aanroepen. Dit algoritme werkt op de basis van stacks(stapels). Deze interpretatie is gebaseerd op
rijen(queues).
Verder stoelt deze interpretatie op het idee dat als je een shift doet van de data in een rij elementen
en je doet dit voor alle mogelijke combinaties dan krijg je uiteindelijk alle permutaties van een reeks
elementen.
De data structuur ziet er dan als volgt uit voor de permutatie van 4 elementen:
Kolom 1 Kolom 2 Kolom 3
ABCD(root) ABCD(root) ABCD(root)
BCDA ACDB ABDC
CDAB ADBC
DABC
In de eerste kolom staan alle verschuivingen van root, de ABCD vanaf het eerste element en telkens
met het resultaat verder verschoven totdat elk element in de reeks de eerste positie heeft bereikt.
Tweede kolom vanaf het tweede element en de derde kolom van het derde element. Zoals u ziet
geldt voor N elementen dat er N-1 aantal kolommen zijn. In kolom 1 met N=4 staan 4 waardes, voor
kolom 2 staan 3 waardes en voor kolom 3 staan 2 waardes waarbij verteld moet worden dat de
allerlaatste waarde van deze kolom niet daadwerkelijk wordt opgeslagen in de tabel.
Na het vullen van de tabel moet de tabel worden schoongemaakt door de top waarde van elke kolom
te verwijderen waar die van te voren is gevuld. Na het wissen moet bepaald worden of er nog volle
kolommen zijn door te zoeken van in dit geval kolom 3 naar kolom 1. Is er een volle kolom dan de top
waarde(root) van de volle kolom gebruiken om de opeenvolgende lege kolommen te vullen.
Kolom 1 Kolom 2 Kolom 3
BCDA ACDB(root) ACDB(root)
CDAB ADBC ACBD
DABC
Deze machine stopt pas als alle kolommen leeg zijn en elke combinatie in de permutatie is bepaald.
Patrick ten Bruggencate.
23-4-2023
Heerlen