A fundamental reality of life is **complexity**. Any attempt to define
an *inherent* value in anything must depend on its complexity. Hence,
search for ways to deal with complexity is the most basic problem in
life. In fact, it can also be used to define life itself- anything that
does better than random at dealing with the complexities of life is
alive.

Here, I have comfortably been ambiguous about what solving complexity
entails. Clearly, there is also a need for a **goal**, whether
well-defined or indeterminate.

The process of attaining such a *goal*, in the face of *complexity* is
what I mean by **search** (I think this is equivalent to *optimization*
but I don't have a proof).

## Searching

Given its principal importance, it is surprising that I am yet to find literature that deal with this problem at the most abstract level. The goal of this post is to collect my thoughts about it and see if we can find something of value at so high a level- highly unlikely but of supreme value if found.

## Exact Methods

Simple problems can be handled directly. Binary search is a good example. The method is direct and deterministic as a consequence of limited complexity. We can come up with direct methods if we (our brain that is) are capable of wrapping our heads around the problem.

## Heuristics

If the complexity is well beyond any full-blown analysis, we resort
to heuristics. In such situations, no one (except reality) has the
computational capacity to fully determine the solution (or the future).
The only reason predictions about future are on such shaky ground is
that reality if **infinitely** complex and we will forever lack the
capacity to fully analyze it.

In dealing with such kinds of complexity, heuristics come to our rescue. To be useful across a large spectrum of problems, they need to refrain from being very precise. Yet, at their core they contain some fundamental truth about the complexity of a problem. Viewed through this prism, even the most exact laws and equations in physics and other science are just heuristics expressed in the language of Maths.

The goal of any search for general problem solving strategies should then be to find heuristics (that these heuristics can be expressed mathematically is a different matter).