  People solve different problems and know that some of them are simple, some
are complex and some insoluble. The main goal of this work is to develop a
mathematical theory of algorithmic complexity for problems. This theory is
aimed at determination of computer abilities in solving different problems and
estimation of resources that computers need to do this. Here we build the part
of this theory related to static measures of algorithms. At first, we consider
problems for finite words and study algorithmic complexity of such problems,
building optimal complexity measures. Then we consider problems for such
infinite objects as functions and study algorithmic complexity of these
problems, also building optimal complexity measures. In the second part of the
work, complexity of algorithmic problems, such as the halting problem for
Turing machines, is measured by the classes of automata that are necessary to
solve this problem. To classify different problems with respect to their
complexity, inductive Turing machines, which extend possibilities of Turing
machines, are used. A hierarchy of inductive Turing machines generates an
inductive hierarchy of algorithmic problems. Here we specifically consider
algorithmic problems related to Turing machines and inductive Turing machines,
and find a place for these problems in the inductive hierarchy of algorithmic
problems.
