A top down unification of minimum cost spanning tree algorithms
SIGCOMM '89 Symposium proceedings on Communications architectures & protocols
Network flows: theory, algorithms, and applications
Network flows: theory, algorithms, and applications
An inverted taxonomy of sorting algorithms
Communications of the ACM - Special section on computer architecture
Design patterns for the data structures and algorithms course
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
A library of generic algorithms in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
Data Structures and Algorithm Analysis in Java
Data Structures and Algorithm Analysis in Java
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Computer Algorithms: Introduction to Design and Analysis
Computer Algorithms: Introduction to Design and Analysis
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Introduction to Algorithms
Selected Papers from the International Seminar on Generic Programming
Selected Papers from the International Seminar on Generic Programming
A case for OO -- Java -- in teaching algorithm analysis
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
Science Code .NET: Object-oriented programming for science
Science of Computer Programming
A distributed information system for healthcare web services
APWeb'06 Proceedings of the 2006 international conference on Advanced Web and Network Technologies, and Applications
Hi-index | 0.00 |
This paper presents a new approach to algorithm design and analysis that benefits from the OO characteristics of Java. It consists of first defining the inheritance structure of a collection of algorithms, at different levels of abstraction. Then, correctness proofs and complexity measures are designed for the various levels of abstraction. The goal is to prove as many properties as possible at each abstract level, assuming the implementations of the methods called upon will be correct. Thus, when a more specialized algorithm is derived from a more abstract one, proofs and complexity analysis can be reused, and simply need to be completed by proving that the properties assumed for the concrete methods indeed hold. The approach is illustrated with several inheritance trees: for sorting, graph algorithms, string matching, and network flow. Each tree, at the bottom of the hierarchy, yields well-known algorithms in the respective area. Instead of using pseudo-code to describe these trees, Java is used to make the process more precise and useful, encouraging the design and analysis of algorithms, and also experimentation with new variants. The implementation presented in this paper takes advantage of Java's organization to build the inheritance trees for the classes, and Java's interfaces, collections, comparators, and iterators.