Cycli detecteren in simulaties
Vooruit springen wanneer de toestand zich herhaalt
Cycli detecteren in simulaties is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wanneer stappen zich herhalen
Sommige simulaties vragen naar de toestand na een enorm aantal stappen, bijvoorbeeld een biljoen. Eén voor één stappen zou nooit op tijd klaar zijn. ⏳
Toestanden zijn eindig
Als het aantal mogelijke toestanden beperkt is, moet de simulatie er uiteindelijk één opnieuw bezoeken. Vanaf dat moment herhaalt alles zich voor altijd in een cyclus.
Hoe een cyclus eruitziet
Het pad heeft een aanloop die naar de lus leidt, waarna de lus zich herhaalt. Als je de lus vindt, kun je miljarden stappen overslaan.
Onthoud waar je bent geweest
Sla elke toestand op in een woordenboek en koppel die aan het stapnummer waarop je haar voor het eerst zag. Als je haar opnieuw ziet, heb je de cyclus gevonden.
seen = {}Vind de herhaling
Controleer vóór elke stap of de huidige toestand al in seen staat. Als dat zo is, heb je de lus zojuist gesloten.
if state in seen:
start = seen[state]Meet de cycluslengte
De lengte is het huidige stapnummer min het stapnummer waarop je deze toestand voor het eerst zag. Na zoveel stappen kom je precies bij de toestand terug.
length = step - seen[state]Sla stappen over met modulo
Trek eerst de aanloop af en neem daarna het aantal resterende stappen modulo de cycluslengte. Nu hoef je nog maar een klein overgebleven stuk te simuleren.
rem = (N - start) % lengthWerk de overgebleven stappen af
Voer de simulatie vanaf het begin van de cyclus alleen uit voor die resterende stappen. De eindtoestand komt dan precies overeen met stap N.
for _ in range(rem):
state = step_fn(state)Houd de toestand hasjbaar
Sleutels van een woordenboek moeten hasjbaar zijn, dus zet lijsten om in tupels voordat je ze opslaat. Een veranderlijke toestand kan geen sleutel zijn.
key = tuple(row)Floyd zonder geheugen
Als toestanden te groot zijn om op te slaan, vindt de methode van Floyd met de schildpad en de haas een cyclus met twee verwijzingen en vrijwel geen extra geheugen.
Waarom dit de oplossing biedt
Cyclusdetectie verandert een onmogelijke lus van een biljoen stappen in een paar duizend stappen. Herhaling herkennen is de hele truc.
Korte controle
Je zag de huidige toestand voor het eerst bij stap s en bent nu bij stap t.
Samenvatting
Wanneer toestanden zich herhalen, registreer je elke toestand in een tabel, vind je de cycluslengte, sla je stappen over met modulo en simuleer je alleen de overgebleven stappen. 🚀
Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “Cycli detecteren in simulaties” gratis?
Ja — de volledige tekst van “Cycli detecteren in simulaties” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “Cycli detecteren in simulaties”?
Vooruit springen wanneer de toestand zich herhaalt Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Cycli detecteren in simulaties”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Toestand modelleren en vooruitgaan
- Rasterwandelingen en richtingsvectoren
- Cycli detecteren in simulaties
- Lastige randgevallen beheersen