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).
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.
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.
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).