In het verkeersreglement wordt de term ritsen gebruikt om aan te geven dat het verplicht is om op een ordelijke manier in te voegen waar twee rijstroken samenkomen tot één rijstrook. Daarbij moeten de voertuigen beurtelings invoegen op de vrije rijstrook. Dit strookwisselen is noodzakelijk bij knelpunten op autosnelwegen waar de rijbaan met één strook versmalt. Bestuurders op de wegvallende rijstrook moeten dan invoegen in het verkeer van de aanliggende strook.
De overheid houdt regelmatig campagnes om het ritsgedrag te bevorderen, omdat bij ritsen al snel irritatie, agressie en gevoelens van onveiligheid ontstaan. Vaak omdat bestuurders die te vroeg invoegen het niet leuk vinden om andere auto's te zien doorrijden tot het einde van de wegvallende rijstrook. Toch is dat doorrijden onderdeel van het gewenste ritsgedrag. Om het ritsgedrag te stimuleren, zijn op veel knelpuntlocaties verkeersborden geplaatst met de teksten "Ritsen na 300 m" en "Ritsen vanaf hier". In België is ritsen vanaf 1 maart 2014 verplicht, en dat op de correcte manier, namelijk vlak voor de wegversmalling. Niet ritsen kan een boete van 55 euro opleveren.
Het mag duidelijk zijn dat ritsen eigenlijk alleen van belang is tijdens drukke periodes, want bij weinig verkeer ontstaan er geen problemen bij het strookwisselen en het invoegen tussen voertuigen op een andere strook, voor zover die aanwezig zijn.
We implementeren drie verschillende manieren om de elementen van twee gegeven reeksen (list of tuple) samen te voegen tot één enkele nieuwe lijst (list).
In de drie gevallen verloopt het samenvoegen beurtelings: we voegen het eerste element van de eerste reeks toe aan de nieuwe lijst, daarna het eerste element van de tweede reeks, het tweede element van de eerste reeks, het tweede element van de tweede reeks, enzoverder.
In de drie gevallen gebeurt het samenvoegen ook paarsgewijs: als we het $$i$$-de element van de eerste reeks toevoegen, dan voegen we daarna ook het $$i$$-de element van de tweede reeks toe.
De drie implementaties werken op dezelfde manier als de twee gegeven reeksen die moeten samengevoegd worden even lang zijn. Ze verschillen echter in de manier waarop ze omgaan met reeksen die niet even lang zijn.
Gevraagd wordt:
Schrijf een functie samenvoegen waaraan twee reeksen (list of tuple) moeten doorgegeven worden. De functie moet een nieuwe lijst (list) teruggeven, waarin de elementen van de twee gegeven reeksen beurtelings en paarsgewijs samengevoegd worden. Het samenvoegen moet stoppen van zodra alle elementen van de kortste reeks zijn toegevoegd aan de nieuwe lijst.
Schrijf een functie weven waaraan twee reeksen (list of tuple) moeten doorgegeven worden. De functie moet een nieuwe lijst (list) teruggeven, waarin de elementen van de twee gegeven reeksen beurtelings en paarsgewijs samengevoegd worden. Het samenvoegen moet stoppen van zodra alle elementen van de langste reeks zijn toegevoegd aan de nieuwe lijst. Na het laatste element van de kortste reeks wordt terug het eerste element van die reeks toegevoegd, en daarna telkens terug het volgende elementen van de reeks.
Schrijf een functie ritsen waaraan twee reeksen (list of tuple) moeten doorgegeven worden. De functie moet een nieuwe lijst (list) teruggeven met alle elementen van de twee gegeven reeksen. De functie voegt in die nieuwe lijst eerst beurtelings en paarsgewijs de elementen van de twee gegeven reeksen samen, totdat alle elementen van de kortste reeks zijn toegevoegd. Daarna worden nog de resterende elementen van de langste reeks aan de nieuwe lijst toegevoegd.
>>> samenvoegen(('A', 'B', 'C'), [1, 2, 3])
['A', 1, 'B', 2, 'C', 3]
>>> samenvoegen(['A'], [1, 2, 3, 4])
['A', 1]
>>> samenvoegen(('A', 'B'), (1, 2, 3, 4))
['A', 1, 'B', 2]
>>> samenvoegen(('A', 'B', 'C'), [1, 2])
['A', 1, 'B', 2]
>>> weven(('A', 'B', 'C'), [1, 2, 3])
['A', 1, 'B', 2, 'C', 3]
>>> weven(['A'], [1, 2, 3, 4])
['A', 1, 'A', 2, 'A', 3, 'A', 4]
>>> weven(('A', 'B'), (1, 2, 3, 4))
['A', 1, 'B', 2, 'A', 3, 'B', 4]
>>> weven(('A', 'B', 'C'), [1, 2])
['A', 1, 'B', 2, 'C', 1]
>>> ritsen(('A', 'B', 'C'), [1, 2, 3])
['A', 1, 'B', 2, 'C', 3]
>>> ritsen(['A'], [1, 2, 3, 4])
['A', 1, 2, 3, 4]
>>> ritsen(('A', 'B'), (1, 2, 3, 4))
['A', 1, 'B', 2, 3, 4]
>>> ritsen(('A', 'B', 'C'), [1, 2])
['A', 1, 'B', 2, 'C']
In 2008 toonde fysicus Yuki Sugiyama1 van de universiteit van Nagoya (Japan) aan waarom er toch soms files ontstaan zonder dat er noemenswaardige knelpunten zijn. Hij plaatste 22 voertuigen op een rotonde met een omtrek van 230 meter en vroeg de bestuurders om constant 30 km/h te proberen rijden, maar ook om op veilige afstand van hun voorligger te blijven.
Omdat de auto's vrij dicht op elkaar gepakt stonden, begonnen er na een paar ronden al onregelmatigheden te verschijnen. Wanneer bestuurders gedwongen werden om te remmen, hadden ze de neiging om lichtjes te overcompenseren, waardoor bestuurders achter hen eveneens gedwongen werden om te overcompenseren. Hierdoor ontstond een zogenaamde harmonicafile of accordeonfile: auto's die de achterkant van de file bereikten werden gedwongen om te vertragen, terwijl auto's aan de voorkant van de file terug konden versnellen naar de normale snelheid. Hierdoor ontstond een levende golf die achteruit kroop langs het parcours.
Het interessante aan het onderzoek was dat Sugiyama ontdekte dat dit fenomeen zeer nauwkeurig kan voorspeld worden in realistische omstandigheden. Metingen op verschillende snelwegen in Duitsland en Japan hebben aangetoond dat vrijstromend verkeer wordt overbelast als de dichtheid van de auto's hoger ligt dan 40 voertuigen per mijl. Voorbij dat punt wordt de verkeersstroom instabiel en ontstaan er accordeongolven. Omdat het fenomeen een gevolg is van de menselijke reactietijd, staat het volledig los van het land of de heersende maximumsnelheid. Zolang het aantal auto's op de snelweg niet wijzigt, rolt de filegolf achteruit met een voorspelbare snelheid van 12 km/h.
Sugiyama vertelde hierover het volgende aan Gavin Pretor-Pinney voor diens boek The wavewatcher's Companion2:
Vanuit een fysische invalshoek inzicht krijgen in dingen zoals verkeersopstoppingen vormt een totaal nieuw, opkomend gebied binnen de natuurkunde. Hoewel we vrij vertrouwd zijn met het fenomeen file, blijft het nog steeds veel te moeilijk om te begrijpen wat er echt gebeurt.
Sugiyama Y, Fukui M, Kikuchi M, Hasabe K, Nakayama A, Nishinari K, Tadaki S, Yukawa S (2008). Traffic jams without bottlenecks — experimental evidence for the physical mechanism of the formation of a jam. New Journal of Physics 10(3), 033001. 3
Vanderbilt T (2009). Traffic: why we drive the way we do (and what it says about us). Vintage. 4