Partition-and-Recur (PAR) method is a simple and useful formal method. It can be used to design and testify algo-rithmic programs. In this paper, we propose that PAR method is an effective formal method on solving com...Partition-and-Recur (PAR) method is a simple and useful formal method. It can be used to design and testify algo-rithmic programs. In this paper, we propose that PAR method is an effective formal method on solving combinatorics problems. Furthermore, we formally derive combinatorics problems by PAR method, which cannot only simplify the process of algorithmic program's designing, but also improve its automatization, standardization and correctness. We develop algorithms for two typical combinatorics problems, the number of string scheme and the number of error per-mutation scheme. Lastly, we obtain accurate C++ programs which are transformed by automatic transforming system of PAR platform.展开更多
The paper presents a formal and practical approach to dependable algorithm development.First,starting from a formal specification based on the Eindhoven quantifier notation,a problem is regularly reduced to subproblem...The paper presents a formal and practical approach to dependable algorithm development.First,starting from a formal specification based on the Eindhoven quantifier notation,a problem is regularly reduced to subproblems with less complexity by using a concise set of calculation rules,the result of which establishes a recurrence-based algorithm.Second,a loop invariant is derived from the problem specification and recurrence,which certifies the transformation from the recurrence-based algorithm to one or more iterative programs.We demonstrate that our approach covers a number of classical algorithm design tactics,develops algorithmic programs together with their proof of correctness,and thus contributes fundamentally to the dependability of computer software.展开更多
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 att...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.展开更多
文摘Partition-and-Recur (PAR) method is a simple and useful formal method. It can be used to design and testify algo-rithmic programs. In this paper, we propose that PAR method is an effective formal method on solving combinatorics problems. Furthermore, we formally derive combinatorics problems by PAR method, which cannot only simplify the process of algorithmic program's designing, but also improve its automatization, standardization and correctness. We develop algorithms for two typical combinatorics problems, the number of string scheme and the number of error per-mutation scheme. Lastly, we obtain accurate C++ programs which are transformed by automatic transforming system of PAR platform.
基金National Natural Science Foundation of China under Grant No. 60773054,60870002 and 61020106009Zhejiang Provincial Natural Science Foundation of China under Grant No. R1110679
文摘The paper presents a formal and practical approach to dependable algorithm development.First,starting from a formal specification based on the Eindhoven quantifier notation,a problem is regularly reduced to subproblems with less complexity by using a concise set of calculation rules,the result of which establishes a recurrence-based algorithm.Second,a loop invariant is derived from the problem specification and recurrence,which certifies the transformation from the recurrence-based algorithm to one or more iterative programs.We demonstrate that our approach covers a number of classical algorithm design tactics,develops algorithmic programs together with their proof of correctness,and thus contributes fundamentally to the dependability of computer software.
基金the 863 Hi-Tech Programmethe National Natural ScienceFoundation of China
文摘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.