Dynamic Programming is a discrete optimization technique. It means, the variables we want to calculate using this method are discrete. As an example, if x is one such variable then is acceptable, but ‘x is a real number between 0 and 1′ is NOT acceptable since there are infinitely many real numbers between 0 and 1. In math terms, we can say that the domain of the variable x is a countable set.
Problems that are solved by dynamic programming are recursive nature. Let’s look at the problem that ask us to calculate the sum up to a number, i.e., if is such a function then . The recursive definition (assuming i is non negative) is following:
“There has not been a king since the first brethren court, and that is not likely to change!”, Captain Chevalle sighed. Elizabeth Swann wondered, “Why not?”. “Because the pirate king is elected by popular vote…”, as Mr. Gibbs started to explain, Captain Barbossa finished the sentence, “…and each pirate only votes for himself.”~Pirates of the Caribbean.
Yesterday I was having lunch with my friends Jocelyn, Johnson, and Adrian. One thing lead to another, we started talking about pirates. In one of her interviews, Jocelyn came across a question about how a senior pirate would divide some gold coins among 4 other pirates so that they would not vote to kill him. It was immediately apparent that the senior pirate would not give any gold to 2 of the pirates, but how much he should give the other 2 pirates was not obvious to me. It was stuck in my mind. I concluded that there must be some missing pieces of the question. It turns out that this problem is of a significant theoretical interest to many people. Let’s define the problem first.
There are 5 pirates of different ranks in a ship and they have a treasure of 100 gold coins. The current highest ranking pirate will divide the coins, and all 5 pirates will vote for or against it. If half or more of the pirates vote for it, then the coins will be divided that way. Otherwise, the pirate proposing the scheme will be killed, and the process is repeated with the pirates that remain. The most important thing for a pirate is his life. After that he wants to get as much coins as possible. As every pirate is bloodthirsty, if voting for or against will give him the same number of coins, he will vote against so that the pirate who proposed the plan will be killed. All 5 pirates are intelligent, rational, and good at math. How will the highest ranking pirate divide the coins?