diff --git a/chapter10.tex b/chapter10.tex index 13cce68..273e7c7 100644 --- a/chapter10.tex +++ b/chapter10.tex @@ -391,7 +391,8 @@ to change an iteration over permutations into an iteration over subsets, so that the dynamic programming state contains a subset of a set and possibly -some additional information. +some additional information\footnote{This technique was introduced in 1962 +by M. Held and R. M. Karp \cite{hel62}.}. The benefit in this is that $n!$, the number of permutations of an $n$ element set, diff --git a/chapter15.tex b/chapter15.tex index 4f7df84..4be2643 100644 --- a/chapter15.tex +++ b/chapter15.tex @@ -123,7 +123,8 @@ maximum spanning trees by processing the edges in reverse order. \index{Kruskal's algorithm} -In \key{Kruskal's algorithm} \cite{kru56}, the initial spanning tree +In \key{Kruskal's algorithm}\footnote{The algorithm was published in 1956 +by J. B. Kruskal \cite{kru56}.}, the initial spanning tree only contains the nodes of the graph and does not contain any edges. Then the algorithm goes through the edges @@ -409,7 +410,11 @@ belongs to more than one set. Two $O(\log n)$ time operations are supported: the \texttt{union} operation joins two sets, and the \texttt{find} operation finds the representative -of the set that contains a given element. +of the set that contains a given element\footnote{The structure presented here +was introduced in 1971 by J. D. Hopcroft and J. D. Ullman \cite{hop71}. +Later, in 1975, R. E. Tarjan studied a more sophisticated variant +of the structure \cite{tar75} that is discussed in many algorithm +textbooks nowadays.}. \subsubsection{Structure} @@ -567,7 +572,10 @@ the smaller set to the larger set. \index{Prim's algorithm} -\key{Prim's algorithm} \cite{pri57} is an alternative method +\key{Prim's algorithm}\footnote{The algorithm is +named after R. C. Prim who published it in 1957 \cite{pri57}. +However, the same algorithm was discovered already in 1930 +by V. Jarník.} is an alternative method for finding a minimum spanning tree. The algorithm first adds an arbitrary node to the tree. diff --git a/list.tex b/list.tex index 70242eb..4bee692 100644 --- a/list.tex +++ b/list.tex @@ -107,6 +107,16 @@ Computer Science and Computational Biology}, Cambridge University Press, 1997. +\bibitem{hel62} + M. Held and R. M. Karp. + A dynamic programming approach to sequencing problems. + \emph{Journal of the Society for Industrial and Applied Mathematics}, 10(1):196--210, 1962. + +\bibitem{hop71} + J. E. Hopcroft and J. D. Ullman. + A linear list merging algorithm. + Technical report, Cornell University, 1971. + \bibitem{hor74} E. Horowitz and S. Sahni. Computing partitions with applications to the knapsack problem. @@ -179,6 +189,11 @@ Gaussian elimination is not optimal. \emph{Numerische Mathematik}, 13(4):354--356, 1969. +\bibitem{tar75} + R. E. Tarjan. + Efficiency of a good but not linear set union algorithm. + \emph{Journal of the ACM}, 22(2):215--225, 1975. + \bibitem{tar84} R. E. Tarjan and U. Vishkin. Finding biconnected componemts and computing tree functions in logarithmic parallel time.