4 ms·
Some tools that can help: * break the hard problem into smaller problems (e.g. "make a car that drives itself" would really benefit from considering smaller co
by drdrey 9y ago
Some tools that can help:
* break the hard problem into smaller problems (e.g. "make a car that drives itself" would really benefit from considering smaller components)
* reframe the problem. Sometimes changing the perspective on a problem lets you leverage tools or techniques from related fields. For instance, there isn't much good literature on techniques for understanding obfuscated programs, much of it gets bogged down in low-level details and has a very short shelf life. But there is one field that has a lot of good literature on understanding and transforming programs: compilers. Realizing that was transformative in my own research.
* go bottom-up: are there special cases that are easier to solve than the whole? Can you generalize from there?
* go top-down: pretend that you could use some off-the-shelf components that would automagically solve parts of the problem. See if you can compose them into something that looks like a solution, then see how to implement them.
- smaddox 9y agoGreat response! Reframing the problem is an especially important and well-known technique in applied mathematics and physics. And the others can arguably be generalized into "solve the easiest part first". If the easiest part is at the bottom, start at the bottom; if it's at the top, start at the top. Keep solving the easiest part remaining until there's nothing left to solve. This inherently requires breaking the problem into achievable sub problems.