Ich erstelle ein Buchungssystem, mit dem eine bestimmte Anzahl von Zimmern/Plätzen gebucht werden kann. Angenommen, ein Benutzer kann Sitzplätze/Räume buchen, die mit 1-100 nummeriert sind. Mein Dozent hat vorgeschlagen, dass ich einen Algorithmus verwende, der die Reservierungsnummern wirtschaftlich teilt, so dass die nicht verkauften Plätze auf ein Minimum beschränkt bleiben. Wenn zum Beispiel 10 Plätze zur Verfügung standen:Eine Art von Algorithmus zur Nummernvergabe
Benutzer 1 Bücher 4 Sitzplätze. Gegeben (Nr. 1-4). Benutzer 2 Bücher 1 Platz. Gegeben (Nr. 5). Benutzer 3 Bücher 4 Sitze. Gegeben (Nr. 6-9). Benutzer 2 bricht dann ab. Freimachen (Nr. 5). Benutzer 4 möchte dann 2 Plätze buchen, aber die einzigen verfügbaren Plätze sind 5 & 10 (nicht zusammen, also buchen sie nicht).
Mein Dozent sagte, ein gemeinsamer Algorithmus existiert für dieses Problem, konnte sich aber nicht an den Namen erinnern. Ich nehme an, es ist wie der Algorithmus für Daten auf einer Festplatte.
Irgendwelche Ideen? Vielen Dank.
Die gleichen Algorithmen werden für die Implementierung von 'malloc()' und 'free()' in C verwendet. Sie verwenden häufig "freelists" - verknüpfte Listen von (Speicher-) Bereichen, die frei sind. Wenn eine neue Anfrage eingeht, wird die Freiliste nach einem Block durchsucht, der groß genug ist, um die Anfrage zu erfüllen; Es gibt verschiedene Kompromisse bei der Auswahl des Blocks (z. B. wähle den ersten, der passt, wähle den kleinsten, der passt, wähle den größten) und keine Richtlinie, die überall optimal ist. –