Preview

Modeling and Analysis of Information Systems

Advanced search

Verification of Backtracking and Branch and Bound Design Templates

Abstract

The Design and Analysis of Computer Algorithms is a must of Computer Curricula. It covers many topics that group around several core themes. These themes range from data structures to the complexity theory, but one very special theme is algorithmic design patterns, including greedy method, divide-and-conquer, dynamic programming, backtracking and branch-and-bound. Naturally, all the listed design patterns are taught, learned and comprehended by examples. But they can be semi-formalized as design templates, semi-specified by correctness conditions, and semi-formally verified by means of Floyd method. Moreover, this approach can lead to new insights and better comprehension of the design patterns, specification and verification methods. In this paper we demonstrate an utility of the approach by study of backtracking and branch-and-bound design patterns. In particular, we prove correctness of the suggested templates when the boundary condition is monotone, but the decision condition is anti-monotone on sets of "visited" vertices.

About the Author

N. V. Shilov
Институт систем информатики им. А.П. Ершова СО РАН, Новосибирский государственный университет и Новосибирский государственный технический университет
Russian Federation


References

1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

2. Грис Д. Наука программирования. М.: Мир, 1984.

3. Дейкстра В.Э. Дисциплина программирования. М.: Мир, 1978.

4. Корнмэн Т, Лейзерсон Ч, Ривест Р. Алгоритмы: построение и анализ. М.: МЦНМО, 2000.

5. Непомнящий В.А. Верификация финитных итераций над наборами изменяемых структур данных. Кибернетика и системный анализ. Киев. 2007. №3. С.33-46.

6. Шилов Н.В. Основы синтаксиса, семантики, трансляции и верификации программ. Новосибирск: Новосибирский государственный университет, 2011.

7. Apt K.R., de Boer F.S., Olderog E.-R. Verification of Sequential and Concurrent Programs. Third edition. Springer, 2009.

8. Floyd R.W. Assigning meanings to programs. Proc. of a Symposium in Applied Mathematics. Mathematical Aspects of Computer Science // American Math. Society, Providence, R. I. 1967. Vol. 19. P. 19-32.

9. Golomb S.W. and Baumert L.D. Backtrack Programming // Journal of ACM. 1965. 12(4). P. 516-524.

10. Land A. H. and Doig A. G. An automatic method of solving discrete programming problems // Econometrica. 1960. 28(3). P. 497-520.

11. Kant E. Understanding and Automating Algorthm Design // IEEE Transactions on Software Engineering. 1985. SE-11(11). P. 1361-1374.

12. Smith D. R. Automating the design of algorithms // Formal Program Development. 1993. Lecture Notes in Computer Science. 755. P. 324-354.


Review

For citations:


Shilov N.V. Verification of Backtracking and Branch and Bound Design Templates. Modeling and Analysis of Information Systems. 2011;18(4):168-180. (In Russ.)

Views: 603


Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 1818-1015 (Print)
ISSN 2313-5417 (Online)