Certifying algorithm

In theoretical computer science, a certifying algorithm is an algorithm that outputs, together with a solution to the problem it solves, a proof that the solution is correct. A certifying algorithm is said to be efficient if the combined runtime of the algorithm and a proof checker is slower by at most a constant factor than the best known non-certifying algorithm for the same problem.

Comment
enIn theoretical computer science, a certifying algorithm is an algorithm that outputs, together with a solution to the problem it solves, a proof that the solution is correct. A certifying algorithm is said to be efficient if the combined runtime of the algorithm and a proof checker is slower by at most a constant factor than the best known non-certifying algorithm for the same problem.
Has abstract
enIn theoretical computer science, a certifying algorithm is an algorithm that outputs, together with a solution to the problem it solves, a proof that the solution is correct. A certifying algorithm is said to be efficient if the combined runtime of the algorithm and a proof checker is slower by at most a constant factor than the best known non-certifying algorithm for the same problem. The proof produced by a certifying algorithm should be in some sense simpler than the algorithm itself, for otherwise any algorithm could be considered certifying (with its output verified by running the same algorithm again). Sometimes this is formalized by requiring that a verification of the proof take less time than the original algorithm, while for other problems (in particular those for which the solution can be found in linear time) simplicity of the output proof is considered in a less formal sense. For instance, the validity of the output proof may be more apparent to human users than the correctness of the algorithm, or a checker for the proof may be more amenable to formal verification. Implementations of certifying algorithms that also include a checker for the proof generated by the algorithm may be considered to be more reliable than non-certifying algorithms. For, whenever the algorithm is run, one of three things happens: it produces a correct output (the desired case), it detects a bug in the algorithm or its implication (undesired, but generally preferable to continuing without detecting the bug), or both the algorithm and the checker are faulty in a way that masks the bug and prevents it from being detected (undesired, but unlikely as it depends on the existence of two independent bugs).
Is primary topic of
Certifying algorithm
Label
enCertifying algorithm
Link from a Wikipage to another Wikipage
Bipartite graph
Category:Algorithms
Category:Error detection and correction
Category:Software testing
Chordal graph
Clique (graph theory)
Directed acyclic graph
Extended Euclidean algorithm
Formal verification
Graph theory
Greatest common divisor
Kuratowski's theorem
Linear time
Planar graph
Proof checker
Sanity check
Theoretical computer science
Topological sorting
SameAs
2e733
Certifying algorithm
Q28455530
Subject
Category:Algorithms
Category:Error detection and correction
Category:Software testing
WasDerivedFrom
Certifying algorithm?oldid=916259824&ns=0
WikiPageLength
4899
Wikipage page ID
51386092
Wikipage revision ID
916259824
WikiPageUsesTemplate
Template:=
Template:Math
Template:Mvar
Template:Reflist