SlideShare a Scribd company logo
1 of 1
Download to read offline
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

More Related Content

More from Patrick ten Bruggencate (14)

Omtrek puntenverzameling v5
Omtrek puntenverzameling v5Omtrek puntenverzameling v5
Omtrek puntenverzameling v5
 
Poetsregime.
Poetsregime.Poetsregime.
Poetsregime.
 
Pak'je'sap winkel
Pak'je'sap winkelPak'je'sap winkel
Pak'je'sap winkel
 
Waarom dit niet nette lijnen is geworden.
Waarom dit niet nette lijnen is geworden.Waarom dit niet nette lijnen is geworden.
Waarom dit niet nette lijnen is geworden.
 
Omtrek puntenverzameling v4
Omtrek puntenverzameling v4Omtrek puntenverzameling v4
Omtrek puntenverzameling v4
 
Omtrek puntenverzameling v3
Omtrek puntenverzameling v3Omtrek puntenverzameling v3
Omtrek puntenverzameling v3
 
Van links naar rechts.
Van links naar rechts.Van links naar rechts.
Van links naar rechts.
 
waarom_v2_van_omtrekpuntenverzameling
waarom_v2_van_omtrekpuntenverzamelingwaarom_v2_van_omtrekpuntenverzameling
waarom_v2_van_omtrekpuntenverzameling
 
verder_met_kruisbepaling
verder_met_kruisbepalingverder_met_kruisbepaling
verder_met_kruisbepaling
 
puntwetten_tot_en_met_vier
puntwetten_tot_en_met_vierpuntwetten_tot_en_met_vier
puntwetten_tot_en_met_vier
 
nette_lijnen_algoritme_v1
nette_lijnen_algoritme_v1nette_lijnen_algoritme_v1
nette_lijnen_algoritme_v1
 
Omtrek puntenverzameling v2
Omtrek puntenverzameling v2Omtrek puntenverzameling v2
Omtrek puntenverzameling v2
 
Omtrek puntenverzameling.
Omtrek puntenverzameling.Omtrek puntenverzameling.
Omtrek puntenverzameling.
 
Wat te spenderen.
Wat te spenderen.Wat te spenderen.
Wat te spenderen.
 

permutatie machine

  • 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