% % fw.tex -- Durchführung des Floyd-Warshall Algorithmus % % (c) 2019 Prof Dr Andreas Müller, Hochschule Rapperswil % \bgroup \definecolor{wegelb}{rgb}{1,0.6,0} \definecolor{weghell}{rgb}{1,0.9,0.6} \definecolor{darkgreen}{rgb}{0,0.6,0} \begin{columns}[t] \begin{column}{0.44\hsize} \begin{center} \begin{tikzpicture}[>=latex] \def\r{2.2} \coordinate (A) at ({\r*cos(-54+0*72)},{\r*sin(-54+0*72)}); \coordinate (C) at ({\r*cos(-54+1*72)},{\r*sin(-54+1*72)}); \coordinate (D) at ({\r*cos(-54+2*72)},{\r*sin(-54+2*72)}); \coordinate (B) at ({\r*cos(-54+3*72)},{\r*sin(-54+3*72)}); \coordinate (E) at ({\r*cos(-54+4*72)},{\r*sin(-54+4*72)}); \def\knoten#1#2#3{ \fill[color=#3] #1 circle[radius=0.3]; \draw[line width=1pt] #1 circle[radius=0.3]; \node at #1 {$#2$}; } \def\kante#1#2#3{ \draw[->,line width=1pt,shorten >= 0.3cm,shorten <= 0.3cm] #1 -- #2; \fill[color=white,opacity=0.7] ($0.5*#1+0.5*#2$) circle[radius=0.22]; \node at ($0.5*#1+0.5*#2$) {$#3$}; } % Wege über 1 % 3--1--5 \only<4>{ \draw[->,line width=7pt,color=red!50] (C)--(A)--(E); } % Wege über 2 % 5--2--3 \only<6>{ \draw[->,line width=7pt,color=red!50] (E)--(B)--(C); } % 5--2--4 \only<7>{ \draw[->,line width=7pt,color=red!50] (E)--(B)--(D); \draw[->,line width=7pt,color=blue!50,dashed] (E)--(D); } % Wege über 3 % 2--3--1 \only<9>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A); } % 2--3--5 \only<10>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A)--(E); } % 4--3--1 \only<11>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A); } % 4--3--5 \only<12>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A)--(E); } % 5--3--1 \only<13>{ \draw[->,line width=7pt,color=red!50] (E)--(B)--(C)--(A); } % 5--3--5 \only<14>{ \draw[->,line width=7pt,color=red!50] (E)--(B)--(C)--(A)--(E); } % Wege über 4 % 2--4--1 \only<16>{ \draw[->,line width=7pt,color=red!50] (B)--(D)--(C)--(A); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(C)--(A); } % 2--4--3 \only<17>{ \draw[->,line width=7pt,color=red!50] (B)--(D)--(C); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(C); } % 2--4--5 \only<18>{ \draw[->,line width=7pt,color=red!50] (B)--(D)--(C)--(A)--(E); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(C)--(A)--(E); } % 5--4--1 \only<19>{ \draw[->,line width=7pt,color=red!50] (E)--(D)--(C)--(A); \draw[->,line width=7pt,color=blue!50,dashed] (E)--(B)--(C)--(A); } % 5--4--3 \only<20>{ \draw[->,line width=7pt,color=red!50] (E)--(D)--(C); \draw[->,line width=7pt,color=blue!50,dashed] (E)--(B)--(C); } % 5--4--5 \only<21>{ \draw[->,line width=7pt,color=red!50] (E)--(D)--(C)--(A)--(E); \draw[->,line width=7pt,color=blue!50,dashed] (E)--(B)--(C)--(A)--(E); } % 1--5--1 \only<23>{ \draw[->,line width=7pt,color=red!50] (A)--(E)--(B)--(C)--(A); } % 1--5--2 \only<24>{ \draw[->,line width=7pt,color=red!50] (A)--(E)--(B); } % 1--5--3 \only<25>{ \draw[->,line width=7pt,color=red!50] (A)--(E)--(B)--(C); } % 1--5--4 \only<26>{ \draw[->,line width=7pt,color=red!50] (A)--(E)--(D); } % 2--5--1 \only<27>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A)--(E)--(D)--(C)--(A); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(C)--(A); } % 2--5--2 \only<28>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A)--(E)--(B); } % 2--5--3 \only<29>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A)--(E)--(D)--(C); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(C); } % 2--5--4 \only<30>{ \draw[->,line width=7pt,color=red!50] (B)--(C)--(A)--(E)--(D); \draw[->,line width=7pt,color=blue!50,dashed] (B)--(D); } % 3--5--1 \only<31>{ \draw[->,line width=7pt,color=red!50] (C)--(A)--(E)--(D)--(C)--(A); \draw[->,line width=7pt,color=blue!50,dashed] (C)--(A); } % 3--5--2 \only<32>{ \draw[->,line width=7pt,color=red!50] (C)--(A)--(E)--(B); } % 3--5--3 \only<33>{ \draw[->,line width=7pt,color=red!50] (C)--(A)--(E)--(B)--(C); } % 3--5--4 \only<34>{ \draw[->,line width=7pt,color=red!50] (C)--(A)--(E)--(D); } % 4--5--1 \only<35>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A)--(E)--(D)--(C)--(A); \draw[->,line width=7pt,color=blue!50,dashed] (D)--(C)--(A); } % 4--5--2 \only<36>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A)--(E)--(B); } % 4--5--3 \only<37>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A)--(E)--(D)--(C); \draw[->,line width=7pt,color=blue!50,dashed] (D)--(C); } % 4--5--4 \only<38>{ \draw[->,line width=7pt,color=red!50] (D)--(C)--(A)--(E)--(D); } \uncover<40>{ \draw[->,color=red!50,line width=7pt] (B)--(C)--(A)--(E)--(D); } \kante{(A)}{(E)}{1} \kante{(B)}{(C)}{2} \kante{(B)}{(D)}{13} \kante{(C)}{(A)}{3} \kante{(D)}{(C)}{6} \kante{(E)}{(B)}{5} \kante{(E)}{(D)}{6} \only<1>{ \knoten{(A)}{}{white} \knoten{(B)}{}{white} \knoten{(C)}{}{white} \knoten{(D)}{}{white} \knoten{(E)}{}{white} } \only<2->{ \knoten{(A)}{1}{white} \knoten{(B)}{2}{white} \knoten{(C)}{3}{white} \knoten{(D)}{4}{white} \knoten{(E)}{5}{white} } \only<4>{ \knoten{(A)}{1}{darkgreen!50} } \only<6-7>{ \knoten{(B)}{2}{darkgreen!50} } \only<9-14>{ \knoten{(C)}{3}{darkgreen!50} } \only<16-21>{ \knoten{(D)}{4}{darkgreen!50} } \only<23-38>{ \knoten{(E)}{5}{darkgreen!50} } \end{tikzpicture} \end{center} \begin{block}{Aufgabe} Finde den kürzesten Weg von 2 nach 4 \end{block} \end{column} \begin{column}{0.5\hsize} \begin{center} \begin{tikzpicture}[>=latex,scale=0.8] \def\punkt#1#2{ ({#2-0.5},{0.5-(#1)}) } \def\punktoff#1#2{ ({#2-0.7},{0.7-(#1)}) } \def\feld#1#2#3{ \ifthenelse{\boolean{wegweiser}}{ \fill[color=white] ({#2-1},{1-#1}) rectangle ({#2-0.45},{0.45-#1}); \node at \punktoff{#1}{#2} {$#3$}; }{ \fill[color=white] ({#2-1},{1-#1}) rectangle ({#2},{-#1}); \node at \punkt{#1}{#2} {$#3$}; } } \def\verbindung#1#2#3{ \draw[->,line width=5pt,color=red!20,shorten >= 0.2cm,shorten <= 0.2cm] \punkt{#1}{#2}--\punkt{#2}{#3}; \node at (5,-5.5) [left] {$#1\rightsquigarrow #2\rightsquigarrow #3$\strut}; } \def\Infty{{}} \def\wegweiser#1#2#3{ \ifthenelse{\boolean{wegweiser}}{ \ifnum #2 = #3 \fill[color=weghell] ({#2-0.45},{0.45-#1}) rectangle ({#2-0.05},{0.05-#1}); \else \fill[color=wegelb] ({#2-0.45},{0.45-#1}) rectangle ({#2-0.05},{0.05-#1}); \fi \node at ({#2-0.25},{0.25-#1}) {\tiny #3}; }{} } % direkte Wege \uncover<3->{ \feld{1}{1}{\Infty} \feld{1}{2}{\Infty} \feld{1}{3}{\Infty} \feld{1}{4}{\Infty} \feld{1}{5}{1} \wegweiser{1}{5}{5} \feld{2}{1}{\Infty} \feld{2}{2}{\Infty} \feld{2}{3}{2} \wegweiser{2}{3}{3} \feld{2}{4}{13} \wegweiser{2}{4}{4} \feld{2}{5}{\Infty} \feld{3}{1}{3} \wegweiser{3}{1}{1} \feld{3}{2}{\Infty} \feld{3}{3}{\Infty} \feld{3}{4}{\Infty} \feld{3}{5}{\Infty} \feld{4}{1}{\Infty} \feld{4}{2}{\Infty} \feld{4}{3}{6} \wegweiser{4}{3}{3} \feld{4}{4}{\Infty} \feld{4}{5}{\Infty} \feld{5}{1}{\Infty} \feld{5}{2}{5} \wegweiser{5}{2}{2} \feld{5}{3}{\Infty} \feld{5}{4}{6} \wegweiser{5}{4}{4} \feld{5}{5}{\Infty} } \uncover<3-3>{ \node at (-0.8,-5.5) [right] {direkte Verbindungen}; } \uncover<4-4>{ \node[color=darkgreen] at (-0.8,-5.5) [right] {Wege über $1$:\strut}; } % Wege über 1 % 3-1-5 \uncover<4>{ \verbindung{3}{1}{5} \feld{3}{5}{\color{red}4} \wegweiser{3}{5}{1} } \uncover<5->{ \feld{3}{5}{4} \wegweiser{3}{5}{1} } \uncover<6-7>{ \node[color=darkgreen] at (-0.8,-5.5) [right] {Wege über $2$:\strut}; } % Wege über 2 % 5-2-3 \uncover<6>{ \verbindung{5}{2}{3} \feld{5}{3}{\color{red}7} \wegweiser{5}{3}{2} } \uncover<7->{ \feld{5}{3}{7} \wegweiser{5}{3}{2} } % 5-2-4 \uncover<7>{ \verbindung{5}{2}{4} \feld{5}{4}{\color{blue}6} } \uncover<9-14>{ \node[color=darkgreen] at (-0.8,-5.5) [right] {Wege über $3$:\strut}; } % Wege über 3 % 2-3-1 \uncover<9>{ \verbindung{2}{3}{1} \feld{2}{1}{\color{red}5} \wegweiser{2}{1}{3} } \uncover<10->{ \feld{2}{1}{5} \wegweiser{2}{1}{3} } % 2-3-5 \uncover<10>{ \verbindung{2}{3}{5} \feld{2}{5}{\color{red}6} \wegweiser{2}{5}{3} } \uncover<11->{ \feld{2}{5}{6} \wegweiser{2}{5}{3} } % 4-3-1 \uncover<11>{ \verbindung{4}{3}{1} \feld{4}{1}{\color{red}9} \wegweiser{4}{1}{3} } \uncover<12->{ \feld{4}{1}{9} \wegweiser{4}{1}{3} } % 4-3-5 \uncover<12>{ \verbindung{4}{3}{5} \feld{4}{5}{\color{red}10} \wegweiser{4}{5}{3} } \uncover<13->{ \feld{4}{5}{10} \wegweiser{4}{5}{3} } % 5-3-1 \uncover<13>{ \verbindung{5}{3}{1} \feld{5}{1}{\color{red}10} \wegweiser{5}{1}{2} } \uncover<14->{ \feld{5}{1}{10} \wegweiser{5}{1}{2} } % 5-3-5 \uncover<14>{ \verbindung{5}{3}{5} \feld{5}{5}{\color{red}11} \wegweiser{5}{5}{2} } \uncover<15->{ \feld{5}{5}{11} \wegweiser{5}{5}{2} } \uncover<16-21>{ \node[color=darkgreen] at (-0.8,-5.5) [right] {Wege über $4$:\strut}; } % Wege über 4 % 2-4-1 \uncover<16>{ \verbindung{2}{4}{1} \feld{2}{1}{\color{blue}5} } % 2-4-3 \uncover<17>{ \verbindung{2}{4}{3} \feld{2}{3}{\color{blue}2} } % 2-4-5 \uncover<18>{ \verbindung{2}{4}{5} \feld{2}{5}{\color{blue}6} } % 5-4-1 \uncover<19>{ \verbindung{5}{4}{1} \feld{5}{1}{\color{blue}10} } % 5-4-3 \uncover<20>{ \verbindung{5}{4}{3} \feld{5}{3}{\color{blue}7} } % 5-4-5 \uncover<21>{ \verbindung{5}{4}{5} \feld{5}{5}{\color{blue}11} } % Wege über 5 \uncover<23-38>{ \node[color=darkgreen] at (-0.8,-5.5) [right] {Wege über $5$:\strut}; } % Wege über 5 % 1-5-1 \uncover<23>{ \verbindung{1}{5}{1} \feld{1}{1}{\color{red}11} \wegweiser{1}{1}{5} } \uncover<24->{ \feld{1}{1}{11} \wegweiser{1}{1}{5} } % 1-5-2 \uncover<24>{ \verbindung{1}{5}{2} \feld{1}{2}{\color{red}6} \wegweiser{1}{2}{5} } \uncover<25->{ \feld{1}{2}{6} \wegweiser{1}{2}{5} } % 1-5-3 \uncover<25>{ \verbindung{1}{5}{3} \feld{1}{3}{\color{red}8} \wegweiser{1}{3}{5} } \uncover<26->{ \feld{1}{3}{8} \wegweiser{1}{3}{5} } % 1-5-4 \uncover<26>{ \verbindung{1}{5}{4} \feld{1}{4}{\color{red}7} \wegweiser{1}{4}{5} } \uncover<27->{ \feld{1}{4}{7} \wegweiser{1}{4}{5} } % 2-5-1 \uncover<27>{ \verbindung{2}{5}{1} \feld{2}{1}{\color{blue}5} } % 2-5-2 \uncover<28>{ \verbindung{2}{5}{2} \feld{2}{2}{\color{red}11} \wegweiser{2}{2}{3} } \uncover<29->{ \feld{2}{2}{11} \wegweiser{2}{2}{3} } % 2-5-3 \uncover<29>{ \verbindung{2}{5}{3} \feld{2}{3}{\color{blue}2} } % 2-5-4 \uncover<30>{ \verbindung{2}{5}{4} \feld{2}{4}{\color{red}12} \wegweiser{2}{4}{3} } \uncover<31->{ \feld{2}{4}{12} \wegweiser{2}{4}{3} } % 3-5-1 \uncover<31>{ \verbindung{3}{5}{1} \feld{3}{1}{\color{blue}3} } % 3-5-2 \uncover<32>{ \verbindung{3}{5}{2} \feld{3}{2}{\color{red}9} \wegweiser{3}{2}{1} } \uncover<33->{ \feld{3}{2}{9} \wegweiser{3}{2}{1} } % 3-5-3 \uncover<33>{ \verbindung{3}{5}{3} \feld{3}{3}{\color{red}11} \wegweiser{3}{3}{1} } \uncover<34->{ \feld{3}{3}{11} \wegweiser{3}{3}{1} } % 3-5-4 \uncover<34>{ \verbindung{3}{5}{4} \feld{3}{4}{\color{red}10} \wegweiser{3}{4}{1} } \uncover<35->{ \feld{3}{4}{10} \wegweiser{3}{4}{1} } % 4-5-1 \uncover<35>{ \verbindung{4}{5}{1} \feld{4}{1}{\color{blue}9} } % 4-5-2 \uncover<36>{ \verbindung{4}{5}{2} \feld{4}{2}{\color{red}15} \wegweiser{4}{2}{3} } \uncover<37->{ \feld{4}{2}{15} \wegweiser{4}{2}{3} } % 4-5-3 \uncover<37>{ \verbindung{4}{5}{3} \feld{4}{3}{\color{blue}6} } % 4-5-4 \uncover<38>{ \verbindung{4}{5}{4} \feld{4}{4}{\color{red}16} \wegweiser{4}{4}{3} } \uncover<39->{ \feld{4}{4}{16} \wegweiser{4}{4}{3} } \uncover<3->{ \foreach \x in {0,...,5}{ \draw[line width=0.7pt] (\x,0.8)--(\x,-5); } \foreach \y in {0,...,-5}{ \draw[line width=0.7pt] (-0.8,\y)--(5,\y); } \draw[line width=1.4pt] (0,0)--(5,0)--(5,-5)--(0,-5)--cycle; \node at (0.5,0.5) {$1$}; \node at (1.5,0.5) {$2$}; \node at (2.5,0.5) {$3$}; \node at (3.5,0.5) {$4$}; \node at (4.5,0.5) {$5$}; \node at (-0.5,-0.5) {$1$}; \node at (-0.5,-1.5) {$2$}; \node at (-0.5,-2.5) {$3$}; \node at (-0.5,-3.5) {$4$}; \node at (-0.5,-4.5) {$5$}; } \end{tikzpicture} \end{center} \uncover<40>{ \vspace{-22pt} \begin{block}{Lösung} Der kürzeste Weg von 2 nach 4 ist 2---3---1---5---4 \end{block} } \end{column} \end{columns} \egroup