Back to the Complexity of Universal Programs

  • Authors:
  • Alain Colmerauer

  • Affiliations:
  • Marseilles, France

  • Venue:
  • CP '08 Proceedings of the 14th international conference on Principles and Practice of Constraint Programming
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

I start with three examples illustrating my contribution to constraint programming: the problem of cutting a rectangle into different squares in Prolog III, a complicated constraint for Prolog IV, the optimal narrowing of the sortedness constraint. Then I switch to something quite different: to machines, in particular to Turing machines. After the declarative aspect, the basic computational aspect!The paper provides a framework enabling to define and determine the complexity of various universal programs Ufor various machines. The approach consists of first defining the complexity as the average number of instructions to be executed by U, when simulating the execution of one instruction of a program Pwith input x.To obtain a complexity that does not depend on Por x, we introduce the concept of an introspection coefficientexpressing the average number of instructions executed by U, for simulating the execution of one of its own instructions. We show how to obtain this coefficient by computing a square matrix whose elements are numbers of executed instructions when running selected parts of Uon selected data. The coefficient then becomes the greatest eigenvalue of the matrix.We illustrate the approach using two examples of particularly efficient universal programs: one for a three-symbol Turing Machine (blank symbol not included) with an introspection coefficient of 3 672.98, the other for an indirect addressing arithmetic machine with an introspection coefficient of 26.27.