Closely related fields in theoretical computer science are analysis of algorithms and computability theory. A key distinction between analysis of algorithms and computational complexity theory is that the former is devoted to analyzing the amount of resources needed by a particular algorithm to solve a problem, whereas the latter asks a more general question about all possible algorithms that could be used to solve the same problem. More precisely, it tries to classify problems that can or cannot be solved with appropriately restricted resources. In turn, imposing restrictions on the available resources is what distinguishes computational complexity from computability theory: the latter theory asks what kind of problems can, in principle, be solved algorithmically.
What two fields of theoretical computer science closely mirror computational complexity theory? What field of computer science analyzes the resource requirements of a specific algorithm isolated unto itself within a given problem? What field of computer science analyzes all possible algorithms in aggregate to determine the resource requirements needed to solve to a given problem?   What field of computer science is primarily concerned with determining the likelihood of whether or not a problem can ultimately be solved using algorithms?