This preview shows pages 1–3. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: 4.10 Problems Inherent in the Evolution of Algorithms 221 Halting Problem The Halting Problem is basically an instance of the Entscheidungsproblem and asks for an algorithm that decides whether another algorithm will terminate at some point in time or runs forever if provided with a certain, finite input. Again, Turing [2065, 2066] proved that a general algorithm solving the Halting Problem cannot exist in general. One possible way to show this is to use a simple counterexample: Assume that a correct algorithm doesHalt exists (as presumed in Algorithm 4.2 ) which takes a program algo as input and determines whether it will terminate or not. It is now possible to specify a program trouble which, in turn, uses doesHalt to determine if it will halt at some point in time. If doesHalt returns true , trouble loops forever. Otherwise it halts immediately. In other words, doesHalt cannot return the correct result for trouble and hence, cannot be applied universally. Thus, it is not possible to solve the Halting Problem algorithmically for Turingcomplete programs in a Turingcomplete representation. One consequence of this fact is that there are no means to determine when an evolved program will terminate or whether it will do so at all (if its representation allows infinite execution, that is) [2011, 2254]. Langdon and Poli [1243] have shown that in Turingcomplete linear Genetic Programming systems, most synthesized programs loop forever and the fraction of halting programs of size length is proportional to √ length , i. e., small. Algorithm 4.2 : Halting Problem: reductio ad absurdum begin 1 doesHalt( algo ) ∈ { true , false } 2 begin 3 ... 4 end 5 Subalgorithm trouble() 6 begin 7 if doesHalt( trouble ) then 8 while true do 9 ... 10 end 11 end 12 Countermeasures Against the Entscheidungsproblem For general, Turingcomplete program representations, neither exhaustive testing nor algo rithmic detection of correctness is possible. Model Checking Model checking 76 techniques [413, 1483] have made great advance since the 1980s. According to Clarke and Emerson [412], “Model checking is an automated tech nique that, given a finitestate model of a system and a logical property, systematically checks whether this property holds for (a given initial state in) that model.” The result of the check ing process is either a confirmation of the correctness of the checked model, a counterexample in which it fails to obey its specification, or failure, i. e., a situation in which no conclusion could be reached. Hence, in the context of Genetic Programming, a model checker can be utilized as a Boolean function ϕ : X mapsto→ B which maps the evolved programs to correct ( ≡ true ) or 76 http://en.wikipedia.org/wiki/Model_checking [accessed 20081002] 222 4 Genetic Programming incorrect ( ≡ false ). As objective function, ϕ therefore is rather infeasible, since it would lead directly to the allornothing problem discussed in Section 4.10.2 ....
View
Full
Document
This document was uploaded on 08/10/2011.
 Spring '11
 Algorithms

Click to edit the document details