To gather my comments on solving problems in general, inspired by the training that I has attended last week. I will skip the two steps of 1) Problem statement and 2) Formalize problem. These steps are crucial for solving any problem, but will not be covered here.
In my view, many problems can be seen as finding input $latex X$ such that output $latex Y = F(X)$ satisfies certain conditions. For example, essentially, root cause analysis for a problem of f(X) = incorrect (in contrast to f(X) = expected) is to identify subset of $latex X$ that causes the incorrect results.
Note that the problem statement and formalization is important as it will determine how $latex X$ should be represented:
- Linear: vectors / matrix
- Convolution: complex data structure / layers
Solving approach: I think there are two main approaches:
- Analytical
- Logical analysis: based on the logical rules of causality $latex X \rightarrow Y$ is known. For given output Y, one can identify possible root causes X and do back-testing using the rules to validate. Known as: fish-bone techniques.
- Differential thinking: one does not know about the blackbox function $latex X \rightarrow Y$ but knows how Y changes when X changes by a $latex \Delta X$
- Recursive thinking: one does not know about the blackbox function $latex X_n \rightarrow Y_n$ but know how to link the problem to $latex X_{n-1} \rightarrow Y_{n-1}$ and can solve the problem at certain lower level. Known as: divide-and-conquer.
- Equivalent mapping: one can relate this problem to a equivalent, more familiar and solvable problems.
- Stochastic
- Mix and match solutions coming from different related problems under different domains.
- (to be continued…)