Sedgewick's publisher (Addison-Wesley) has gathered his two books, Algorithms in Java, parts 1-5, into one resource for developers. Convenient, for you now have something that spans the most common algorithms encountered during computer programming. Logically, the combination of the two volumes is very coherent.
(Below is my review of the Part 1-4 book.)
In my work, I have a bunch of interlinked objects. I can use tables to display these, but showing linkages is awkward. It is far more natural to graph them. This lets me use evolution, for the human eye and brain are excellent at processing images and discerning patterns in them. But I also want to algorithmically find groupings and invariant properties of the graphs. There is a danger here. In graph theory, it is very easy to inadvertantly pose a simple question that is computationally hard to solve (NP-hard). Conversely, I don't want to reinvent the wheel. From graph theory, there may well be properties of my graph that I can easily extract. Certainly, the amount of research on graphs is voluminous.
But how does one take advantage of that? Consulting research journals in maths for papers on graph theory is really feasible only for the career mathematician. But for me, graphs are just a tool; not an ends per se. So I need a book that has the right amount of complexity. It needs to get enough into the subject, beyond the trivial exposition of definitions. Yet it should not bury me in lemmas and theorems.
I found such a book! This one. A well deserved third iteration. The explanations are extremely clear. Before I encountered this text, I used Donald Knuth's "Art of Computer Programming" (which is also put out by Addison-Wesley) and his treatment of graphs. But Sedgewick's discourse is far more extensive and, to me, just as well written.
A bonus is the extensive problem sets at the ends of each chapter. Even if I have no inclination to do them, the results they give are a valuable extension of the text, by providing an extra summary of the research. I only wish that Sedgewick would provide answers, like Knuth. But this is a just a quibble.
This edition has example code in Java. Certainly nothing wrong with that. [I program in Java.] But really the code should be a secondary consideration to you. If you are a programmer and you can understand the text, then you should be of a calibre that you can write the code.
(Below is my review of the Part 1-4 book.)
In my work, I have a bunch of interlinked objects. I can use tables to display these, but showing linkages is awkward. It is far more natural to graph them. This lets me use evolution, for the human eye and brain are excellent at processing images and discerning patterns in them. But I also want to algorithmically find groupings and invariant properties of the graphs. There is a danger here. In graph theory, it is very easy to inadvertantly pose a simple question that is computationally hard to solve (NP-hard). Conversely, I don't want to reinvent the wheel. From graph theory, there may well be properties of my graph that I can easily extract. Certainly, the amount of research on graphs is voluminous.
But how does one take advantage of that? Consulting research journals in maths for papers on graph theory is really feasible only for the career mathematician. But for me, graphs are just a tool; not an ends per se. So I need a book that has the right amount of complexity. It needs to get enough into the subject, beyond the trivial exposition of definitions. Yet it should not bury me in lemmas and theorems.
I found such a book! This one. A well deserved third iteration. The explanations are extremely clear. Before I encountered this text, I used Donald Knuth's "Art of Computer Programming" (which is also put out by Addison-Wesley) and his treatment of graphs. But Sedgewick's discourse is far more extensive and, to me, just as well written.
A bonus is the extensive problem sets at the ends of each chapter. Even if I have no inclination to do them, the results they give are a valuable extension of the text, by providing an extra summary of the research. I only wish that Sedgewick would provide answers, like Knuth. But this is a just a quibble.
This edition has example code in Java. Certainly nothing wrong with that. [I program in Java.] But really the code should be a secondary consideration to you. If you are a programmer and you can understand the text, then you should be of a calibre that you can write the code.