<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.algo.informatik.tu-darmstadt.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dkratschmann</id>
	<title>Algowiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.algo.informatik.tu-darmstadt.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dkratschmann"/>
	<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/Special:Contributions/Dkratschmann"/>
	<updated>2026-04-30T09:44:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Array_list:_insert_at_position&amp;diff=1211</id>
		<title>Array list: insert at position</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Array_list:_insert_at_position&amp;diff=1211"/>
		<updated>2014-10-14T19:03:33Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;'''Algorithmic problem:''' Linear sequence: insert at position  '''Prerequisites:''' Parameters: A key &amp;lt;math&amp;gt;\Kappa \in K, a position l \in \{0, \ldots, number()\}&amp;lt;/math&amp;gt;....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Algorithmic problem:''' [[Linear sequence: insert at position]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Parameters: A key &amp;lt;math&amp;gt;\Kappa \in K, a position l \in \{0, \ldots, number()\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxiliary data:'''&lt;br /&gt;
# A natural number sum &amp;lt;math&amp;gt;\in \mathbb{N}_0&amp;lt;/math&amp;gt;, which contains the total number of all elements seen so far in the visited arrays.&lt;br /&gt;
# Two pointers, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p'&amp;lt;/math&amp;gt;, of type &amp;quot;pointer tolist item of type array of component type &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Abstract view ==&lt;br /&gt;
&lt;br /&gt;
'''Invariant:'''After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations:&lt;br /&gt;
# The pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; points to the array at position &amp;lt;math&amp;gt;i+1&amp;lt;/math&amp;gt; in the array list.&lt;br /&gt;
# It is &amp;lt;math&amp;gt;sum = n_1 + \ldots + n_i&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n_j&amp;lt;/math&amp;gt; is the value of the component n of the array list item at position &amp;lt;math&amp;gt;j \in \{1, \ldots,i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' The pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is moved one step forward to the next array.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is sum &amp;lt;math&amp;gt;+ p.n \ge l&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Induction basis==&lt;br /&gt;
&lt;br /&gt;
'''Abstract view:''' Set &amp;lt;math&amp;gt;p:=&amp;lt;/math&amp;gt;first and &amp;lt;math&amp;gt;sum:=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
==Induction step==&lt;br /&gt;
&lt;br /&gt;
'''Abstract view:''' If the position &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; is in the current array, insert &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt; (if the array is full, split it first).&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
# If sum&amp;lt;math&amp;gt;+ p.n &amp;lt; l&amp;lt;/math&amp;gt;:&lt;br /&gt;
## Set sum&amp;lt;math&amp;gt;:=&amp;lt;/math&amp;gt;sum&amp;lt;math&amp;gt;+ p.n&amp;lt;/math&amp;gt;.&lt;br /&gt;
## Set &amp;lt;math&amp;gt;p:=p.next&amp;lt;/math&amp;gt;.&lt;br /&gt;
#Otherwise:&lt;br /&gt;
##If &amp;lt;math&amp;gt;p.n=N&amp;lt;/math&amp;gt;:&lt;br /&gt;
###Create a new array list item and let &amp;lt;math&amp;gt;p'&amp;lt;/math&amp;gt; point to this new list item.&lt;br /&gt;
###Set &amp;lt;math&amp;gt;p'.next=p.next&amp;lt;/math&amp;gt;.&lt;br /&gt;
###Set &amp;lt;math&amp;gt;p.next:=p'&amp;lt;/math&amp;gt;.&lt;br /&gt;
###For &amp;lt;math&amp;gt;j \in \{1, \ldots, \lfloor p.n/2 \rfloor \}&amp;lt;/math&amp;gt;, set &amp;lt;math&amp;gt;p'.A[\lceil p.n/2 \rceil + j]&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p.A[\lceil p.n/2 \rceil + j]:=&amp;lt;/math&amp;gt;void.&lt;br /&gt;
###Set &amp;lt;math&amp;gt;p'.n:=\lfloor p.n/2 \rfloor&amp;lt;/math&amp;gt; and, afterwards, &amp;lt;math&amp;gt;p.n:=p.n - \lfloor p.n/2 \rfloor&amp;lt;/math&amp;gt;.&lt;br /&gt;
## If &amp;lt;math&amp;gt;l - sum &amp;gt; p.n&amp;lt;/math&amp;gt;:&lt;br /&gt;
### Set &amp;lt;math&amp;gt;m:=l - sum - p.n + 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
### Set &amp;lt;math&amp;gt;p:=p'&amp;lt;/math&amp;gt;.&lt;br /&gt;
## Otherwise, set &amp;lt;math&amp;gt;m:=l - sum + 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
## For &amp;lt;math&amp;gt;j=p.n, \ldots, m&amp;lt;/math&amp;gt; (in this order), set &amp;lt;math&amp;gt;p.A[j+1]:=p.A[j]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Note that, in an implementation of [[Linear sequence: insert at position]], we may assume &amp;lt;math&amp;gt;l \leq&amp;lt;/math&amp;gt;number(). Therefore, we do not have to care about the end of the list. In the case sum&amp;lt;math&amp;gt;+ p.n &amp;lt; l&amp;lt;/math&amp;gt;, we simply have to update sum and &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;, which is obviously done correctly. So consider the case sum&amp;lt;math&amp;gt;+ p.n \ge l&amp;lt;/math&amp;gt;, which means that the position where &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt; has to be inserted is in the array list item to which &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; currently points. If that array is full, new space must be allocated. Step 2.1 does that and distributes the elements roughly equally over both items. Steps 2.2 - 2.3 ensure that &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; points to the array where to insert &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; identifies the correct insert position. Step 2.4 empties the array component where to insert the new element by moving, exactly one position forward, the value at the position and the values at all later position (which is possible because the array is not full in any case).&lt;br /&gt;
&lt;br /&gt;
==Complexity==&lt;br /&gt;
&lt;br /&gt;
'''Statement:''' Linear in the length of the sequence in the worst case.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
==Further information==&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Array_list:_find&amp;diff=1210</id>
		<title>Array list: find</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Array_list:_find&amp;diff=1210"/>
		<updated>2014-10-14T18:36:29Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;'''Algorithmic problem:''' Linear sequence: find  '''Prerequisites:''' None.  '''Type of algorithm:''' loop  '''Auxiliary data:''' A pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; of type &amp;quot;pointe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Algorithmic problem:''' [[Linear sequence: find]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None.&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxiliary data:''' A pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; of type &amp;quot;pointer to list item of array lists of compnent type &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Abstract view ==&lt;br /&gt;
&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations:&lt;br /&gt;
# The pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; points to the list item at position &amp;lt;math&amp;gt;i + 1&amp;lt;/math&amp;gt; (or is void if no such item exists).&lt;br /&gt;
# The first &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; arrays in the list do not contain &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Variant:''' The pointer &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is moved one step forward to the next array list item.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' Either &amp;lt;math&amp;gt;p=&amp;lt;/math&amp;gt;void or, otherwise, &amp;lt;math&amp;gt;\Kappa \in \{p.A[1], \ldots, p.A[p.n]\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Induction basis == &lt;br /&gt;
&lt;br /&gt;
'''Abstract view:''' Set &amp;lt;math&amp;gt;p:=&amp;lt;/math&amp;gt; first.&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
# Terminate the algorithm if the end of the list is reached or, otherwise, if &amp;lt;math&amp;gt;\Kappa&amp;lt;/math&amp;gt; is found in the current array.&lt;br /&gt;
# Otherwise, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is moved one step forward to the next array.&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
# If &amp;lt;math&amp;gt;p=&amp;lt;/math&amp;gt;void, terminate the algorithm and return &amp;lt;math&amp;gt;false&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Otherwise, if &amp;lt;math&amp;gt;p.A[j] = \Kappa&amp;lt;/math&amp;gt; for some &amp;lt;math&amp;gt;j \in \{1, \ldots, p.n\}&amp;lt;/math&amp;gt;, set &amp;lt;math&amp;gt;p:=p.next&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
&lt;br /&gt;
'''Statement:''' Linear in the length of the sequence in the worst case.&lt;br /&gt;
&lt;br /&gt;
'''Proff:''' Obvious.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Maximum_spanning_forest&amp;diff=698</id>
		<title>Maximum spanning forest</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Maximum_spanning_forest&amp;diff=698"/>
		<updated>2014-10-06T20:01:22Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Input ==&lt;br /&gt;
# An [[undirected graph]] &amp;lt;math&amp;gt;G = (V,E)&amp;lt;/math&amp;gt;, not necessarily connected.&lt;br /&gt;
# An edge length &amp;lt;math&amp;gt;l(e) \in \mathbb{R}_0^+&amp;lt;/math&amp;gt; for each edge &amp;lt;math&amp;gt;e \in E&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
An [[undirected forest]] &amp;lt;math&amp;gt; F= (V,E_F)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;E_F \subseteq E&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
&lt;br /&gt;
'''Maximize:''' &amp;lt;math&amp;gt;\sum{}{}_{e \in E_F}l(e)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
&lt;br /&gt;
Polynomial.&lt;br /&gt;
&lt;br /&gt;
== Known algorithms ==&lt;br /&gt;
&lt;br /&gt;
[[Kruskal]]&lt;br /&gt;
&lt;br /&gt;
== Known variants ==&lt;br /&gt;
&lt;br /&gt;
== Remark ==&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Maximum_spanning_forest&amp;diff=697</id>
		<title>Maximum spanning forest</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Maximum_spanning_forest&amp;diff=697"/>
		<updated>2014-10-06T20:01:03Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;== Input == # An undirected graph &amp;lt;math&amp;gt;G = (V,E)&amp;lt;/math&amp;gt;, not necessarily connected. # An edge length &amp;lt;math&amp;gt;l(e) \in \mathbb{R}_0^+&amp;lt;/math&amp;gt; for each edge &amp;lt;math&amp;gt;e \in E&amp;lt;/mat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Input ==&lt;br /&gt;
# An [[undirected graph]] &amp;lt;math&amp;gt;G = (V,E)&amp;lt;/math&amp;gt;, not necessarily connected.&lt;br /&gt;
# An edge length &amp;lt;math&amp;gt;l(e) \in \mathbb{R}_0^+&amp;lt;/math&amp;gt; for each edge &amp;lt;math&amp;gt;e \in E&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
An [[undirected forest]] &amp;lt;math&amp;gt; F= (V,E_F)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;E_F \subseteq E&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
&lt;br /&gt;
'''Maximize:''' &amp;lt;math&amp;gt;\sum{}{}_{e \in E_F}l(e)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
&lt;br /&gt;
Polynomial&lt;br /&gt;
&lt;br /&gt;
== Known algorithms ==&lt;br /&gt;
&lt;br /&gt;
[[Kruskal]]&lt;br /&gt;
&lt;br /&gt;
== Known variants ==&lt;br /&gt;
&lt;br /&gt;
== Remark ==&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Shortest_paths_by_repeated_squaring&amp;diff=696</id>
		<title>Shortest paths by repeated squaring</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Shortest_paths_by_repeated_squaring&amp;diff=696"/>
		<updated>2014-10-06T19:50:53Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;'''Algorithmic problem:''' All pairs shortest paths  '''Prerequisites:''' None  '''Type of algorithm:''' loop # A distance-valued &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt;-matrix &amp;lt;mat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt;-matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;. The eventual contents of &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; will be returned as the result of the algorithm.&lt;br /&gt;
# A &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt;-matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;M_0(v,w)&amp;lt;/math&amp;gt;, if &amp;lt;math&amp;gt;(v,w) \in A&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;M_0(v,w)=+\infty&amp;lt;/math&amp;gt;, otherwise.&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
&lt;br /&gt;
== Abstract view ==&lt;br /&gt;
&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, it is &amp;lt;math&amp;gt;M=M_0^{2i}&amp;lt;/math&amp;gt;, where powers of a matrix are defined as [[Path]].&lt;br /&gt;
&lt;br /&gt;
'''Variant:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;\lceil log_2 |V| \rceil&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
&lt;br /&gt;
'''Abstract view:''' Initiallized &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; by setting&lt;br /&gt;
* &amp;lt;math&amp;gt;M(v,w) = 0&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;v \in V&amp;lt;/math&amp;gt;,&lt;br /&gt;
* &amp;lt;math&amp;gt;M(v,w) = l(v,w)&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;(v,w) \in A&amp;lt;/math&amp;gt; and&lt;br /&gt;
* &amp;lt;math&amp;gt;M(v,w) = +\infty&amp;lt;/math&amp;gt; otherwise.&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
&lt;br /&gt;
'''Abstract view:''' For all &amp;lt;math&amp;gt;v, w \in V&amp;lt;/math&amp;gt;, set &amp;lt;math&amp;gt;M(v,w) := min \{ M(v,w), min \{ M(v,u) + M(u,w)  | u \in V \setminus_{ \{v,w\} } \} \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Maintenance of the invariant is obvious. The claim now follows from the explanations of powers of the distance matrix as [[Path]] and from the fact that a shortest path cannot have more than &amp;lt;math&amp;gt;|V| &amp;lt;/math&amp;gt; nodes.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
&lt;br /&gt;
'''Statement:''' The asymptotic complexity is &amp;lt;math&amp;gt;\Theta(n^3 log(n))&amp;lt;/math&amp;gt; in the best and worst case.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The main loop terminates after &amp;lt;math&amp;gt;\lceil log_2 n \rceil&amp;lt;/math&amp;gt; iterations. In each iteration of this loop, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entries, and computing one update value requires &amp;lt;math&amp;gt;\Theta(n)&amp;lt;/math&amp;gt; steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=612</id>
		<title>Floyd-Warshall</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=612"/>
		<updated>2014-10-04T14:46:18Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;float:right;margin:0 0 5px 5px; border:1px solid #AAAAAA; width:auto; padding:1em; margin: 0px 0px 1em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em;font-weight:bold;text-align: center;margin:0.2em 0 1em 0&amp;quot;&amp;gt;Floyd-Warshall&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 1em 0; text-align:center&amp;quot;&amp;gt;whatever&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 .5em 0;text-align:center&amp;quot;&amp;gt;[[File:olw_logo1.png|20px]][https://google.de Openlearnware]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
# A constant representing the number of node: &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt; matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
# C An ordering of all nodes, that is, &amp;lt;math&amp;gt;V = \{u_1, \ldots ,u_n\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abstract View ==&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, for &amp;lt;math&amp;gt;v,w \in V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; is the length of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] of the path belong to &amp;lt;math&amp;gt;\{u_1, \ldots , u_i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
'''Abstract view:''' &amp;lt;math&amp;gt;\forall v,w \in V&amp;lt;/math&amp;gt; we set&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,v):=0, \forall v \in V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):=l(v,w), (v,w) \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):= +\infty&amp;lt;/math&amp;gt;, otherwise&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Let &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; denote a shoortest &amp;lt;math&amp;gt;(v,w&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] are taken from &amp;lt;math&amp;gt;\{u_1, \ldots, u_n \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# If &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does not contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is even a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path such that all internal nodes are taken from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. In this case, the induction hypothesis implies that the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; immediately before the i-th iteration equals the length of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Clearly, the i-th iteration does not change the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; in this case.&lt;br /&gt;
# On the other hand, suppose &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. Due to the [[prefix property]], the segment of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; and from &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; are a shortest &amp;lt;math&amp;gt;(v,u_i)&amp;lt;/math&amp;gt;-path and a shortest &amp;lt;math&amp;gt;(u_i,w)&amp;lt;/math&amp;gt;-path, respectively, subject to the constraint that all internal nodes are from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. The induction hypothesis implies that tehese lengths equal the values &amp;lt;math&amp;gt;M(v,u_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M(u_i, w)&amp;lt;/math&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
'''Statement:''' &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The overall loop has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; iterations. In each iteration, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entities. Each update requires a constant number of steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=611</id>
		<title>Floyd-Warshall</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=611"/>
		<updated>2014-10-04T14:37:46Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;float:right;margin:0 0 5px 5px; border:1px solid #AAAAAA; width:auto; padding:1em; margin: 0px 0px 1em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em;font-weight:bold;text-align: center;margin:0.2em 0 1em 0&amp;quot;&amp;gt;Floyd-Warshall&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 1em 0; text-align:center&amp;quot;&amp;gt;whatever&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 .5em 0;text-align:center&amp;quot;&amp;gt;[[File:olw_logo1.png|20px]][https://openlearnware.tu-darmstadt.de/#!/resource/dijkstra-2310 Openlearnware]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
# A constant representing the number of node: &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt; matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
# C An ordering of all nodes, that is, &amp;lt;math&amp;gt;V = \{u_1, \ldots ,u_n\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abstract View ==&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, for &amp;lt;math&amp;gt;v,w \in V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; is the length of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] of the path belong to &amp;lt;math&amp;gt;\{u_1, \ldots , u_i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
'''Abstract view:''' &amp;lt;math&amp;gt;\forall v,w \in V&amp;lt;/math&amp;gt; we set&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,v):=0, \forall v \in V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):=l(v,w), (v,w) \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):= +\infty&amp;lt;/math&amp;gt;, otherwise&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Let &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; denote a shoortest &amp;lt;math&amp;gt;(v,w&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] are taken from &amp;lt;math&amp;gt;\{u_1, \ldots, u_n \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# If &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does not contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is even a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path such that all internal nodes are taken from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. In this case, the induction hypothesis implies that the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; immediately before the i-th iteration equals the length of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Clearly, the i-th iteration does not change the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; in this case.&lt;br /&gt;
# On the other hand, suppose &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. Due to the [[prefix property]], the segment of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; and from &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; are a shortest &amp;lt;math&amp;gt;(v,u_i)&amp;lt;/math&amp;gt;-path and a shortest &amp;lt;math&amp;gt;(u_i,w)&amp;lt;/math&amp;gt;-path, respectively, subject to the constraint that all internal nodes are from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. The induction hypothesis implies that tehese lengths equal the values &amp;lt;math&amp;gt;M(v,u_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M(u_i, w)&amp;lt;/math&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
'''Statement:''' &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The overall loop has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; iterations. In each iteration, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entities. Each update requires a constant number of steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=610</id>
		<title>Floyd-Warshall</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=610"/>
		<updated>2014-10-04T14:37:23Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;float:right;margin:0 0 5px 5px; border:1px solid #AAAAAA; width:auto; padding:1em; margin: 0px 0px 1em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em;font-weight:bold;text-align: center;margin:0.2em 0 1em 0&amp;quot;&amp;gt;Dijkstra&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 1em 0; text-align:center&amp;quot;&amp;gt;whatever&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 .5em 0;text-align:center&amp;quot;&amp;gt;[[File:olw_logo1.png|20px]][https://openlearnware.tu-darmstadt.de/#!/resource/dijkstra-2310 Openlearnware]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
# A constant representing the number of node: &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt; matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
# C An ordering of all nodes, that is, &amp;lt;math&amp;gt;V = \{u_1, \ldots ,u_n\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abstract View ==&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, for &amp;lt;math&amp;gt;v,w \in V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; is the length of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] of the path belong to &amp;lt;math&amp;gt;\{u_1, \ldots , u_i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
'''Abstract view:''' &amp;lt;math&amp;gt;\forall v,w \in V&amp;lt;/math&amp;gt; we set&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,v):=0, \forall v \in V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):=l(v,w), (v,w) \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):= +\infty&amp;lt;/math&amp;gt;, otherwise&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Let &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; denote a shoortest &amp;lt;math&amp;gt;(v,w&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] are taken from &amp;lt;math&amp;gt;\{u_1, \ldots, u_n \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# If &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does not contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is even a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path such that all internal nodes are taken from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. In this case, the induction hypothesis implies that the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; immediately before the i-th iteration equals the length of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Clearly, the i-th iteration does not change the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; in this case.&lt;br /&gt;
# On the other hand, suppose &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. Due to the [[prefix property]], the segment of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; and from &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; are a shortest &amp;lt;math&amp;gt;(v,u_i)&amp;lt;/math&amp;gt;-path and a shortest &amp;lt;math&amp;gt;(u_i,w)&amp;lt;/math&amp;gt;-path, respectively, subject to the constraint that all internal nodes are from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. The induction hypothesis implies that tehese lengths equal the values &amp;lt;math&amp;gt;M(v,u_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M(u_i, w)&amp;lt;/math&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
'''Statement:''' &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The overall loop has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; iterations. In each iteration, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entities. Each update requires a constant number of steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=609</id>
		<title>Floyd-Warshall</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=609"/>
		<updated>2014-10-04T14:36:43Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
# A constant representing the number of node: &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt; matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
# C An ordering of all nodes, that is, &amp;lt;math&amp;gt;V = \{u_1, \ldots ,u_n\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;float:right;margin:0 0 5px 5px; border:1px solid #AAAAAA; width:auto; padding:1em; margin: 0px 0px 1em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em;font-weight:bold;text-align: center;margin:0.2em 0 1em 0&amp;quot;&amp;gt;Dijkstra&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 1em 0; text-align:center&amp;quot;&amp;gt;whatever&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; margin:.5em 0 .5em 0;text-align:center&amp;quot;&amp;gt;[[File:olw_logo1.png|20px]][https://openlearnware.tu-darmstadt.de/#!/resource/dijkstra-2310 Openlearnware]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abstract View ==&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, for &amp;lt;math&amp;gt;v,w \in V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; is the length of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] of the path belong to &amp;lt;math&amp;gt;\{u_1, \ldots , u_i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
'''Abstract view:''' &amp;lt;math&amp;gt;\forall v,w \in V&amp;lt;/math&amp;gt; we set&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,v):=0, \forall v \in V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):=l(v,w), (v,w) \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):= +\infty&amp;lt;/math&amp;gt;, otherwise&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Let &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; denote a shoortest &amp;lt;math&amp;gt;(v,w&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] are taken from &amp;lt;math&amp;gt;\{u_1, \ldots, u_n \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# If &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does not contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is even a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path such that all internal nodes are taken from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. In this case, the induction hypothesis implies that the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; immediately before the i-th iteration equals the length of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Clearly, the i-th iteration does not change the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; in this case.&lt;br /&gt;
# On the other hand, suppose &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. Due to the [[prefix property]], the segment of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; and from &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; are a shortest &amp;lt;math&amp;gt;(v,u_i)&amp;lt;/math&amp;gt;-path and a shortest &amp;lt;math&amp;gt;(u_i,w)&amp;lt;/math&amp;gt;-path, respectively, subject to the constraint that all internal nodes are from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. The induction hypothesis implies that tehese lengths equal the values &amp;lt;math&amp;gt;M(v,u_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M(u_i, w)&amp;lt;/math&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
'''Statement:''' &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The overall loop has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; iterations. In each iteration, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entities. Each update requires a constant number of steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=608</id>
		<title>Floyd-Warshall</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Floyd-Warshall&amp;diff=608"/>
		<updated>2014-10-04T14:33:13Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;'''Algorithmic problem:''' All pairs shortest paths  '''Prerequisites:''' None  '''Type of algorithm:''' loop  '''Auxilliary data:''' # A constant representing the number...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Algorithmic problem:''' [[All pairs shortest paths]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' None&lt;br /&gt;
&lt;br /&gt;
'''Type of algorithm:''' loop&lt;br /&gt;
&lt;br /&gt;
'''Auxilliary data:'''&lt;br /&gt;
# A constant representing the number of node: &amp;lt;math&amp;gt;n = |V|&amp;lt;/math&amp;gt;&lt;br /&gt;
# A [[distance-valued]] &amp;lt;math&amp;gt;(n \times n)&amp;lt;/math&amp;gt; matrix &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
# C An ordering of all nodes, that is, &amp;lt;math&amp;gt;V = \{u_1, \ldots ,u_n\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abstract View ==&lt;br /&gt;
'''Invariant:''' After &amp;lt;math&amp;gt;i \ge 0&amp;lt;/math&amp;gt; iterations, for &amp;lt;math&amp;gt;v,w \in V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; is the length of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] of the path belong to &amp;lt;math&amp;gt;\{u_1, \ldots , u_i\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Varian:''' &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; increases by &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Break condition:''' It is &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction basis ==&lt;br /&gt;
'''Abstract view:''' &amp;lt;math&amp;gt;\forall v,w \in V&amp;lt;/math&amp;gt; we set&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,v):=0, \forall v \in V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):=l(v,w), (v,w) \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;M(v,w):= +\infty&amp;lt;/math&amp;gt;, otherwise&lt;br /&gt;
&lt;br /&gt;
'''Implementation:''' Obvious.&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' Nothing to show.&lt;br /&gt;
&lt;br /&gt;
== Induction step ==&lt;br /&gt;
'''Abstract view:'''&lt;br /&gt;
&lt;br /&gt;
'''Implementation:'''&lt;br /&gt;
&lt;br /&gt;
'''Correctness:''' Let &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; denote a shoortest &amp;lt;math&amp;gt;(v,w&amp;lt;/math&amp;gt;-path subject to the constraint that all [[internal nodes]] are taken from &amp;lt;math&amp;gt;\{u_1, \ldots, u_n \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# If &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does not contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; is even a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path such that all internal nodes are taken from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. In this case, the induction hypothesis implies that the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; immediately before the i-th iteration equals the length of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Clearly, the i-th iteration does not change the value of &amp;lt;math&amp;gt;M(v,w)&amp;lt;/math&amp;gt; in this case.&lt;br /&gt;
# On the other hand, suppose &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; does contain &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. Due to the [[prefix property]], the segment of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; and from &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; are a shortest &amp;lt;math&amp;gt;(v,u_i)&amp;lt;/math&amp;gt;-path and a shortest &amp;lt;math&amp;gt;(u_i,w)&amp;lt;/math&amp;gt;-path, respectively, subject to the constraint that all internal nodes are from &amp;lt;math&amp;gt;\{u_1, \ldots , u_{i-1} \}&amp;lt;/math&amp;gt;. The induction hypothesis implies that tehese lengths equal the values &amp;lt;math&amp;gt;M(v,u_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;M(u_i, w)&amp;lt;/math&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
'''Statement:''' &amp;lt;math&amp;gt;\mathcal{O}(n^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Proof:''' The overall loop has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; iterations. In each iteration, we update all &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; matrix entities. Each update requires a constant number of steps.&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=607</id>
		<title>All pairs shortest paths</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=607"/>
		<updated>2014-10-04T14:02:18Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Input ==&lt;br /&gt;
&lt;br /&gt;
# A [[directed Graph]] &amp;lt;math&amp;gt;G = (V,A)&amp;lt;/math&amp;gt;&lt;br /&gt;
# An arc length &amp;lt;math&amp;gt;l(a) \in \mathbb{R}&amp;lt;/math&amp;gt; for each arc &amp;lt;math&amp;gt;a \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ouptut ==&lt;br /&gt;
&lt;br /&gt;
For each pair &amp;lt;math&amp;gt;(v,w) \in A&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt; v,w \in V&amp;lt;/math&amp;gt;, the length &amp;lt;math&amp;gt;\Delta(v,w)&amp;lt;/math&amp;gt; of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
Polynomial&lt;br /&gt;
&lt;br /&gt;
== Known algorithms ==&lt;br /&gt;
# [[Floyd-Warshall]]&lt;br /&gt;
# [[Bellman-Ford]]&lt;br /&gt;
# [[Shortest oaths by repeated squaring]] (varian of Bellman-Ford)&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=606</id>
		<title>All pairs shortest paths</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=606"/>
		<updated>2014-10-04T13:59:27Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Input ==&lt;br /&gt;
&lt;br /&gt;
# A directed Graph &amp;lt;math&amp;gt;G = (V,A)&amp;lt;/math&amp;gt;&lt;br /&gt;
# An arc length &amp;lt;math&amp;gt;l(a) \in \mathbb{R}&amp;lt;/math&amp;gt; for each arc &amp;lt;math&amp;gt;a \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ouptut ==&lt;br /&gt;
&lt;br /&gt;
For each pair &amp;lt;math&amp;gt;(v,w) \in A&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt; v,w \in V&amp;lt;/math&amp;gt;, the length &amp;lt;math&amp;gt;\Delta(v,w)&amp;lt;/math&amp;gt; of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
Polynomial&lt;br /&gt;
&lt;br /&gt;
== Known algorithms ==&lt;br /&gt;
# [[Floyd-Warshall]]&lt;br /&gt;
# [[Bellman-Ford]]&lt;br /&gt;
# [[Shortest oaths by repeated squaring]] (varian of Bellman-Ford)&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=605</id>
		<title>All pairs shortest paths</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=All_pairs_shortest_paths&amp;diff=605"/>
		<updated>2014-10-04T13:48:46Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: Created page with &amp;quot;== Input ==  * A directed Graph &amp;lt;math&amp;gt;G = (V,A)&amp;lt;/math&amp;gt; * An arc length &amp;lt;math&amp;gt;l(a) \in \mathbb{R}&amp;lt;/math&amp;gt; for each arc &amp;lt;math&amp;gt;a \in A&amp;lt;/math&amp;gt;  == Ouptut ==  For each pair &amp;lt;math&amp;gt;(v...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Input ==&lt;br /&gt;
&lt;br /&gt;
* A directed Graph &amp;lt;math&amp;gt;G = (V,A)&amp;lt;/math&amp;gt;&lt;br /&gt;
* An arc length &amp;lt;math&amp;gt;l(a) \in \mathbb{R}&amp;lt;/math&amp;gt; for each arc &amp;lt;math&amp;gt;a \in A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ouptut ==&lt;br /&gt;
&lt;br /&gt;
For each pair &amp;lt;math&amp;gt;(v,w) \in A&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt; v,w \in V&amp;lt;/math&amp;gt;, the length &amp;lt;math&amp;gt;\Delta(v,w)&amp;lt;/math&amp;gt; of a shortest &amp;lt;math&amp;gt;(v,w)&amp;lt;/math&amp;gt;-path in &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with respect to &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Complexity ==&lt;br /&gt;
Polynomial&lt;br /&gt;
&lt;br /&gt;
== Known algorithms ==&lt;br /&gt;
* [[Floyd-Warshall]]&lt;br /&gt;
* [[Bellman-Ford]]&lt;br /&gt;
* [[Shortest oaths by repeated squaring]] (varian of Bellman-Ford)&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Main_Page&amp;diff=478</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.algo.informatik.tu-darmstadt.de/index.php?title=Main_Page&amp;diff=478"/>
		<updated>2014-09-30T21:00:38Z</updated>

		<summary type="html">&lt;p&gt;Dkratschmann: /* Graph Theory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== News ==&lt;br /&gt;
* &amp;lt;math&amp;gt;LaTeX&amp;lt;/math&amp;gt; [http://www.mediawiki.org/wiki/Manual:Math available now!]&lt;br /&gt;
* ToDo List added&lt;br /&gt;
* Every content has to be in English!&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi Syntaxhighlight]&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
=== Notations ===&lt;br /&gt;
* [[Asymptotic notation]]&lt;br /&gt;
* [[L' Hospital]]&lt;br /&gt;
* [[Master theorem]]&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* [[Maximum matching problem]]&lt;br /&gt;
* [[Max-Flow Problems]]&lt;br /&gt;
* [[Min-Cost Flow Problems]]&lt;br /&gt;
* [[Shortest Paths Problems]]&lt;br /&gt;
** [[All pairs shortest paths]]&lt;br /&gt;
*** [[Floyd-Warshall]]&lt;br /&gt;
*** [[Bellman-Ford]]&lt;br /&gt;
*** [[Shortest paths by repeated squaring]] (variant of Bellman-Ford) &lt;br /&gt;
** [[Single source shortest paths]]&lt;br /&gt;
*** [[Dijkstra]]&lt;br /&gt;
** [[Single source single target shortest paths]]&lt;br /&gt;
*** [[A*]]&lt;br /&gt;
* [[Maximum spanning forest]]&lt;br /&gt;
* [[Problems on Sequences]]&lt;br /&gt;
** [[Basic Problems on Sequences]]&lt;br /&gt;
*** [[Find an element in a sequence]]&lt;br /&gt;
*** [[Insert an element in a sequence]]&lt;br /&gt;
*** [[Median]]&lt;br /&gt;
*** [[Merging two sorted sequences]]&lt;br /&gt;
** [[Pattern Matching]]&lt;br /&gt;
*** [[One-dimensional string matching]]&lt;br /&gt;
*** [[String matching]]&lt;br /&gt;
** [[Sorting]]&lt;br /&gt;
*** [[Sorting based on pairwise comparison]]&lt;br /&gt;
*** [[Sorting Sequences of Strings]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Basics ===&lt;br /&gt;
* [[Heritage]]&lt;br /&gt;
* [[Generics]]&lt;br /&gt;
* [[Collections]]&lt;br /&gt;
** [[Iterator]]&lt;br /&gt;
** [[Comparator]]&lt;br /&gt;
&lt;br /&gt;
=== String Matching Algorithms ===&lt;br /&gt;
* [[Simple string matching algorithm]]&lt;br /&gt;
* [[String matching based on finite automaton]]&lt;br /&gt;
&lt;br /&gt;
=== Sorting Algorithms ===&lt;br /&gt;
* [[Bubble]]&lt;br /&gt;
* [[Insertion Sort]]&lt;br /&gt;
* [[Quick Sort]]&lt;br /&gt;
* [[Bubble Sort]]&lt;br /&gt;
* [[Merge Sort]]&lt;br /&gt;
* [[Bucket Sort]]&lt;br /&gt;
* [[Selection Sort]]&lt;br /&gt;
* [[Bogo Sort]]&lt;br /&gt;
&lt;br /&gt;
=== Search Algorithms ===&lt;br /&gt;
* [[Binary Search]]&lt;br /&gt;
&lt;br /&gt;
=== Tree Algorithms ===&lt;br /&gt;
* [[Depth-First Search]]&lt;br /&gt;
* [[Breadth-First Search]]&lt;br /&gt;
* [[B-Tree:Find]]&lt;br /&gt;
* [[B-Tree:Minimum]]&lt;br /&gt;
* [[B-Tree:Maximum]]&lt;br /&gt;
* [[B-Tree:Insert]]&lt;br /&gt;
* [[B-Tree:Insert and Rearrange]]&lt;br /&gt;
* [[B-Tree:merge two Siblings]]&lt;br /&gt;
* [[B-Tree:Remove]]&lt;br /&gt;
* [[B-Tree:Shift Key to Sibling]]&lt;br /&gt;
* [[B-Tree:Rotate]]&lt;br /&gt;
* [[B-Tree:Merge]]&lt;br /&gt;
* [[B-Tree:Split-Child]]&lt;br /&gt;
* [[Binary Search Tree:Find]]&lt;br /&gt;
* [[Binary Search Tree:Minimum]]&lt;br /&gt;
* [[Binary Search Tree:Maximum]]&lt;br /&gt;
* [[Binary Search Tree:Insert]]&lt;br /&gt;
* [[Binary Search Tree:Remove]]&lt;br /&gt;
* [[Binary Search Tree:Remove node]]&lt;br /&gt;
* [[Binary Search Tree:Traverse]]&lt;br /&gt;
&lt;br /&gt;
=== Graph Theory ===&lt;br /&gt;
* [[Directed Graph]]&lt;br /&gt;
* [[Bipartite Graph]]&lt;br /&gt;
* [[k-partite Graph]]&lt;br /&gt;
* [[Negative Paths]]&lt;br /&gt;
&lt;br /&gt;
=== Graph Algorithms ===&lt;br /&gt;
* [[Dijkstra]]&lt;br /&gt;
* [[Kruskal]]&lt;br /&gt;
* [[Prim]]&lt;br /&gt;
* [[Bellman-Ford]]&lt;br /&gt;
* [[Floyd-Warshall]]&lt;br /&gt;
* [[Union Find]]&lt;br /&gt;
* [[A*]]&lt;br /&gt;
* [[Alternating paths algorithm]]&lt;br /&gt;
* [[Johnson]]&lt;br /&gt;
&lt;br /&gt;
=== Flow Algorithms ===&lt;br /&gt;
* [[Ford-Fulkerson]]&lt;br /&gt;
=== Data Structures ===&lt;br /&gt;
* [[Linked List]]&lt;br /&gt;
* [[Array List]]&lt;br /&gt;
* [[First In - First Out]]&lt;br /&gt;
* [[First In - Ieast Out]]&lt;br /&gt;
* [[Double Linked List]]&lt;br /&gt;
* [[Heaps]] (DONE (Heap as Array))&lt;br /&gt;
* [[Min-Max Heaps]]&lt;br /&gt;
* [[Hash Table]]&lt;br /&gt;
* [[Directed Tree]]&lt;br /&gt;
* [[Binary Search Tree]]&lt;br /&gt;
* [[B-Trees]]&lt;br /&gt;
* [[Decision Tree]]&lt;br /&gt;
* [[Red-Black Tree]]&lt;br /&gt;
* [[Graphs]]&lt;br /&gt;
&lt;br /&gt;
=== Other Algorithms (LOCKED) ===&lt;br /&gt;
* [[B*]]&lt;br /&gt;
* [[Cyclic Redundancy Check]]&lt;br /&gt;
* [[Eulcid]]&lt;br /&gt;
* [[Gauss]]&lt;br /&gt;
* [[Discrete Fourier transform]]&lt;br /&gt;
* [[Fast Fourier transform]]&lt;br /&gt;
* [[Bresenham]]&lt;br /&gt;
* [[Round Robin]]&lt;br /&gt;
* [[Seperate and Conquer]]&lt;br /&gt;
* [[Message-Digest Algorithm]]&lt;br /&gt;
* [[Secure Hash Algorithm]]&lt;br /&gt;
* [[Sequent calculus]]&lt;br /&gt;
* [[Resolution calculus]]&lt;br /&gt;
* [[Cocke-Younger-Kasami Algorithm]]&lt;br /&gt;
* [[Distance Vector Routing]]&lt;br /&gt;
* [[Link State Round]]&lt;br /&gt;
* [[Z Buffer Algorithm]]&lt;br /&gt;
* [[Marching Squares]]&lt;br /&gt;
* [[Marching Cubes]]&lt;br /&gt;
* [[Bottom-Up Heapsort]]&lt;br /&gt;
* [[Radixsort]]&lt;br /&gt;
* [[Median Cut]]&lt;br /&gt;
* [[Pancake sorting]]&lt;br /&gt;
* [[Karnaugh-Veitch Diagramm]]&lt;br /&gt;
* [[Delanuay Triangulation]]&lt;br /&gt;
* [[Backtracking]]&lt;br /&gt;
* [[Alpha–beta pruning]]&lt;br /&gt;
* [[Beam search]]&lt;br /&gt;
* [[Best-first search]]&lt;br /&gt;
* [[Bidirectional search]]&lt;br /&gt;
* [[Borůvka's algorithm]]&lt;br /&gt;
* [[Branch and bound]]&lt;br /&gt;
* [[D*]]&lt;br /&gt;
* [[Depth-limited search]]&lt;br /&gt;
* [[Edmonds' algorithm]]&lt;br /&gt;
* [[Fringe search]]&lt;br /&gt;
* [[Hill climbing]]&lt;br /&gt;
* [[IDA*]]&lt;br /&gt;
* [[Iterative deepening depth-first search]]&lt;br /&gt;
* [[Jump point search]]&lt;br /&gt;
* [[Lexicographic breadth-first search]]&lt;br /&gt;
* [[SMA*]]&lt;br /&gt;
* [[Uniform-cost search]]&lt;br /&gt;
&lt;br /&gt;
=== Other Data Structures (LOCKED) ===&lt;br /&gt;
* [[Adelson-Velskii and Landis' tree]]&lt;br /&gt;
* [[Patricia-Trie]]&lt;br /&gt;
* [[Suffix Tree]]&lt;br /&gt;
* [[Huffmann Tree]]&lt;br /&gt;
* [[Binary Expression Tree]]&lt;br /&gt;
* [[Hash Set]]&lt;br /&gt;
* [[Incidence Matrix]]&lt;br /&gt;
* [[Voronoi Diagramm]]&lt;br /&gt;
* [[Quad Tree]]&lt;br /&gt;
* [[Oct Tree]]&lt;br /&gt;
* [[kd Tree]]&lt;br /&gt;
* [[Binary space partitioning]]&lt;/div&gt;</summary>
		<author><name>Dkratschmann</name></author>
	</entry>
</feed>