The code for this article can be found in this GitHub folder.
ohOne of my favorite professors throughout my studies told me this:
“Just because your algorithm is inefficient doesn't mean the problem is hard“
This means that if you want to solve any problem (easy or hard), there will always be an approach that is naive enough to be extremely inefficient. For example, let's say you have to go to work at a new workplace. Instead of using Google Maps, you start from your alley and try all possible street combinations (north, south, west, and east). By the time you get to work, your company may be filing for bankruptcy or you may be laid off.
Let's try to be a little more formal. Let's say that in any business or engineering environment, you have to find the minimum either maximum of a function. For example, your company has to maximize sales revenue for a given department. We call this function F. The “strings” that you move, that is, the decisions What you can do to maximize income is a vector unknown. Obviously you can't…