For the uninformed, the 2 Armies problem is a thought experiment relevant to, among other things, Data-communications. Here’s the scenario in a nutshell:
There are 2 battalions belonging to the same army. They are on either side of a second army, such that the first group has the second flanked. If they attack at the same time they can beat the foe they surround, but failure to synchronize their attack will result in defeat. Complication: The only way they have to communicate with each other is by sending messengers, and they have no way of knowing whether or not a sent messenger made it to his destination or not, which is a very real possibility what with having to make it through the enemy camp.
The discussion is this: How does one commander communicate with the other, such that they both know for certain when the other will attack, thus ensuring their victory?
Now, as I said, this is intended to be used as a through experiment and when used in that matter I think it still has a lot of value…But. The person who first explained it to me didn’t did not grasp that this was the purpose of the problem and as a result explained it as a legitimate issue, complete with preconceived constraints and poorly thought out solutions. With this is mind, this serves as something of a take-that at him, but fortuitously it is a solution that, in addition to proving his…scenario false, is also a good base-line for the actual, real problem. Now let’s get into my solution.
The mechanic I take advantage of here is what I’d call levels of knowing-ness. Ever heard the expression “I know he knows but he doesn’t know I know that” or something to that effect? Same basic idea. Incidentally, because of the association, one of the incidental benefits of this solution is finding the place where “Knowing they know something”, or levels of knowing, becomes redundant. Keeping in mind that one of the 2 groups must be the initiator of communications, let’s lay this all out:
Level One
- Commander 1 Sends a Messenger to Commander 2 “Hey dude, let’s attack at dawn!”
- Commander 2 Replies “I got your message. LOVE IT. Let’s doit”
At this point commander 2 has gotten commander 1′s message, but the reverse may or may not be true. What’s more, even if Commander 1 did get it, Commander 2 has no way of knowing! So we move on to level 2.
Level Two
- Commander 1 Sends a Reply ”Got your reply bro. glad to have you one board this tubular plan!”
- Commander 2 then replies again “So we’re on the same page? RADICAL! TTYL!!”
Now things are improving. At this point they both know that the other got the previous message. This is in fact the interaction we are looking to take advantage of. You see, while completion of one level confirms the one before it, the current level (in this case 2) has its completion unclear. It’s also worth pointing out that, as the second speaker, Commander 2 is in a position to have more information than Commander 1, because he knows whether he himself received the last message. With this in mind let’s do 1 more level.
level 3
- C1 sends another confirmation “So…uh. Just making sure you know we’re still on for par-TAY day. C1 OUT!”
- C2 replies”Dude, insecure much? I told you I’d show up! Now let this turtle get his beauty sleep!:
At this point both commanders know that the other has gotten the message. They also know that the other knows this. Ideally these communications will go through, but the fact that they happened at all mean that the above information is known. We’ve done it! yay! And with only 3 levels of recursion to boot. Not too bad for guaranteed message delivery.
Until next time this has been, uh, me! Make sure you leave a comment telling me if you want to see more of this sort of thing. And for that matter whether you’ve spotted any mistakes in my presentation. And above all have a nice day!