Frontier Search

How to search the space of programs for a code that solves a given problem? Standard asymptotically optimal Universal Search orders programs by Levin complexity, implementing an exponential trade-off between program length and runtime. Depending on the problem, however, sometimes we may have a good reason to greatly favor short programs over fast ones, or vice versa. Frontier Search is a novel framework applicable to a wide class of such trade-offs between program size and runtime, and in many ways more general than previous work. We analyze it in depth and derive exact conditions for its applicability. Introduction In an inversion problem, the aim is to find a program p that produces a desired output x. Algorithms that search the space of programs for p are guided (implicitly or explicitly) by an optimality criterion, which is generally based on program length and runtime. Levin complexity, a criterion where the trade-off between program length and runtime is exponential, can readily be optimized using Levin Search (Lev73). The framework of ‘speed priors’ (Sch02) results in a more flexible search scheme. The aim of this paper is to develop a search scheme applicable to an even wider class of user-defined optimality criteria. More formally, consider a programming language L and a (countable) set P of programs. Let p : N→P be an enumeration of P . We refer to the i-th program as pi. Then, Levin Search finds p ∈P such that L(p) = x. It works by executing in parallel all programs in P such that the fraction of time allocated to the i-th program is 2−l(pi)/S, where l(pi) is the length of a prefix-free binary encoding of pi, and 0 < S ≤ 1 is a normalization constant. Alternatively, a growing number of programs can be executed for a fixed exponentially growing time one after the other, which involves restarting the programs several times. This simpler algorithm performs worse only by a constant factor. Levin Search, though simple in its form, enjoys two important theoretical properties. The first property concerns the time required to find a solution. It is guaranteed that Levin Search solves the inversion problem within time 2l(p ⋆)+1 ·S · τ(p⋆), where p⋆ ∈P is the fastest program that solves the problem, and τ(p⋆) is the number of time steps after which p⋆ halts. Since p⋆ depends solely on the problem itself, one can claim that Levin Search solves the problem in time linear to the runtime of the fastest program available, despite the prohibitively large multiplicative constant. The second property, on the other hand, characterizes the quality of the solution. It has been shown that the program found by Levin Search (asymptotically) optimizes the Levin complexity Kt defined as Kt(x) = min p∈P {