Skip to content
Snippets Groups Projects
Commit 8f6d3a7d authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vortragsfolien, Tafelbilder und Text-Notizen 25.6.2018

parent 04e0acdb
Branches
No related tags found
No related merge requests found
../common/Zeichen_123.pdf
\ No newline at end of file
File added
% ad-20180625.pdf - Lecture Slides on Algorithms and Data Structures in C/C++
% Copyright (C) 2018 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Datenorganisation: balancierte Bäume
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{pdftricks}
\usepackage{amsfonts}
\begin{psinputs}
\usepackage[latin1]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{graphicx}
\usepackage{pstricks,pst-circ,pst-plot}
\psset{unit=0.6cm}
\psset{linewidth=0.03}
\end{psinputs}
\newcommand{\underconstruction}{%
\begin{picture}(0,0)(0,3)
\color{black}
\put(7,-2.2){\makebox(0,0)[b]{\includegraphics[width=1.5cm]{Zeichen_123.pdf}}}
\put(7,-2.5){\makebox(0,0)[t]{\shortstack{Änderungen\\vorbehalten}}}
\end{picture}}
\lstdefinestyle{math}{basicstyle=\footnotesize\color{structure},
language={},
columns=fixed,
moredelim=**[is][\color{darkred}]{¡}{¿},
moredelim=**[is][\color{darkgreen}]{°}{¿}}
\title{Algorithmen und Datenstrukturen in C/C++}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{25.\ Juni 2018}
\begin{document}
\maketitleframe
\nosectionnonumber{\inserttitle}
\begin{frame}
\shownosectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\underconstruction
\hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/ad.git}}}
\item[\textbf{2}] \textbf{Einführung in C++}
\item[\textbf{3}] \textbf{Datenorganisation}
\item[\textbf{4}] \textbf{Datenkodierung}
\item[\textbf{5}] \textbf{Hardwarenahe Algorithmen}
\item[\textbf{6}] \textbf{Optimierung}
\begin{itemize}
\item[6.1] Einführung
\item[6.2] Beispiel: Treppenbau
\item[6.3] Beispiel: Rasenmähroboter
\color{medgreen}
\item[6.4] Beispiel: Routenplanung
\item[6.5] Lineare Optimierung
\color{orange}
\item[6.6] Problem des Handlungsreisenden
\end{itemize}
\color{gray}
\item[\textbf{7}] \textbf{Numerik}
\end{itemize}
\end{frame}
\setcounter{section}{5}
\section{Optimierung}
\setcounter{subsection}{2}
\subsection{Beispiel: Routenplanung}
\begin{frame}
\showsection
\showsubsection
\begin{itemize}
\item
Karte bekannt
\item
Hindernissen ausweichen
\item
gewichteter Graph: Dijkstra, A*
\end{itemize}
\end{frame}
\subsection{Lineare Optimierung}
\begin{frame}
\showsection
\showsubsection
\begin{itemize}
\item
auch: \newterm{Lineare Programmierung}
\item
Anwendungen: Wirtschaftsmathematik
\item
mehrere Bedingungen der Form $a_1 x_1 + \dots + a_n x_n \le b_n$
\item
Optimierung einer Kostenfunktion $c_1 x_1 + \dots + c_n x_n$
\item
geometrische Interpretation:\\
Der zulässige Bereich ist ein $n$-dimensionales Polyeder.
\item
Simplex-Verfahren:\\
von Ecke zu Ecke hangeln, bis keine Verbesserung mehr möglich
\item
Komplexität: $\mathcal{O}(2^n)$; in der Praxis meist schneller
\end{itemize}
\end{frame}
\subsection{Problem des Handlungsreisenden}
\begin{frame}
\showsection
\showsubsection
\begin{itemize}
\item
\newterm{NP-vollständiges\/} Problem:
aufwendiger als $\mathcal{O}(n^k)$, egal für welches $k$
\item
Anwendungen: Tourenplanung, Layout integrierter Schaltkreise, Gentechnik
\end{itemize}
\end{frame}
\nosectionnonumber{\inserttitle}
\begin{frame}
\shownosectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\underconstruction
\hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/ad.git}}}
\item[\textbf{2}] \textbf{Einführung in C++}
\item[\textbf{3}] \textbf{Datenorganisation}
\item[\textbf{4}] \textbf{Datenkodierung}
\item[\textbf{5}] \textbf{Hardwarenahe Algorithmen}
\begin{itemize}
\item[5.1] Zeichnen von Linien
\item[5.2] CORDIC
\item[5.3] FFT
\end{itemize}
\item[\textbf{6}] \textbf{Optimierung}
\begin{itemize}
\item[6.1] Einführung
\item[6.2] Beispiel: Treppenbau
\item[6.3] Beispiel: Rasenmähroboter
\color{medgreen}
\item[6.4] Beispiel: Routenplanung
\item[6.5] Lineare Optimierung
\item[6.6] Problem des Handlungsreisenden
\end{itemize}
\color{gray}
\item[\textbf{7}] \textbf{Numerik}
\end{itemize}
\end{frame}
\end{document}
Problem des Handlungsreisenden, 25.06.2018, 09:35:25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nichtdeterministische Turingmaschine: dt. Wikipedia
führt gewissermaßen beide Zweige eines "if" parallel aus
--> Bedeutung für die Praxis: Im Landau-Symbol verschwindet ein O(2^n).
NP-vollständig: gehört nachweislich
zu den schwersten NP-Problemen
Sphero-Problem, 25.06.2018, 13:54:08
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 gelbe Würfel und ein Ziel in der Ebene
Sphero soll sie möglichst schnell alle berühren
in der Mitte ein Hindernis (Zylinder)
Status-Vektor
- Position des Spheros
- Position der Würfel
- schon berührt
- eigener Geschwindigkeitsvektor
Aktions-Vektor
- Richtung wählen (8 Himmelsrichtungen, damit die Gleichung schneller konvergiert)
- 3 Möglichkeiten, die Kraft einzustellen: 0 (rollt weiter), halbe Kraft, volle Kraft
Status- und Aktions-Vektor werden der "q function" übergeben.
Diese gibt einen "reward" zurück.
Das neuronale Netz lernt dann die "q function"
Fertig:
- Darstellung der Physik in der Game-Engine Unity
Sphero und Würfel sind "game objects" vom Typ "rigid body" (Würfel verschwinden bei Berührung)
- Neuronales Netz läuft (Python, Tensor Flow)
- lernt (noch nicht optimiert)
Noch zu erledigen: Vergleich mit klassischem Algorithmus
Klausur-Korrektur-Algorithmus, 25.06.2018, 15:23:51
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Erster (und aufwendigster) Durchgang:
1. Während des Korrigierens typische Fehler notieren
2. Notieren, wieviele Punkte das jeweils bedeutet
3. Eine Software berechnet daraus für jede Klausur
die erreichte Punktzahl sowie die Note.
Algorithmus, um zu einer möglichst fairen Bewertung zu kommen:
- Die unter 2 erstellte Tabelle auf Konsistenz prüfen und anpassen.
(Beispiel: "Spezialfall nicht berücksichtigt" sollte mehr Punkte geben als
"Spezialfall nicht berücksichtigt, weitere Fehler".)
- Wenn sich dadurch eine Note ändert, den Einzelfall prüfen,
welche Note angemessener erscheint.
- Wenn sich keine wesentlichen Änderungen der Einzelbewertungen mehr ergeben,
ist die Bewertung stabil hinsichtlich kleinerer Abweichungen
und damit hoffentlich fair.
Die Software (bewert.pas), die bei der Auswertung der Notizen hilft, ist hauptsächtlich
für String-Verarbeitung zuständig. Sie zu schreiben, war i.w. Fleißarbeit.
Der eigentliche Algorithmus ist hier nicht in der Software realisiert,
sondern in der Art, wie der Mensch die Software einsetzt.
v = P # vollständig richtig
ü = P # vollständig richtig, zusätzlich was Überflüssiges
u = P # vollständig richtig, zusätzlich was Falsches
+ = P # übererfüllt
* = P + 1 # deutlich übererfüllt
[...]
x @ 1.e = P * 0.5 # Spezialfälle "am Anfang" und "am Ende" nicht berücksichtigt
X @ 1.e = 1 # Spezialfälle "am Anfang" und "am Ende" nicht berücksichtigt, weitere Fehler
e @ 1.e = P - 1 # Spezialfall "am Ende" nicht berücksichtigt
E @ 1.e = P * 0.5 # Spezialfall "am Ende" nicht berücksichtigt, weitere Fehler
s @ 1.e = P * 0.5 # Sortieralgorithmus statt Einfügen
a @ 1.e = P - 1 # Abbruch nach Einfügen fehlt
A @ 1.e = P * 0.5 # Abbruch nach Einfügen fehlt, weitere Fehler
r @ 1.e = P - 1 # rückwärts sortiert
q @ 1.e = P * 0.5 # Versuch, Quicksort zu implementieren, schlägt fehl.
[...]
>> 40 = 1.0
[...]
>> 20 = 4.0
>> 0 = n.b.
@@ Aufgabe 1 1 1 1 1 1 1 2 2 2 2 3 3 4
@@ Teilaufgabe a b c d e f g a b c d a b x
== Punkte 3 2 2 2 4 1 3 2 4 2 3 2 4 8 ========
# ----------------------------------------------------------------------
Matr.-Nr., Name, Vorname * v * b v g + v + v * m v c
Matr.-Nr., Name, Vorname g v g B x v g v v l g m g c
Matr.-Nr., Name, Vorname 1 0 B b 1 v b v v b v : . x
[...]
Matr.-Nr., Name, Vorname + L + B + v o + + * * + v X
Matr.-Nr., Name, Vorname . . . . . . Q g . . . 2 0 0
Matr.-Nr., Name, Vorname u L g B r : v g v v * m c B
Matr.-Nr., Name, Vorname v L s B 1 : v * d v 1 * v C
Matr.-Nr., Name, Vorname v v e B A 0 0 v d l 1 m a 1
Matr.-Nr., Name, Vorname g g . s E v v g d . 1 v c c
Matr.-Nr., Name, Vorname v L g B v : 0 g d l g v v t
[...]
Die Software berechnet daraus:
@@ Aufgabe 1 1 1 1 1 1 1 2 2 2 2 3 3 4
@@ Teilaufgabe a b c d e f g a b c d a b x
== Punkte 3 2 2 2 4 1 3 2 4 2 3 2 4 8 ========
# ----------------------------------------------------------------------
Matr.-Nr., Name, Vorname * v * b v g + v + v * m v c 41 1.0 4/3 2/2 3/2 1/2 4/4 1/1 3/3 2/2 4/4 2/2 4/3 2/2 4/4 5/8
Matr.-Nr., Name, Vorname g v g B x v g v v l g m g c 35 1.7 3/3 2/2 2/2 1/2 2/4 1/1 3/3 2/2 4/4 1/2 3/3 2/2 4/4 5/8
Matr.-Nr., Name, Vorname 1 0 B b 1 v b v v b v : . x 19 n.b 1/3 0/2 1/2 1/2 1/4 1/1 1/3 2/2 4/4 1/2 3/3 0/2 0/4 3/8
[...]
Matr.-Nr., Name, Vorname + L + B + v o + + * * + v X 38 1.3 3/3 1/2 2/2 1/2 4/4 1/1 3/3 2/2 4/4 3/2 4/3 2/2 4/4 4/8
Matr.-Nr., Name, Vorname . . . . . . Q g . . . 2 0 0 5 n.b 0/3 0/2 0/2 0/2 0/4 0/1 2/3 2/2 0/4 0/2 0/3 1/2 0/4 0/8
Matr.-Nr., Name, Vorname u L g B r : v g v v * m c B 33 2.0 3/3 1/2 2/2 1/2 3/4 0/1 3/3 2/2 4/4 2/2 4/3 2/2 2/4 4/8
Matr.-Nr., Name, Vorname v L s B 1 : v * d v 1 * v C 29 2.7 3/3 1/2 1/2 1/2 1/4 0/1 3/3 3/2 2/4 2/2 1/3 3/2 4/4 4/8
Matr.-Nr., Name, Vorname v v e B A 0 0 v d l 1 m a 1 20 4.0 3/3 2/2 1/2 1/2 2/4 0/1 0/3 2/2 2/4 1/2 1/3 2/2 1/4 2/8
Matr.-Nr., Name, Vorname g g . s E v v g d . 1 v c c 26 3.0 3/3 2/2 0/2 1/2 2/4 1/1 3/3 2/2 2/4 0/2 1/3 2/2 2/4 5/8
Matr.-Nr., Name, Vorname v L g B v : 0 g d l g v v t 30 2.3 3/3 1/2 2/2 1/2 4/4 0/1 0/3 2/2 2/4 1/2 3/3 2/2 4/4 5/8
[...]
../common/logo-hochschule-bochum-cvh-text.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
20180625/photo-20180625-151852.jpg

144 KiB

20180625/photo-20180625-151956.jpg

119 KiB

20180625/photo-20180625-152020.jpg

120 KiB

20180625/photo-20180625-152128.jpg

98.3 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment