diff --git a/chapter01.tex b/chapter01.tex index 2abce8b..859acf9 100644 --- a/chapter01.tex +++ b/chapter01.tex @@ -928,7 +928,7 @@ Google Code Jam and Yandex.Algorithm. Of course, companies also use those contests for recruiting: performing well in a contest is a good way to prove one's skills. -\section{Books} +\section{Resources} \subsubsection{Competitive programming books} @@ -937,12 +937,11 @@ concentrate on competitive programming and algorithmic problem solving: \begin{itemize} \item S. Halim and F. Halim: -\emph{Competitive Programming 3: The New Lower Bound of Programming Contests}, 2013 +\emph{Competitive Programming 3: The New Lower Bound of Programming Contests} \cite{hal13} \item S. S. Skiena and M. A. Revilla: -\emph{Programming Challenges: The Programming Contest Training Manual}, -Springer, 2003 -\item \emph{Looking for a Challenge? The Ultimate Problem Set from -the University of Warsaw Programming Competitions}, 2012 +\emph{Programming Challenges: The Programming Contest Training Manual} \cite{ski03} +\item K. Diks et al.: \emph{Looking for a Challenge? The Ultimate Problem Set from +the University of Warsaw Programming Competitions} \cite{dik12} \end{itemize} The first two books are intended for beginners, @@ -956,9 +955,9 @@ Some good books are: \begin{itemize} \item T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein: -\emph{Introduction to Algorithms}, MIT Press, 2009 (3rd edition) +\emph{Introduction to Algorithms} \cite{cor09} \item J. Kleinberg and É. Tardos: -\emph{Algorithm Design}, Pearson, 2005 +\emph{Algorithm Design} \cite{kle05} \item S. S. Skiena: -\emph{The Algorithm Design Manual}, Springer, 2008 (2nd edition) +\emph{The Algorithm Design Manual} \cite{ski08} \end{itemize} diff --git a/chapter06.tex b/chapter06.tex index 489ab4e..8b909af 100644 --- a/chapter06.tex +++ b/chapter06.tex @@ -103,8 +103,12 @@ is 6, the greedy algorithm produces the solution $4+1+1$ while the optimal solution is $3+3$. It is not known if the general coin problem -can be solved using any greedy algorithm. +can be solved using any greedy algorithm\footnote{However, it is possible +to \emph{check} in polynomial time +if the greedy algorithm presented in this chapter works for +a given set of coins \cite{pea05}.}. However, as we will see in Chapter 7, +in some cases, the general problem can be efficiently solved using a dynamic programming algorithm that always gives the diff --git a/chapter13.tex b/chapter13.tex index 12938d0..f6461be 100644 --- a/chapter13.tex +++ b/chapter13.tex @@ -24,7 +24,9 @@ for finding shortest paths. \index{Bellman–Ford algorithm} -The \key{Bellman–Ford algorithm} \cite{bel58} finds the +The \key{Bellman–Ford algorithm}\footnote{The algorithm is named after +R. E. Bellman and L. R. Ford who published it independently +in 1958 and 1956, respectively \cite{bel58,for56a}.} finds the shortest paths from a starting node to all other nodes in the graph. The algorithm can process all kinds of graphs, @@ -331,7 +333,9 @@ original Bellman–Ford algorithm. \index{Dijkstra's algorithm} -\key{Dijkstra's algorithm} \cite{dij59} finds the shortest +\key{Dijkstra's algorithm}\footnote{E. W. Dijkstra published the algorithm in 1959 \cite{dij59}; +however, his original paper does not mention how to implement the algorithm efficiently.} +finds the shortest paths from the starting node to all other nodes, like the Bellman–Ford algorithm. The benefit in Dijsktra's algorithm is that @@ -594,7 +598,9 @@ at most one distance to the priority queue. \index{Floyd–Warshall algorithm} -The \key{Floyd–Warshall algorithm} \cite{flo62} +The \key{Floyd–Warshall algorithm}\footnote{The algorithm +is named after R. W. Floyd and S. Warshall +who published it independently in 1962 \cite{flo62,war62}.} is an alternative way to approach the problem of finding shortest paths. Unlike the other algorihms in this chapter, diff --git a/list.tex b/list.tex index 9cf1518..8939e38 100644 --- a/list.tex +++ b/list.tex @@ -38,12 +38,12 @@ \bibitem{ben86} J. Bentley. \emph{Programming Pearls}. - Addison-Wesley, 1986. + Addison-Wesley, 1999 (2nd edition). \bibitem{bou01} C. L. Bouton. Nim, a game with a complete mathematical theory. - \emph{Annals of Mathematics}, 3(1/4):35--39, 1901. +pro \emph{Annals of Mathematics}, 3(1/4):35--39, 1901. % \bibitem{bur97} % W. Burnside. @@ -54,11 +54,20 @@ Codeforces: On ''Mo's algorithm'', \url{http://codeforces.com/blog/entry/20032} +\bibitem{cor09} + T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein. + \emph{Introduction to Algorithms}, MIT Press, 2009 (3rd edition). + \bibitem{dij59} E. W. Dijkstra. A note on two problems in connexion with graphs. \emph{Numerische Mathematik}, 1(1):269--271, 1959. +\bibitem{dik12} + K. Diks et al. + \emph{Looking for a Challenge? The Ultimate Problem Set from + the University of Warsaw Programming Competitions}, University of Warsaw, 2012. + % \bibitem{dil50} % R. P. Dilworth. % A decomposition theorem for partially ordered sets. @@ -104,6 +113,11 @@ Algorithm 97: shortest path. \emph{Communications of the ACM}, 5(6):345, 1962. +\bibitem{for56a} + L. R. Ford. + Network flow theory. + RAND Corporation, Santa Monica, California, 1956. + \bibitem{for56} L. R. Ford and D. R. Fulkerson. Maximal flow through a network. @@ -152,7 +166,9 @@ % On representatives of subsets. % \emph{Journal London Mathematical Society} 10(1):26--30, 1935. - On representatives of subsets. J. London Math. Soc, 10(1), 26-30. +\bibitem{hal13} + S. Halim and F. Halim. + \emph{Competitive Programming 3: The New Lower Bound of Programming Contests}, 2013. \bibitem{hel62} M. Held and R. M. Karp. @@ -198,6 +214,10 @@ Efficient randomized pattern-matching algorithms. \emph{IBM Journal of Research and Development}, 31(2):249--260, 1987. +\bibitem{kle05} + J. Kleinberg and É. Tardos. + \emph{Algorithm Design}, Pearson, 2005. + % \bibitem{kas61} % P. W. Kasteleyn. % The statistics of dimers on a lattice: I. The number of dimer arrangements on a quadratic lattice. @@ -247,6 +267,11 @@ % \emph{Sitzungsberichte des deutschen naturwissenschaftlich-medicinischen Vereines % für Böhmen "Lotos" in Prag. (Neue Folge)}, 19:311--319, 1899. +\bibitem{pea05} + D. Pearson. + A polynomial-time algorithm for the change-making problem. + \emph{Operations Research Letters}, 33(3):231--234, 2005. + \bibitem{pri57} R. C. Prim. Shortest connection networks and some generalizations. @@ -271,6 +296,15 @@ A strong-connectivity algorithm and its applications in data flow analysis. \emph{Computers \& Mathematics with Applications}, 7(1):67--72, 1981. +\bibitem{ski08} + S. S. Skiena. + \emph{The Algorithm Design Manual}, Springer, 2008 (2nd edition). + +\bibitem{ski03} + S. S. Skiena and M. A. Revilla. + \emph{Programming Challenges: The Programming Contest Training Manual}, + Springer, 2003. + \bibitem{spr35} R. Sprague. Über mathematische Kampfspiele. @@ -306,6 +340,11 @@ \emph{Des Rösselsprunges einfachste und allgemeinste Lösung}. Schmalkalden, 1823. +\bibitem{war62} + S. Warshall. + A theorem on boolean matrices. + \emph{Journal of the ACM}, 9(1):11--12, 1962. + % \bibitem{zec72} % E. Zeckendorf. % Représentation des nombres naturels par une somme de nombres de Fibonacci ou de nombres de Lucas.