Lessons from working 6 months on a math problem and failing
alexandros.resin.io
alexandros.resin.io
I worked with some mathematicians on an online load balancing problem, and we were trying to model the behavior of our connections. I did not have the mathematical chops to come up with the ideas for the models. But I was running the experiments and diving into the data and figuring out where and why our models broke, so I could reason about the behavior we were trying to model in the same way that I can walk around my apartment with my eyes closed.
Having this level of intuition of the behavior we were trying to model was invaluable during discussions. I may not have been able to come up with the mathematical models, or even understand them completely from first principles, but once they were explained to me, I could give instant feedback on how well it might work based on my understanding of the data.
Short version: know your data.
But the best part of working in an environment where I'm regularly over my head is that in ignorance I'm free (and safe) to say "hey from down here this looks a lot like this other problem in a different space, can we adapt that solution?" Whether or not it's doable, it helps because I either learn something or directly shape the what the "smart folks" are doing.
I also find that working at a level that's over my head for the last few years has made me fearless. At the startup I'm associated with, when one of the other programmers says "we don't know how to do that!" I can say "So I haven't known what I'm doing for years, doesn't mean we can't go ahead and just do it and fix it later". And we fix a lot, but with a solid straw-man it's much easier because we can say "this is the actual problem".
I think it's not just knowing your data - it's also learning to be comfortable in your own ignorance (not embracing it, just accepting it as a "for now" situation) and OK with uncertainty.
I would imagine being willing to "be dumb" separates the "really smart" from the "merely smart". The one who come up with the most amazing things tend to question assumption in the fashion of the "dumb" people who haven't been fully initiated into a field.
I don't think enough people appreciate (or understand) your point 4. I am fairly good at algorithmic optimizations and pretty good at your implementation optimizations, but I do not have the math to do much mathematical optimizations, so spending any time on these kinds of problems gives me a visceral understanding of your point 8.
But I've talked to too many people who don't understand that such problems exist, and therefore don't see the point of any optimization (and then wonder why others consider their products to be hideous monstrosities), or believe that micro-optimizations or algorithms are the best you can do. In reality, all three are closely tied together and, in fact, applicable to almost any problem.
Your points 6 and 7 could be elaborated more. Or at least stamped on the foreheads of some educators of my acquaintance. One of the things I learned from what math education I have had is that you won't really understand something without seriously using it.
I hope that this was actually part of your PhD research, or if not that it didn't delay you too much. And if you're out in the "real world", all you have to do to succeed is to forget you ever heard of your point 10.
I'm in the real world now for good, and I might be lucky that things in the class that would invoke the reaction this problem did, are few and far between. I'd like to find something that I can enjoy this much while being profitable, but, oh well, a man can dream, right?
I've had this experience before. I have a severe problem of not being able to focus on anything, and it feels great to be working on a problem like this. I'd love to find a problem like that again.
Why not use a lookup table to memoize the results? There are only 256 possible cases for a single byte. Or is this still considerably slower than a single processor instruction on the i7?
Still, it's always interesting to see if one can develop something to come up with one's own solution.
Nope! We now know for all grid sizes whether or not they are rectangle-free four-colorable. 17x17, 17x18, and 18x18 were the last remaining cases (there are no such grids larger than 18x18). So you have nothing to worry about.
Sounds like a challenge :-) Seriously though, I am not a mathematician, did the SAT solution to the 17 x 17 show there were no solutions past 18 x 18? I ask because on the original challenge site was an update [1] which I was trying to parse. It talks about OBS4 but I was trying to parse if that was the class of problem or the particular challenge problem.
[1] "UPDATE: THE RESULTS ABOUT OBS4 HAVE CHANGED SINCE THE ORIGINAL POST SINCE BRAD LARSON EMAILED ME A 4-COL OF 21x10 and 21x11. UPDATE: BRAD LARSON EMAILED ME A 4-COL OF 22x10. " -- http://blog.computationalcomplexity.org/2009/11/17x17-challe...
2,2,1,3,3,4,2,1,4,1,3,2,2,3,4,4,3
2,4,2,1,1,2,3,3,4,4,3,4,1,1,3,2,2
3,1,3,4,4,4,1,1,1,4,3,2,4,1,2,3,2
4,1,2,3,1,3,2,3,4,1,2,1,4,4,1,3,4
3,1,1,1,2,3,2,4,2,3,4,4,4,3,2,2,1
1,3,3,2,4,3,1,4,4,1,2,2,1,2,3,2,3
3,1,4,2,4,2,2,3,3,2,1,4,1,4,4,1,3
4,3,1,2,1,1,1,3,2,4,4,3,2,3,4,1,2
4,4,3,3,4,2,4,2,3,1,2,3,2,1,2,1,1
1,2,2,2,1,3,4,4,1,4,3,3,3,4,2,4,1
4,2,3,4,3,2,1,3,2,3,1,4,3,2,1,4,1
4,2,4,1,2,4,1,4,3,2,2,1,3,3,3,3,2
1,3,2,1,2,4,4,1,3,3,3,4,2,2,1,1,4
1,4,1,4,3,3,3,4,3,2,1,1,2,1,4,2,4
2,4,1,2,2,4,3,2,1,3,4,3,1,4,1,3,3
3,3,2,3,4,1,3,2,2,2,4,2,3,1,1,4,4
2,3,4,4,3,1,4,1,4,2,4,1,1,2,2,3,1