Aufgabe 2

This commit is contained in:
Pia 2026-05-18 14:42:57 +02:00
parent d29755051d
commit ff07766822
5 changed files with 110 additions and 2 deletions

Binary file not shown.

View file

@ -0,0 +1,51 @@
\documentclass[a4paper,abstract,german,10pt]{scrreprt}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{tikz}
\usepackage{float}
\usepackage[left=2.5cm,right=2.5cm,top=3cm,bottom=2cm,includeheadfoot]{geometry}
\usepackage[most]{tcolorbox}
\setlength{\parindent}{0pt}
\begin{document}
\title{AGT Zusammenfasssung SS26}
\chapter{Wiederholung aus ADS}
\section*{Definitionen}
\textbf{Was ist ein Graph?}\\
Ein Grapg G ist ein Tupel (V(G), E(G)) wobei
\begin{itemize}
\item V(G) die Knotenmenge und
\item \textit{ungerichtet:} E(G) $\subseteq\binom{V}{2}=\{\{u,v\}\subseteq V(G) | u\neq v\}$ die Kantenmenge ist.
\item \textit{gerichtet:} E(G)$\subseteq V(G)\times V(G)=\{(u,v) | u,v \in V(G), u\neq v\}$ die Knatenmenge ist.
\end{itemize}
\textbf{Wie repräsentiert man einen Graphen?}\\
Mit \textbf{Adjazenlisten}, wenn es darum geht alle Kanten eines Knotens zu finden oder mit einer \textbf{Adjazenzmatrix} wenn es darum geht eine bestimmte Kante zu finden/überprüfen.\\\\
\textbf{Grad eines Knotens}\\
\section*{Graphendurchlauf-Strategien}
\section*{Berechnung kürzester Wege}
\section*{Minimale Spannbäume}
\end{document}

32
agt_übung2.py Normal file
View file

@ -0,0 +1,32 @@
from pulp import *
def min_vertexcover(nodes, edges):
#Problemdefinition
prob = LpProblem("Kleinste Knotenüberdeckung", LpMinimize)
#Binäre Variablen
x = {v: LpVariable(f"x_{v}", cat=LpBinary) for v in nodes}
#Zielfunktion
prob += lpSum(x[v] for v in nodes)
#Nebenbedingung
for u,v in edges:
prob += x[u] + x[v] >=1, f"Kante_{u}_{v}"
#Lösen mit gurobi
prob.solve(GUROBI())
#Ergebnis
status = LpStatus[prob.status]
vertex_cover = [v for v in nodes if value(x[v]) == 1]
return status, vertex_cover, value(prob.objective)
nodes_test = ['A', 'B', 'C', 'D', 'E']
edges_test = [('A', 'B'), ('A', 'C'), ('B', 'C'), ('B', 'D'), ('C', 'D'), ('D', 'E')]
status, cover, size = min_vertexcover(nodes_test, edges_test)
print(f"Status: {status}")
print(f"Minimale Knotenüberdeckung: {cover}")
print(f"Größe der Überdeckung: {size}")

Binary file not shown.

View file

@ -1,5 +1,30 @@
\section{b-Flüsse} \section{b-Flüsse}
\begin{tasks} \begin{tasks}
\item \item Damit überhaupt ein gültiger $s$-$t$ Fluss existieren kann, muss $$\sum_{v\in V}b(v)=0$$ gelten, da die Flusserhaltung gegeben sein muss.\\
\item Man erweitert den Graphen $G=(V,E)$ um eine künstliche Quelle $s$ und eine künstliche Senke $t$, welche man mit den schon vorhandenen ''Quellen'' ($b(v)<0$) und ''Senken''($b(v)>0$) verbindet. Als Kapazität der Kanten wählt man $|b(v)|$.\\
Die vorher bereits vorhandenen Kanten zwischen den Knoten bleiben natürlich mit ihrer Kapazität vorhanden.\\
Ein Zulässiger b-Fluss existiert genau dann, wenn der maximale s-t-Fluss im erweiterten Graphen G' genau
$$\sum_{v:b(v)>0}b(v)$$
entspricht, da dann alle neuen von $s$ ausgehenden Kanten vollständig ausgelastet sind.
\points{4}
\item
\begin{enumerate}
\item Sei $f$ ein zulässiger b-Fluss in $G$. Man definiert $f'$ auf $G'$ durch:
$$
f'(e)= \begin{cases}
f(e) &e\in E\\
b(v) &e=(s\rightarrow v), b(v) >0\\
-b(v) &e=(v\rightarrow t), b(v) <0\\
\end{cases}
$$
Für jeden Knoten $v\in V$ gilt in $G'$:
$$\textnormal{Nettozufluss}_{f'}(v)=\textnormal{Nettozufluss}_{f}(v)-b(v)=0$$
Also ist $f'$ ein zulässiger $s$-$t$-Fluss mit Wert $|f'|=\sum_{v:b(v)>0}b(v)$
\item Sei $f'$ ein $s$-$t$-Fluss in $G'$. Da sein Wert maximal ist, sind alle Kanten zu $s$ und $t$ voll ausgelastet.\\
Für die Einschränkung $f:=f'\vert_E$ betrachtet man die Flusserhaltung jedes Knotens $v\in V$ in $G'$:
$$\textnormal{Nettozufluss}_f(v)=\textnormal{Nettozufluss}_{f'}(v)-[\textnormal{Beitrag der neuen Kante]}=0-(-b(v))=b(v)$$
Also ist $f$ ein zulässiger b-Fluss in $G$.
\end{enumerate}
\points{2}
\end{tasks} \end{tasks}