|
- \documentclass[uebung]{../../../lecture}
-
- \title{IPI: Übungsblatt 7}
- \author{Samuel Weidemaier, Christian Merten}
-
- \begin{document}
-
- \punkte
-
- \begin{aufgabe} LIFO vs. FIFO
- \begin{enumerate}
- \item Kunden in einer Bäckerei
-
- FIFO: Der erste Kunde wird zu erst bedient
- \item Menschen in einem Aufzug
-
- LIFO: Der letzte Mensch verlässt den Aufzug als erstes (bei einer Tür)
- \item Lebensmittel in Ihrem Kühlschrank
-
- FIFO: Die ältesten Lebensmittel müssen als erstes verbraucht werden.
- \item Autos auf einer Autofähre
-
- Def. (Autofähre). Eine Fähre mit einer Auffahrt und einer Ausfahrt, jedes Auto
- befährt die Fähre nur vorwärts.
-
- FIFO: Das erste Auto steht ganz vorne auf der Fähre und verlässt diese als erstes
- auf der anderen Seite.
- \item Druckanträge auf einen Drucker
-
- FIFO: Der erste Druckauftrag wird als erstes ausgeführt.
- \item Besuchen der Knoten eines Baums nach dem Depth-First-Prinzip
-
- FIFO: Die Elemente, die als erstes dem Baum hinzugefügt wurden, also ganz oben
- stehen, werden bei der Depth-First-Suche auch als erstes ausgewertet.
- \item Rekursive Funktionsaufrufe
-
- LIFO: Der letzte Funktionsaufruf wird als erstes vollständig ausgewertet.
- \end{enumerate}
- \end{aufgabe}
-
- \begin{aufgabe}
- Hase und Igel
- \begin{enumerate}[a)]
- \item Wenn kein Zyklus vorliegt, wird der \textit{Hase} zuerst auf Null zeigen.
- Falls der Zeiger des \textit{Hasen} aber den \textit{Igel} überrundet, muss ein
- Zyklus vorliegen, Das wird dann erkannt, wenn \textit{Hase} und \textit{Igel} zum
- gleichen Zeitpunkt auf das selbe Element zeigen. Der Abstand von \textit{Hase} zu
- \textit{Igel} wird dabei immer kleiner, sodass dies in endlicher Zeit erreicht wird.
-
- Die Länge des Zyklus wird erkannt durch die Differenz der Schrittzahlen, des ersten
- Aufeinandertreffens und dem zweiten.
- \item siehe \textit{haseigel.cpp}
- \end{enumerate}
- \end{aufgabe}
-
- \begin{aufgabe}
- Warteschlangen
- \begin{enumerate}[a)]
- \item siehe \textit{queue\_einfach.cpp}
- \item siehe \textit{queue.cpp}
- \item Die Version der einfach verketteten Liste braucht ca. 2550 mal so lang, wie die zweite. Dies liegt
- an der Komplexität O(n) des Hinzufügens eines Elements für
- eine einfach verkettete Liste, da hier durch die ganze Liste iteriert werden muss, um das letzte
- Element zu finden. Bei einer doppelt verketteten Liste liegt eine Komplexität
- von O(1) vor, da hier direkt auf das letzte Element zugegriffen werden kann.
- Das Entfernen am Listenanfang ist immer eine O(1) Operation, weil hier direkt in beiden
- Fällen der Pointer auf das erste Element verwendet werden kann.
- \end{enumerate}
-
- \end{aufgabe}
-
- \end{document}
|