Certifying algorithms

A certifying algorithm is an algorithm that produces, with each output, a certificate or witness (easy-to-verify proof) that the particular output has not been compromised by a bug. A user of a certifying algorithm inputs x , receives the output y and the certificate w , and then checks, either manu...

Full description

Saved in:
Bibliographic Details
Published inComputer science review Vol. 5; no. 2; pp. 119 - 161
Main Authors McConnell, R.M., Mehlhorn, K., Näher, S., Schweitzer, P.
Format Journal Article
LanguageEnglish
Published Elsevier Inc 01.05.2011
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:A certifying algorithm is an algorithm that produces, with each output, a certificate or witness (easy-to-verify proof) that the particular output has not been compromised by a bug. A user of a certifying algorithm inputs x , receives the output y and the certificate w , and then checks, either manually or by use of a program, that w proves that y is a correct output for input x . In this way, he/she can be sure of the correctness of the output without having to trust the algorithm. We put forward the thesis that certifying algorithms are much superior to non-certifying algorithms, and that for complex algorithmic tasks, only certifying algorithms are satisfactory. Acceptance of this thesis would lead to a change of how algorithms are taught and how algorithms are researched. The widespread use of certifying algorithms would greatly enhance the reliability of algorithmic software. We survey the state of the art in certifying algorithms and add to it. In particular, we start a theory of certifying algorithms and prove that the concept is universal.
Bibliography:ObjectType-Article-2
SourceType-Scholarly Journals-1
ObjectType-Feature-1
content type line 23
ISSN:1574-0137
1876-7745
DOI:10.1016/j.cosrev.2010.09.009