Files
uni/ws2019/ipi/uebungen/ipi7.tex
T
2019-12-11 02:16:19 +01:00

73 lines
2.9 KiB
TeX

\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}