Chris Pollett >
Students > [Bio] [Del1] [Del2] [Del3] [Del4] |
CS298 ProposalFeasible C++Yan Yao (ckctyy@hotmail.com) Advisor: Dr. Chris Pollett Committee Members:
Dr. Araya, Dept. of Computer Science (araya@cs.sjsu.edu) Abstract:In recent years there has been an active research area which tries to give functional characterizations of time-bounded or space bounded complexity classes. An old example of this would be Cobham's [C64] characterization of PTIME using simple base functions on the natural numbers and closure under composition and bounded recursion on notation. Unfortunately, this characterization is restricted to natural numbers and thus makes it somewhat awkward to implement ``naturally'' occurring algorithms over other structures such as trees. Another avenue of research in this area, has been to give characterizations of these complexity classes which do not explicitly mention the resource bound in question. So for example, one would try to give a functional characterization of polynomial time that does not explicitly mention polynomials anywhere. Such characterizations have been given by Bellantoni-Cook [BC92] and Leivant [L93] under the names of safe recursion and tiered recursion. Still, both safe recursion and tiered recursion have disadvantages in that many naturally occurring polynomial time algorithms do not fit into the rather rigid discipline they impose. Recently, Hofmann [H02] gives a characterization of EXPTIME which allows computations over a variety of data structures such as lists or trees besides natural number. It also does not explicitly mention resource bounds. Thus, if a programming language were developed out of this characterization it would give the user the illusion of being able to write code of arbitrary time complexity. My Master's project is to develop a subset/variant of C++ guaranteed to be polynomial time. The idea is to add a keyword to C++ called ``polynomial'' which one could tag functions or member functions with. The functions/member functions taged with the polynomial keyword promise to run in polynomial time in their input parameters. I would write a translator using Lex and Yacc from our ``feasible C++'' to regular C++ that translates code not contained in such a polynomial block verbatim into our target. For code in a polynomial block, the code will be parsed to make sure it satisfies the constraints of feasible C++ and, if so, the code will be converted to usual C++. If the code does not satisfy the constraints of feasible C++, an error message will be given. The point of this is that if the translator successfully translate such functions without errors, it would then have verified that the algorithm is in fact a polynomial in its input parameters. Otherwise the parsed code is not polynomial in its input parameters. CS297 Results
Proposed Schedule
Key Deliverables:
Innovations and Challenges
References:[B93] Bjarne Stroustrup. The C++ Programming Language. 1993. [BC92] Stephen Bellantoni and Stephen Cook. New recursion-theoretic characterization of the polytime functions. Computational Complexity, 2:97-110, 1992. [C99] P.Clote. Computation models and function algebras , Handbook of Computability Theory, ed. E.R. Griffor, Elsevier Science B.V. (1999). pp. 589--681. [C64] Cobham, A. The intrinsic computational difficulty of functions. PROC. 1964 INTERNAT. CONGR. FOR LOGIC, METH., AND PHILO. OF SCI., North-Holland, Amsterdam, pp. 24--30. [H02] Martin Hofmann. The strength of non-size increasing computation. Principles of Programming Languages. p. 260--269. ACM press. 2002. [L93] Daniel Leivant. Stratified Functional Programs and Computational Complexity. In Proc. 20th IEEE Symp. on Principles of Programming Languages, 1993. [LMB92] lex & yacc. Levine, Mason, and Brown. O'Reilly & Associates, Inc. 1992. [Pap94] Computational Complexity. C.Papapdimitriou. Addison Wesley. 1994. |