added algo1 assignments 2-3 and 5-8
Some checks failed
build-latex / build (push) Has been cancelled

This commit is contained in:
Jonas_Jones 2025-06-20 22:47:54 +02:00
parent b5ef7d1944
commit 3076cc12e6
6 changed files with 1753 additions and 0 deletions

182
algo1/assignment7/main.tex Normal file
View file

@ -0,0 +1,182 @@
\documentclass[a4paper]{article}
%\usepackage[singlespacing]{setspace}
\usepackage[onehalfspacing]{setspace}
%\usepackage[doublespacing]{setspace}
\usepackage{geometry} % Required for adjusting page dimensions and margins
\usepackage{amsmath,amsfonts,stmaryrd,amssymb,mathtools,dsfont} % Math packages
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{listings}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{subcaption}
\usepackage{float}
\usepackage[table,xcdraw]{xcolor}
\usepackage{tikz-qtree}
\usepackage{changepage,titlesec,fancyhdr} % For styling Header and Titles
\pagestyle{fancy}
\usepackage{enumerate} % Custom item numbers for enumerations
\usepackage[ruled]{algorithm2e} % Algorithms
\usepackage[framemethod=tikz]{mdframed} % Allows defining custom boxed/framed environments
\usepackage{listings} % File listings, with syntax highlighting
\lstset{
basicstyle=\ttfamily, % Typeset listings in monospace font
}
\usepackage[ddmmyyyy]{datetime}
\geometry{
paper=a4paper, % Paper size, change to letterpaper for US letter size
top=2.5cm, % Top margin
bottom=3cm, % Bottom margin
left=2.5cm, % Left margin
right=2.5cm, % Right margin
headheight=25pt, % Header height
footskip=1.5cm, % Space from the bottom margin to the baseline of the footer
headsep=1cm, % Space from the top margin to the baseline of the header
%showframe, % Uncomment to show how the type block is set on the page
}
\lhead{ALGO-1\\Sommersemester 2024}
\chead{\bfseries{Übungsblatt 6}\\}
\rhead{7987847\\Jonas Werner}
\begin{document}
\section*{Aufgabe 7.1}
Gegeben sei der folgende (a, b)-Baum $T_{ab}$:
\begin{center}
\begin{tikzpicture}[
every node/.style = {draw, circle, minimum size=8mm, inner sep=0pt},
level 1/.style={sibling distance=35mm},
level 2/.style={sibling distance=20mm}
]
\node {F, N}
child {node {A, E}}
child {node {H, I}}
child {node {X}};
\end{tikzpicture}
\end{center}
Fügen Sie für die beiden folgenden Spezifikationen von Tab jeweils die Schlüssel C, Y, T, S und Q ein und entfernen Sie anschließend die Schlüssel N, A und S (jeweils in dieser Reihenfolge).
\begin{enumerate}
\item[ a)] Tab ist ein (2, 3)-Baum.
\item[ b)] Tab ist ein (2, 4)-Baum.
\end{enumerate}
Geben Sie jeweils die Zwischenschritte in graphischer Darstellung an und beschreiben Sie kurz, was - aus welchem Grund - geschieht.
\textbf{Hinweis:} Es kann für das Verständnis helfen, die Operationen noch einmal in kleinere Zwischenschritte aufzuspalten. Es genügt jedoch, eine Grafik für den Zustand nach jeder Operation anzugeben.
\subsection*{a)}
\begin{verbatim}
(F,N) insert(C) (F,N) (C,F,N) (F) insert(Y)
/ | \ -> / | \ -> / | \ -> / \ ->
(A,E) (H,I) (X) (A,C,E) (H,I) (X) (A,E) (H,I) (X) (C) (N)
/ \ / \
(A) (E) (H,I) (X)
(F) (F) (F)
/ \ insert(T) / \ / \ insert(S)
(C) (N) -> (C) (N) -> (C) (N,X) ->
/ \ / \ / \ / \ / \ / | \
(A) (E) (H,I) (X,Y) (A) (E) (H,I) (T,X,Y) (A) (E) (H,I) (T) (Y)
(F) (F) (F)
/ \ insert(Q) / \ / \
(C) (N,X) -> (C) (N,X) -> (C) (N,S,X) ->
/ \ / | \ / \ / | \ / \ / | | \
(A) (E) (H,I)(S,T) (Y) (A) (E)(H,I)(Q,S,T) (Y) (A) (E)(H,I)(Q)(T) (Y)
\end{verbatim}
\break
\begin{verbatim}
(F,S) (F,S)
/ | \ remove(N) / | \
(C) (N) (X) -> (C) ( ) (X) ->
/ \ / \ / \ / \ / \ / \
(A) (E)(H,I)(Q) (T) (Y) (A) (E)(H,I)(Q) (T) (Y)
(F,S) (F,S)
/ | \ / | \ remove(A)
(C) (Q) (X) -> (C) (I) (X) ->
/ \ | / \ / \ / \ / \
(A) (E)(H,I) (T) (Y) (A) (E) (H)(Q) (T) (Y)
(F,S) (F,S)
/ | \ / | \
(C) (Q) (X) -> ( ) (I) (X) ->
/ \ | / \ / / \ / \
( ) (E)(H,I) (T) (Y) (C,E) (H) (Q) (T) (Y)
(S) ( )
/ \ remove(s) / \
(F,I) (X) -> (F,I) (X) ->
/ | \ / \ / | \ / \
(C,E)(H) (Q) (T) (Y) (C,E)(H) (Q) (T) (Y)
(T) (T)
/ \ / \
(F,I) (X) -> (F,I) ( ) ->
/ | \ / \ / | \ |
(C,E)(H) (Q) ( ) (Y) (C,E)(H) (Q) (X,Y)
(I)
/ \
(F) (T)
/ \ / \
(C,E) (H) (Q) (X,Y)
\end{verbatim}
\subsection*{b)}
\begin{verbatim}
(F,N) insert(C) (F,N) insert(Y) (F,N) insert(T) (F,N) insert(S)
/ | \ -> / | \ -> / | \ -> / | \ ->
(A,E) (H,I) (X) (A,C,E) (H,I) (X) (A,C,E) (H,I) (X,Y) (A,C,E) (H,I) (T,X,Y)
(F,N) (F,N,T) insert(Q) (F,N,T) remove(N)
/ | \ -> / | | \ -> / | | \ ->
(A,C,E) (H,I) (S,T,X,Y) (A,C,E)(H,I)(S)(X,Y) (A,C,E)(H,I)(Q,S)(X,Y)
(F,T) (F,Q,T) remove(S) (F,Q,T)
/ | | \ -> / | | \ -> / | | \
(A,C,E) (H,I)(Q,S)(X,Y) (A,C,E)(H,I)(S)(X,Y) (A,C,E)(H,I) ( )(X,Y)
(F,Q,T) (F,I,T)
/ | | \ -> / | | \
(A,C,E) (H,I)( )(X,Y) (A,C,E)(H)(Q)(X,Y)
\end{verbatim}
\section*{Aufgabe 7.2 Nahezu sortiert (18 Punkte)}
Sei A ein Array mit \( n > 0 \) natürlichen Zahlen, wobei keine Zahl mehr als einmal vorkommt. Die Einträge in A seien bezüglich eines Parameters \( k \leq n \) "nahezu" sortiert, d.h., jeder Eintrag ist höchstens um \( k \) Positionen von seiner eigentlich korrekten Position in der Sortierung entfernt.
Entwerfen Sie einen Algorithmus, der die Einträge im Array A in die korrekte Sortierung überführt. Die Laufzeit sollte \( O(n \log k) \) nicht überschreiten. Beschreiben Sie wie immer zuerst die Idee Ihres Algorithmus und geben Sie ihn dann in Pseudocode an. Zeigen Sie, dass der Algorithmus korrekt arbeitet und die genannte Laufzeitschranke einhält.
\end{document}