If you want to do something, at least one of the following must be true:
The task is simple.
Someone else has taught you how to do it.
You have a lot of experience performing similar tasks.
As you’re trying to perform the task, you receive lots of feedback about how you’re doing.
You’ve performed an extremely thorough analysis of the task which accounts for all possibilities.
If a task is complicated (1 is false), then it consists of many sub-tasks, all of which are possible points of failure. In order to succeed at every sub-task, either you must be able to correct failures after they show up (4 is true), or you must be able to avoid all failures before encountering any of them. In order to avoid all failures before encountering any of them, you must already know how to perform the task, and the only ways to obtain this knowledge are through experience (3), through being taught (2), and through analysis (5).
Except I’m not sure there aren’t other ways to obtain the relevant knowledge. If you want to build a house, one option is to try building lots of houses until finally you’re experienced enough that you can build good houses. Another option is to have someone else who already knows how to build a house teach you. Another is to think carefully about how to build a house, coming up with an exhaustive list of every way you could possibly fail to build a house, and invent a technique that you’re sure will avoid all of those failure modes. Are there any other ways to learn to build a house, besides experience, being taught, and analysis? Pretty sure there isn’t.
You have unlimited time and resources so you can ‘brute force’ it (try all random combinations until the task is complete)
While technically true I find this to be a confusing way to think...if it would take you 2^100000 operations to brute force, is this really any different from it being impossible?
That would depend on the type of task—for computational tasks a series of planners and solvers do many ‘jobs’ without knowing what it is doing—just minimising a function repeatedly until the right result appears.
They typically aren’t literally trying all combinations though (or if they are, the space of configurations is not too large). In this sense, then, the algorithm does know what it is doing, because it is narrowing down an exponentially large search space to a manageable size.
If you want to do something, at least one of the following must be true:
The task is simple.
Someone else has taught you how to do it.
You have a lot of experience performing similar tasks.
As you’re trying to perform the task, you receive lots of feedback about how you’re doing.
You’ve performed an extremely thorough analysis of the task which accounts for all possibilities.
If a task is complicated (1 is false), then it consists of many sub-tasks, all of which are possible points of failure. In order to succeed at every sub-task, either you must be able to correct failures after they show up (4 is true), or you must be able to avoid all failures before encountering any of them. In order to avoid all failures before encountering any of them, you must already know how to perform the task, and the only ways to obtain this knowledge are through experience (3), through being taught (2), and through analysis (5).
Except I’m not sure there aren’t other ways to obtain the relevant knowledge. If you want to build a house, one option is to try building lots of houses until finally you’re experienced enough that you can build good houses. Another option is to have someone else who already knows how to build a house teach you. Another is to think carefully about how to build a house, coming up with an exhaustive list of every way you could possibly fail to build a house, and invent a technique that you’re sure will avoid all of those failure modes. Are there any other ways to learn to build a house, besides experience, being taught, and analysis? Pretty sure there isn’t.
I would change 2. to be something like: Someone else has taught you how to do it, or you have instructions on how to do it.
and include
You have unlimited time and resources so you can ‘brute force’ it (try all random combinations until the task is complete)
Yeah, I was considering having instructions to be a type of having been taught.
In the real world, people don’t have unlimited time and resources, so I don’t see the purpose of adding number 6.
While technically true I find this to be a confusing way to think...if it would take you 2^100000 operations to brute force, is this really any different from it being impossible?
That would depend on the type of task—for computational tasks a series of planners and solvers do many ‘jobs’ without knowing what it is doing—just minimising a function repeatedly until the right result appears.
They typically aren’t literally trying all combinations though (or if they are, the space of configurations is not too large). In this sense, then, the algorithm does know what it is doing, because it is narrowing down an exponentially large search space to a manageable size.