Abstract
A unified approach called partition-and-recur for developing efficient and correct algorithmic programs is presented. An algorithm (represented by recurrence and initiation) is separated from program, and special attention is paid to algorithm manipulation rather than program calculus. An algorithm is exactly a set of mathematical formulae. It is easier for formal derivation and proof. After getting efficient and correct algorithm, a trivial transformation is used to get a final program. The approach covers several known algorithm design techniques, e.g. dynamic programming, greedy, divide-and-conquer and enumeration, etc. The techniques of partition and recurrence are not new. Partition is a general approach for dealing with complicated objects and is typically used in divide-and-conquer approach. Recurrence is used in algorithm analysis, in developing loop invariants and dynamic programming approach. The main contribution is combining two techniques used in typical algorithm development into a unified and systematic approach to develop general efficient algorithmic programs and presenting a new representation of algorithm that is easier for understanding and demonstrating the correctness and ingenuity of algorithmic programs.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Backhouse R C. Program Construction and Verification. Prentice-Hall, London, 1986.
Dijkstra E W. A Discipline of Programming. Prentice-Hall, New Jersey, 1976.
Dijkstra E W, Scholten C S. Predicate Calculus and Program Semantics. Springer-Verlag, New York, 1990.
Gries D. The Science of Programming. Springer-Verlag, New York, 1981.
Paull M C. Algorithm Design—A Recursion Transformation Framework. John Wiley & Sons, 1988.
Smith D R. KIDS: A semiautomatic program development system.IEEE Trans. on Software Engineering, 1990, 16(9): 1024–1043.
Smith D R (ed). Structure and Design of Problem Reduction Generators, Constructioning Program from Specification. IFIP, 1991, pp. 1320–1328.
Xu Jiafu. The Automation of Software. Qinghua University Press, 1993.
Baase S. Computer Algorithms, Introduction to Design and Analysis (2nd edition). Addison-Wesley, 1991, pp. 15–17.
Beery D M. Whether formal methods? Some thoughts on the application of formal methods. InWorkshop on Increasing the Practical Impact of Formal Methods for Computer-Aided Software Development: Software Evolution, Sept. 1994, pp. 22–37.
Luqi. Monterey workshop 94: Software evolution. InProc. of Monterey Workshop on Increasing the Practical Impact of Formal Methods for Computer-Aided Software Development: Software Evolution, Sept. 1994, pp. 1–9.
Manber U. Using induction to design algorithms.CACM, 1988, 31(11): 1300–1313.
Manber U. Introduction to Algorithms—A Creative Approach. Addison-Wesley, 1989.
Gries D. A note on a standard strategy for developing loop invariants and loops.Science of Computer Programming, 1982, 2: 207–214.
Horowitz E. Design and classification of algorithms. InAcademic Encyclopedia Computer Science, Third Edition, Ralston A, Reilly E D (eds.), Van Nostrand, Reinhold, New York, 1993, pp.33–37.
Xue Jinyun, David G. Developing a linear algorithm for cubing a cycle permutation.Science of Computer Programming, 1988, 11: 161–165.
Knuth D. The Art of Computer Programming, Vol.1. Addison-Wesley, 1973.
Gries D, Volpano D. The transform—A new language construct.Structure Programming, 1991, 11: 1–10.
Kingston J H. Algorithms and Data Structures, Design, Correctness, Analysis. Addison-Wesley, 1990.
Xue Jinyun. Two new strategies for developing loop invariants and their applications.Journal of Computer Science and Technology, 1993, 8(3).
Gries D, Xue Jinyun. The Hopcroft-Tarjan Planarity Algorithm: Presentations and Improvements. TR88-906, CS Dept. of Cornell University.
Xue Jinyun. Design and Proof of Algorithm and Programs. Textbook used in Jiangxi Normal University, 1994.
Aho A, Hopcroft J, Ullman J. Data Structures and Algorithms. Addison-Wesley, 1983.
Xue Jinyun. A systematic method for designing and proving algorithmic programs. InAdvances of Theoretical Computer Science, Proc. of National Theoretical Computer Science Conf. of China, 1994.
Xue Jinyun. The standard proof and formal derivation of complex algorithmic programs. InThe 8th Academic Conf. of China Computer Federation, Beijing, 1992, pp. 61–68.
Knuth D. A Simple Program Whose Proof Isn’t, Beauty is Our Business, A Birthday Salute to E.W. Dijkstra. Feijen W H Jet al (eds), 1990.
Xue Jinyun, Davis R, Lin F. A simple program whose derivation and proof are also. (to appear inSoftware Concepts and Tools)
Author information
Authors and Affiliations
Additional information
This research was supported by the 863 Hi-Tech Programme and the National Natural Science Foundation of China.
Xue Jinyun graduated from Department of Mathematics of Nanjing University in 1970. From Dec. 1985 to April 1988, he worked as a visiting scholar at Cornell University. After June 1995, he spent 10 months as a visiting scholar at Santa Clara University. He is a Professor and the Director of Computer Software Institute at Jiangxi Normal University. His research interests include Cover’s theory of algorithms and programs, software engineering and computer-aided instruction.
Rights and permissions
About this article
Cite this article
Xue, J. A unified approach for developing efficient algorithmic programs. J. of Comput. Sci. & Technol. 12, 314–329 (1997). https://doi.org/10.1007/BF02943151
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF02943151