Recently I sort of stumbled on a problem of finding an efficient topology given a weighted directed graph. Consider the following scenario:
Node 1 is connected to 2,3,4 at 50 Mbps. Node 1 has 100 Mbps network card.
Node 3 is connected to 5 at 50 Mbps. Node 3 has 100 Mbps card.
Node 4 is connected to Node 3 at 40 Mbps. Node 4 has 100 Mbps card.
(Sorry about not having a picture)
Problem: If Node 1 starts sending data to its immediate nodes (2 and 3), we can clearly see it's network card capacity will be drained out after Node 3. Whereas if it were to skip node 3 and start sending to node 4, the data will eventually reach to node 3 via 4 and hence, node 5 will be getting data via node 3. The problem becomes more complicated if all the links were of 50 Mbps and we can clearly see that node 2 and node 4 are the only way to reach all nodes.
Question: Is there an algorithm which gives the optimal path to ALL nodes keeping the network (card) capacity in mind?
I read the shortest path algorithm,max flow algorithms but none of them seem to address my problems. perhaps,im missing something. I'll appreciate if someone can help me out.