问题:
一个公司要创建一些发射台,每个发射台的成本是P,发射台共N个
经过调查,得出有M个用户群,我们可以给公司代理收益,但取决与如下数据,一个用户群需要A,B两个转发的才能给公司代理C的利用,A、B是N中的任何一点
要求帮公司计算如何投资才能获利最大。
数据如下:P={1,2,3……N}
M个用户群的数据如下
A B C
1 2 3
2 3 1
1 4 2
……
算法:
这个问题看来比较复杂,有的人用组合排列,就M组数据进行组合计算,个人认为不好
我想到的一种算法,不知是否是最简单的
将M组数据填充到一个N*N的二维数组中,N即为发射点数,M数据中的A、B对应二位数组的位置,C就作为这个位置的值,这样就将问转化成一个带权的图(用二维数组表示)
再一列一列地计算,计算一个发射点涉及的所有利益,再将这个利益和该点的成本比较,如果成本比当前点涉及的大,那么这个点肯定是赚不到钱的,将这个点去掉,同时将跟这个点有关的连线去掉,也就是将数组中这个点的行数据全部设为0,继续新一轮的循环,直到不能去除任何一个点,得出结果。对最后的结果进行计算,看总成本跟从收益的差值,如果为负数,那么不能创建任何点,即便最后还剩下很多点。
后来跟同时讨论如果一点它涉及的利益跟成本相同,那么到底应该是去除还是保留,当时争议比较大,后来我自行验证,感觉去除不去除都没有关系,不去除能更能快得出结果,但这个可能是错的,要通过总结果判断,如果去除,比较慢得到结果,但数据比较准确。