hilbert

Aus ProgrammingWiki
Archivierte Version vom 2012-04-09T09:52:44+00:00. Aktuelle Version

Inhaltsverzeichnis

Hintergrund

Ein wirkliches Hotel verfügt über genau n, also endlich viele Zimmer, und bietet folglich Platz für höchstens n Gäste.

Dem sehr bekannten Mathematiker David Hilbert (23.01.1862-14.02.1943) verdanken wir die Geschichte von einem Hotel mit unendlich vielen Zimmern. Wie viele Gäste können in dem "unendlichen Hotel" untergebracht werden?

Die Zimmer des unendlichen Hotels werden fortlaufend durchnummeriert. Darüber hinaus verabreden wir, dass die Nummerierung mit der Zahl 0 beginnt. Zur Vereinfachung gehen wir hier davon aus, dass das Hotel ausschließlich über Einzelzimmer verfügt.

Arbeiten mit Streams

Um das Hilberthotel zu realisieren, ist es nötig, mit Streams zu arbeiten. In Scheme kann dies mit Hilfe der verzögerten Evaluation implementiert werden. Dafür ist es zunächst nötig, einige Grundfunktionen zur Verfügung zu stellen. Diese basieren auf dem Buch Programmierparadigmen Seite 63 ff.

Hilberthotel

Das Hilberthotel besitzt undendlich viele Zimmer. Leere Zimmer werden mit "#f" gekennzeichnet.

einzelne Gäste

kleine Reisegruppe

Kleinbus kommt angefahren:

Zimmerbelegung nach Check-In:

Hilbertbus

groooßer Hilbertbus kommt angefahren:

Zimmerbelegung nach Check-In:

Es scheinen keine freien Zimmer mehr zu sein, doch da kommt noch an bus gefahren:

Gäste müssen umziehen:

Zimmerbelegung nach Check-In:


Hilbertbus-Konvoi

Macrohard macht Betriebsausflug mit folgenden Bussen (eine Zeile = 1 Bus):


Konvoi->Stream

Mathematische Hilfsfunktionen, um aus einen Stream von Hilbertbussen, einen einzelnen Stream von Hotelgästen zu definieren.

Passagiere treten in folgender Reihenfolge zum Check-In an:


Hotelgäste müssen umziehen, damit die ungeraden Zimmer frei werden. Danach beziehen die Konvoi-Gäste ihre Zimmer.

Zimmerbelegung nach Check-In:

Wer wohnt in Zimmer 234?