The Gossiping Girls Problem
There are n girls. All have one gossip to tell, which is not
known to others. They are very desperate to tell their gossips
and hear what others have. They communicate via a two
way channel (eg. Telephone), thus when two girls are on the phone
they exchange all the gossips they already know. What is
the minimum telephone
calls needed so that every one of them knows all the gossips?
A trivial solution is
- All girls call one girl (say girl A)
and tell their gossips and hear all the gossips that A already knows
from the previous calls including her own gossip.
- girl A calls every body except the last caller and tell
all the gossips that they don't know.
This solution requires 2n-3 calls.
The question for you is - Can it be done with fewer calls?
Use Cadence SMV to model the problem and find a better solution
if it exists. It is enough that you try for at most n=5.
For n>5 model checking will be slow.
FAQs
1. If you use arrays (vectors) in your model, then you can read about
vectors and vector operators from the language reference page in the
vw-help menu
For example: ANDing the entire vector: pre[i] is
given as
&[pre[i] : i= 0..N]
which means: pre[0] & pre[1] & ... & pre[N]
Similarly for two dimensional array, it is:
&[&[pre[i][j]: i = 0..N] : j = 0..N]
Last modified March 10, 2005 by Biniam <biniam AT cs.kun.nl>
office A6004