blatt 10
This commit is contained in:
parent
8b10c04ab2
commit
1da8b21a53
12 changed files with 391 additions and 0 deletions
BIN
übung_10/agt26-blatt10.pdf
Normal file
BIN
übung_10/agt26-blatt10.pdf
Normal file
Binary file not shown.
BIN
übung_10/agt_übung_10.pdf
Normal file
BIN
übung_10/agt_übung_10.pdf
Normal file
Binary file not shown.
18
übung_10/agt_übung_10.tex
Normal file
18
übung_10/agt_übung_10.tex
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
\documentclass[parskip=half]{ngexrcs}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage{subcaption}
|
||||||
|
\setkeys{Gin}{pagebox=artbox, width=0.8\textwidth}
|
||||||
|
|
||||||
|
\subject{Algorithmische Graphentheorie}
|
||||||
|
\title{10. Übungsblatt}
|
||||||
|
\author{Jasper Gude \and Pia Röttgers}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
\points[2em]{20}
|
||||||
|
|
||||||
|
\input{aufgabe_1.tex}
|
||||||
|
\input{aufgabe_2.tex}
|
||||||
|
\input{aufgabe_3.tex}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
51
übung_10/aufgabe_1.tex
Normal file
51
übung_10/aufgabe_1.tex
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
\section{Größte Clique}
|
||||||
|
\begin{tasks}
|
||||||
|
\item
|
||||||
|
Wir prüfen für jede Teilmenge $V' \subseteq V$, ob sie eine Clique ist,
|
||||||
|
d. h. wir prüfen für jeden Knoten in $V'$ ob es eine Kante zu jedem anderen
|
||||||
|
Knoten in $V'$ gibt.
|
||||||
|
|
||||||
|
Dabei fangen wir mit der größten Teilmenge an und werden schrittweise kleiner.
|
||||||
|
Wenn wir eine Clique finden ist sie die größte.
|
||||||
|
|
||||||
|
Exakt haben wir eine Laufzeit von
|
||||||
|
\[
|
||||||
|
\sum_{i=1}^n \binom{n}{i} \cdotp i^2
|
||||||
|
\]
|
||||||
|
|
||||||
|
Es exitieren maximal $2^n$ viele Teilmengen. Für jede Teilmenge $V'$
|
||||||
|
prüfen wir für jedes Knotenpaar, ob sie adjazent sind. Das geht in $\Oh(n^2)$ Zeit.
|
||||||
|
Also $\Oh(2^n \cdotp n^2)$.
|
||||||
|
\points{2}
|
||||||
|
|
||||||
|
\item \label{1b}
|
||||||
|
Wir prüfen diesmal für jede Teilmenge der Nachbarschaft $N(v)$ von $v$ (insbesondere ist
|
||||||
|
$v$ in der $N(v)$) ob sie eine
|
||||||
|
Clique ist. Wir fangen wieder mit den größten Teilmengen an. Wenn wir eine Clique
|
||||||
|
finden, ist sie die größte, die $v$ enthält.
|
||||||
|
|
||||||
|
Die exakte Laufzeit ist damit
|
||||||
|
\[
|
||||||
|
\sum_{i=1}^{deg(v)} \binom{\abs{N(v)}}{i} \cdotp i^2
|
||||||
|
\]
|
||||||
|
|
||||||
|
Den Knotengrad können wir mit dem Maximalknotengrad $\Delta$ abschätzen,
|
||||||
|
ebenso wie die Größe von $N(v)$.
|
||||||
|
Somit erhalten wir
|
||||||
|
\[
|
||||||
|
\sum_{i=1}^\Delta \binom{\Delta}{i} \cdotp i^2
|
||||||
|
\]
|
||||||
|
Das heißt wir bekommen asymptotisch $\Oh(2^\Delta \cdotp \Delta^2)$.
|
||||||
|
\points{2}
|
||||||
|
|
||||||
|
\item
|
||||||
|
Mit dem Ansatz aus Teilaufgabe \ref{1b} können wir einen Algorithmus
|
||||||
|
für \alg*{Größte Clique} mit Parameter $\Delta$ konstruieren.
|
||||||
|
|
||||||
|
Dafür iterieren wir über jeden Knoten $v \in V$ und führen für ihn unseren
|
||||||
|
Algorithmus aus.
|
||||||
|
|
||||||
|
Das führt zu einer Laufzeit von $\Oh((2^\Delta \cdotp \Delta^2) \cdotp n)$, was in FPT liegt, da das die Form $\Oh(f(k) \cdotp \abs{I}^c)$ mit
|
||||||
|
Parameter $k$, Instanz $I$ und Konstante $c$ erfüllt.
|
||||||
|
\points{2}
|
||||||
|
\end{tasks}
|
||||||
80
übung_10/aufgabe_2.tex
Normal file
80
übung_10/aufgabe_2.tex
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
\section{Geradenüberdeckung}
|
||||||
|
\begin{tasks}
|
||||||
|
\item
|
||||||
|
Eine Gerade wird hinreichend bestimmt durch zwei Punkte, durch
|
||||||
|
die sie verläuft. Bei $n \geq 2$ können wir jede Gerade die nur einen
|
||||||
|
Punkt überdeckt, durch eine Gerade ersetzen, die durch mindestens zwei
|
||||||
|
Punkte verläuft.
|
||||||
|
\points{1}
|
||||||
|
|
||||||
|
\item \label{2b}
|
||||||
|
Jede Gerade überdeckt mindestens zwei Punkte. Es gibt $n$ viele Punkte.
|
||||||
|
Also brauchen wir maximal $n \divslash 2$ Geraden.
|
||||||
|
\points{1}
|
||||||
|
\item
|
||||||
|
Eine Gerade die mehr als $k$ Punkte überdeckt ist in der Geradenüberdeckung.
|
||||||
|
|
||||||
|
Angenommen wir haben eine Geradenüberdeckung $C$ bei der jede Gerade höchstens
|
||||||
|
$k$ Punkte überdeckt.
|
||||||
|
Wenn es eine Gerade $g$ gibt, die mehr als $k$ Punkte überdeckt und nicht in $C$
|
||||||
|
ist, dann wird sie an maximal $k$ Punkten geschnitten, da in $C$ höchstens $k$
|
||||||
|
Geraden sind.
|
||||||
|
Das bedeutet aber, dass nicht alle Punkte, die auf $g$ sind geschnitten und
|
||||||
|
damit überdeckt werden.
|
||||||
|
Das ist ein Widerspruch zur Annahme.
|
||||||
|
Somit muss $g$ in der Geradenüberdeckung sein.
|
||||||
|
\points{1}
|
||||||
|
|
||||||
|
\item
|
||||||
|
Unter der Annahme, dass es keine Gerade gibt, die mehr als $k$ Punkte
|
||||||
|
enthält gilt: Für $k < \sqrt{n}$ gibt es keine Geradenüberdeckung.
|
||||||
|
|
||||||
|
Angenommen jede Gerade überdeckt genau $k$ Punkte. Dann überdecken wir mit $k$ Geraden maximal $k^2$ Punkte. Da $k < \sqrt{n}$ sind das $k^2 < n$ viele Punkte und somit keine Geradenüberdeckung.
|
||||||
|
\points{1}
|
||||||
|
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\item
|
||||||
|
\alg*{$k$-Geradenüberdeckung}:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item
|
||||||
|
Ist $k \geq n \divslash 2$, gib $true$ zurück.
|
||||||
|
|
||||||
|
\item
|
||||||
|
Erzeuge die Menge $G$ aller Geraden, die von zwei Punkten aufgespannt werden.
|
||||||
|
Das sind $n^2$ viele.
|
||||||
|
|
||||||
|
\item
|
||||||
|
Bestimme für jede Gerade die Anzahl der überdeckten Punkte.
|
||||||
|
Nehme die Geraden, die mehr als $k$ Punkte überdecken in die
|
||||||
|
Geradenüberdeckung $C$. Wir überprüfen für alle $n^2$ Geraden,
|
||||||
|
ob sie noch weitere Punkte überdecken. Also $n^2 \cdotp n$ Überprüfungen.
|
||||||
|
|
||||||
|
\item
|
||||||
|
Ist $C = \emptyset$ und $k < \sqrt{n}$, gib $false$ zurück.
|
||||||
|
|
||||||
|
\item
|
||||||
|
Löse den Rest mit Brute Force.
|
||||||
|
|
||||||
|
Prüfe dafür für alle $A \in \binom{G \setminus C}{k - \abs{C}}$ ob $A \cup C$ alle Punkte überdeckt. Falls ja, gib $true$ zurück, sonst gib $false$
|
||||||
|
zurück.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Im Worst Case finden wir keine Geraden die mehr als $k$ Punkte überdecken.
|
||||||
|
Dann iterieren wir über alle $\binom{\abs{G}}{k}$ Mengen von Geraden.
|
||||||
|
Da $k \geq \sqrt{n}$ gilt
|
||||||
|
und $\abs{G} = n^2$ können wir folgende Abschätzung machen.
|
||||||
|
\[
|
||||||
|
\binom{\abs{G}}{k} = \binom{n^2}{k} = \binom{(\sqrt{n})^4}{k} \leq \binom{k^4}{k}
|
||||||
|
\]
|
||||||
|
|
||||||
|
Wir erhalten somit eine Gesamtlaufzeit von
|
||||||
|
\[
|
||||||
|
\Oh\parens{n^2 + n^3 + \overbrace{\binom{k^4}{k} \cdotp n}^\text{Für jede Auswahl an Geraden alle Punkte prüfen}}
|
||||||
|
\]
|
||||||
|
Das liegt in FPT.
|
||||||
|
\points{5}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{tasks}
|
||||||
23
übung_10/aufgabe_3.tex
Normal file
23
übung_10/aufgabe_3.tex
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
\section{Mehrgüterfluss}
|
||||||
|
\begin{tasks}
|
||||||
|
\item
|
||||||
|
Siehe \autoref{fig:3a}.
|
||||||
|
\points{2}
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\includegraphics[page=1]{figures.pdf}
|
||||||
|
\caption{Maximaler Fluss mit Gesamtflusswert $1$.}
|
||||||
|
\label{fig:3a}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\item
|
||||||
|
Siehe \autoref{fig:3b}
|
||||||
|
\points{3}
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\includegraphics[page=2]{figures.pdf}
|
||||||
|
\caption{Maximaler Fluss mit Gesamtflusswert $1$.}
|
||||||
|
\label{fig:3b}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\end{tasks}
|
||||||
38
übung_10/aufgabe_4.tex
Normal file
38
übung_10/aufgabe_4.tex
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
\section{Längste Wege}
|
||||||
|
\begin{tasks}
|
||||||
|
\item
|
||||||
|
Da $s, t$ in $G'$ adjazent zu jedem Knoten in $G$ ist, können wir
|
||||||
|
einen einfachen $s$-$t$-Weg der Länge $k+2$ erzeugen, indem wir
|
||||||
|
einen einfachen Weg der Länge $k$ in $G$ nehmen, $s$ an das eine Ende und $t$ an das andere Ende hängen.
|
||||||
|
|
||||||
|
Umgekehrt kann man aus einem einfachen $s$-$t$-Weg der Länge $k$
|
||||||
|
in $G'$ einen einfachen Weg der Länge $k-2$ in $G$ konstruieren,
|
||||||
|
indem wir $s$ und $t$ entfernen.
|
||||||
|
\points{2}
|
||||||
|
|
||||||
|
\item
|
||||||
|
Ein Hamiltonweg ist ein Weg der alle Knoten in $G$ beinhaltet
|
||||||
|
und somit Länge $n-1$ besitzt.
|
||||||
|
|
||||||
|
Wie wir oben gezeigt haben, kann ein $s$-$t$-Weg der Länge $n+1$
|
||||||
|
in $G'$ leicht in einen Weg der Länge $n-1$ in $G$ umgewandelt
|
||||||
|
werden. Das heißt, dass wir einen Hamiltonweg in $G$ finden,
|
||||||
|
wenn wir einen $s$-$t$-Weg finden.
|
||||||
|
|
||||||
|
Umgekehrt können wir einen Hamiltonweg leicht in einen $s$-$t$-Weg
|
||||||
|
umwandeln, also finden wir einen $s$-$t$-Weg wenn wir einen
|
||||||
|
Hamiltonweg finden.
|
||||||
|
|
||||||
|
Also finden wir einen Hamiltonweg genau dann, wenn wir einen
|
||||||
|
$s$-$t$-Weg finden.
|
||||||
|
\points{1}
|
||||||
|
|
||||||
|
\item
|
||||||
|
Da wir Hamiltonweg auf \algt{Längster $s$-$t$-Weg} reduziert
|
||||||
|
haben, muss also \algt{Längster $s$-$t$-Weg} $\NPe$-schwer sein, denn
|
||||||
|
wenn es in $\Pe$ liegen würde, könnten wir auch Hamiltonweg in
|
||||||
|
polynomieller Zeit lösen. Da wir nicht von $\Pe = \NPe$ ausgehen,
|
||||||
|
ist das nicht möglich.
|
||||||
|
\points{2}
|
||||||
|
|
||||||
|
\end{tasks}
|
||||||
BIN
übung_10/figures.pdf
Normal file
BIN
übung_10/figures.pdf
Normal file
Binary file not shown.
72
übung_10/ngexrcs.cls
Normal file
72
übung_10/ngexrcs.cls
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
% vim: set filetype:tex
|
||||||
|
|
||||||
|
% Identification %
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesClass{ngexrcs}[2021/12/21 ADS Exercise class]
|
||||||
|
|
||||||
|
% Handle options %
|
||||||
|
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
|
||||||
|
\ProcessOptions\relax
|
||||||
|
|
||||||
|
% More declarations %
|
||||||
|
\LoadClass{scrartcl}
|
||||||
|
|
||||||
|
\KOMAoptions{mpinclude=true}
|
||||||
|
\recalctypearea
|
||||||
|
|
||||||
|
\RequirePackage{ngutils}
|
||||||
|
|
||||||
|
% define fonts
|
||||||
|
\RequirePackage{fontspec}
|
||||||
|
\RequirePackage[math-style=upright]{unicode-math}
|
||||||
|
\setmainfont{TeX Gyre Pagella}
|
||||||
|
\setsansfont{TeX Gyre Heros}
|
||||||
|
\setmonofont{TeX Gyre Cursor}
|
||||||
|
\setmathfont{Euler Math}
|
||||||
|
\mathitalicsmode=1
|
||||||
|
|
||||||
|
\setlength{\marginparwidth}{1.5\marginparwidth}
|
||||||
|
\setlength{\fboxrule}{\heavyrulewidth}
|
||||||
|
|
||||||
|
% Use sansfont for all title elements
|
||||||
|
\addtokomafont{titlehead}{\sffamily}
|
||||||
|
\addtokomafont{subject}{\sffamily}
|
||||||
|
\addtokomafont{title}{\sffamily}
|
||||||
|
\addtokomafont{subtitle}{\sffamily}
|
||||||
|
\addtokomafont{author}{\sffamily}
|
||||||
|
\addtokomafont{date}{\sffamily}
|
||||||
|
\addtokomafont{publishers}{\sffamily}
|
||||||
|
|
||||||
|
% Use serif font for headings
|
||||||
|
\addtokomafont{disposition}{\rmfamily}
|
||||||
|
|
||||||
|
% Let sections be formated as in: Aufgabe 1 -- Section title
|
||||||
|
\renewcommand*{\sectionformat}{Aufgabe \thesection\autodot\enskip--\enskip}
|
||||||
|
|
||||||
|
% Let points of an exercise be printed as in: [__ / 2]
|
||||||
|
\newkomafont{points}{\sffamily}
|
||||||
|
\newcommand\points[2][1em]{\marginline{\framebox{{\usekomafont{points}\hspace{#1} \textbf{/} #2}}}}
|
||||||
|
|
||||||
|
\newcounter{task}
|
||||||
|
\renewcommand{\thetask}{\@alph\c@task)}
|
||||||
|
\newenvironment{tasks}
|
||||||
|
{
|
||||||
|
\begin{list}{\thetask}
|
||||||
|
{
|
||||||
|
\usecounter{task}
|
||||||
|
\setlength{\leftmargin}{1.6em}
|
||||||
|
}
|
||||||
|
}{%
|
||||||
|
\end{list}
|
||||||
|
}
|
||||||
|
|
||||||
|
\DeclareNewTOC
|
||||||
|
[
|
||||||
|
type=algorithm,
|
||||||
|
types=algorithms,
|
||||||
|
float,
|
||||||
|
floattype=4,
|
||||||
|
name=Algorithmus,
|
||||||
|
listname={Algorithmenverzeichnis}
|
||||||
|
]
|
||||||
|
{loa}
|
||||||
109
übung_10/ngutils.sty
Normal file
109
übung_10/ngutils.sty
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesPackage{ngutils}[2026/06/05 Never's LaTeX utils]
|
||||||
|
|
||||||
|
\RequirePackage[ngerman]{babel}
|
||||||
|
\RequirePackage{graphicx}
|
||||||
|
\RequirePackage{tabularx}
|
||||||
|
\RequirePackage{booktabs}
|
||||||
|
\RequirePackage{listings}
|
||||||
|
|
||||||
|
\lstnewenvironment{pseudocode}[1][] %defines the algorithm listing environment
|
||||||
|
{
|
||||||
|
\renewcommand{\lstlistingname}{Algorithmus}
|
||||||
|
\lstset{ %this is the stype
|
||||||
|
mathescape=true,
|
||||||
|
columns=fullflexible,
|
||||||
|
basicstyle=\normalfont,
|
||||||
|
identifierstyle=\scshape,
|
||||||
|
keywordstyle=\bfseries,
|
||||||
|
keywords={, and, or, not, new, if, then, else, while, for, in, to, up, down, foreach, do, return},
|
||||||
|
commentstyle=\itshape,
|
||||||
|
comment=[l]//,
|
||||||
|
delim=[is][\normalfont]{|}{|},
|
||||||
|
tabsize=3,
|
||||||
|
frame=tb,
|
||||||
|
framerule=1pt,
|
||||||
|
#1 % this is to add specific settings to an usage of this environment (for instnce, the caption and referable label)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{}
|
||||||
|
|
||||||
|
\newcommand{\argmax}{\mathop{\mathrm{arg\,max}}}
|
||||||
|
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}}}
|
||||||
|
\newcommand{\seilpmi}{\Longleftarrow}
|
||||||
|
|
||||||
|
\newcommand{\NN}{\mathbb{N}}
|
||||||
|
\newcommand{\ZZ}{\mathbb{Z}}
|
||||||
|
\newcommand{\QQ}{\mathbb{Q}}
|
||||||
|
\newcommand{\RR}{\mathbb{R}}
|
||||||
|
\newcommand{\CC}{\mathbb{C}}
|
||||||
|
\newcommand{\PP}{\mathbb{P}}
|
||||||
|
|
||||||
|
\newcommand{\pot}{\mathcal{P}}
|
||||||
|
|
||||||
|
\newcommand{\REC}{\mathrm{REC}}
|
||||||
|
\newcommand{\RE}{\mathrm{RE}}
|
||||||
|
\newcommand{\EA}{\mathrm{EA}}
|
||||||
|
\newcommand{\DEA}{\mathrm{DEA}}
|
||||||
|
\newcommand{\NEA}{\mathrm{DEA}}
|
||||||
|
|
||||||
|
\newcommand{\Pe}{\mathrm{P}}
|
||||||
|
\newcommand{\NPe}{\mathrm{NP}}
|
||||||
|
|
||||||
|
\newcommand{\Oh}{\mathcal{O}}
|
||||||
|
\newcommand{\oh}{\mathcal{o}}
|
||||||
|
|
||||||
|
\newcommand{\indeg}{\mathrm{indeg}}
|
||||||
|
\newcommand{\outdeg}{\mathrm{outdeg}}
|
||||||
|
|
||||||
|
\newcommand{\Eh}{\mathrm{E}}
|
||||||
|
\newcommand{\Var}{\mathrm{Var}}
|
||||||
|
|
||||||
|
\newcommand{\parens}[1]{\left(#1\right)}
|
||||||
|
\newcommand{\brackets}[1]{\left[#1\right]}
|
||||||
|
\newcommand{\braces}[1]{\left\{#1\right\}}
|
||||||
|
\newcommand{\angled}[1]{\left\langle#1\right\rangle}
|
||||||
|
|
||||||
|
\newcommand{\suchthat}{\;\middle\vert\;}
|
||||||
|
\newcommand{\set}[1]{\braces{#1}}
|
||||||
|
\newcommand{\tup}[1]{\parens{#1}}
|
||||||
|
\newcommand{\interval}[2][b]{
|
||||||
|
\if\detokenize{a}\detokenize{#1}%
|
||||||
|
\left[#2\right[
|
||||||
|
\fi
|
||||||
|
\if\detokenize{b}\detokenize{#1}%
|
||||||
|
\left[#2\right]
|
||||||
|
\fi
|
||||||
|
\if\detokenize{c}\detokenize{#1}%
|
||||||
|
\left]#2\right[
|
||||||
|
\fi
|
||||||
|
\if\detokenize{d}\detokenize{#1}%
|
||||||
|
\left]#2\right]
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\newcommand{\arr}[1]{\angled{#1}}
|
||||||
|
\newcommand{\abs}[1]{\left\vert#1\right\vert}
|
||||||
|
\newcommand{\norm}[1]{\left\Vert#1\right\Vert}
|
||||||
|
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
|
||||||
|
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
|
||||||
|
|
||||||
|
\newcommand{\algt}[1]{{\normalfont\scshape#1}}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
\newcommand*{\alg@unstarred}[2]{{\normalfont\scshape#1}{\normalfont(#2)}}
|
||||||
|
\newcommand*{\alg@starred}[1]{{\normalfont\scshape#1}}
|
||||||
|
\newcommand*{\alg}{\@ifstar{\alg@starred}{\alg@unstarred}}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
\newcommand{\com}[1]{{\normalfont\itshape/\!\!/ #1}}
|
||||||
|
|
||||||
|
\newenvironment{algorithmic}[1][1em]{
|
||||||
|
\begin{minipage}[t]{\dimexpr\linewidth}
|
||||||
|
\bfseries
|
||||||
|
\begin{tabbing}
|
||||||
|
\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\kill
|
||||||
|
}{%
|
||||||
|
\end{tabbing}
|
||||||
|
\end{minipage}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
übung_8/agt_übung_8_korr.pdf
Normal file
BIN
übung_8/agt_übung_8_korr.pdf
Normal file
Binary file not shown.
BIN
übung_9/agt_übung_9_korr.pdf
Normal file
BIN
übung_9/agt_übung_9_korr.pdf
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue