February 23, 2016
From: Reddit AMA
I have a very important question that many of my colleagues wish to have answered: Would you rather fight 100 duck sized horses, or 1 horse sized duck? How might you use Mathematica to answer this intelligently?
I’m certainly no expert on fighting … but here’s how I might approach the problem. Basically I would want to make models of these creatures—their mechanics, and if possible their behaviors. I know Mathematica has been used a bunch to model quadruped mechanics (e.g. for dinosaurs in movies, and real things). I’d probably start from models of the biomechanics of ducks and horses. We recently added detailed human anatomy data to the Wolfram Language and Wolfram|Alpha (see e.g. https://www.wolframalpha.com/examples/HumanAnatomy.html), and I know from that project (which took a long time) that there isn’t readily available comparable data for other species. So one would have to wing it a bit (and, yes, I have no idea about models for the wings…)
So … after one has a biomechanics model, then there’s the question of how these critters would fight. Oh, by the way, there’s another issue: how would the anatomies of horses and ducks scale? There are empirical scaling laws for anatomy (how much stronger is a leg if it’s x times bigger, etc.), which perhaps one could use. But to be “realistic” one would have to think about how an actual duck the size of a horse would grow. Maybe one could use synthetic biology to fabricate such a thing, but that’s out of range for now. We don’t even know what genes govern human height … let alone knowing what to modify to change the size of a duck.
OK … but let’s assume we’ve got a plausible biomechanics model. Then we’ve got to model the brains of the critters. In modern times, perhaps we could simply capture training data for a neural network by watching the actual behaviors of ducks and horses when presented with different sensory inputs and situations. At least on short timescales I wouldn’t be surprised if some simple recurrent neural network or some such wouldn’t be able to reproduce the behavior pretty well.
So let’s imagine that we have models for these critters. Now we’d have to work out a strategy for how to fight them. Actually, my tendency might be to try to avoid fighting them, but I’m not sure how it would work negotiating with a horse-sized duck. Maybe by the time we’ve got a good neural net model for the critter, we’d be able to communicate with it, and have some kind of existential discussion … with the conclusion that we didn’t want to fight anyway. But still, if we did have to fight, then we’d want to develop some algorithm for deciding what to do, and responding to the various actions of the “other side”. What I’d tend to do is to search a large space of possible algorithms, looking for ones that perform well in simulations of the fight. Most likely those algorithms will involve a certain amount of apparent randomness (“doing unexpected things”).
After all of this, I’d pick the best algorithms, then run simulations of the duck-horse and horse-duck cases. With luck there’d be a definitive separation in the distribution of outcomes for the two cases … in which case, I’d have an answer! Or it could be that the distributions would overlap a lot … in which case I guess I’d use some statistical criterion or another (“mean worst-case outcome” or “90% probability of victory” etc.) and pick the answer.
Oh my … that was long and nerdy … but it was fun for me … thanks…