假设我们有n个设备,n个偶数。每个设备可以作为发射机(T)或接收机(R)工作。对于每个设备,我们都有两个数字,iTiRi是设备作为发射机工作时的成本,而Ti是设备作为接收机工作时的成本我们也知道,对于每个Ri
我们的任务是准确地选择Ti>=Ri发射机和i接收机,以实现最低成本。(最终答案仅为最低成本)
附加限制:传输者总是从左到右传输。
这意味着我们可以有序列n/2n/2TTTRRR,等等,但不能有TTRTRR。在任何时候,我们遇到的接收器都不会超过发射器。
哪个算法最适合这个任务?
示例:我们有4个设备。T1=9,R1=6,T2=6,R2=2,T3=8,R3=1,T4=5,R4=3
可能的解决方案1:TRTRTR总成本:9+6+1+3=19
可能的解决方案2:RTTTRR总成本:9+2+8+3=22
最佳解决方案:TTRR,成本19。
所以最后的答案是19。

最佳答案

动态编程解决方案非常简单。
O(n^2)成为一个可以获得的最佳成本,这样f(prefix_len, transmitters)元素已经被处理过,前缀是正确的,并且发射机的数量正好prefix_len多于接收机的数量(在某种意义上,这是一个“平衡”)。
基本情况是transmitters(空前缀是空闲的)。
转换如下所示(我们使电流元件成为发射器)。如果f(0, 0) = 0,还有一个转换f(prefix_len, transmitters) + T[i] -> f(prefix_len, transmitters + 1)(我们把它变成一个接收器)。
答案是transmitters > 0(也就是说,我们使用了所有元件,发射器的数量等于接收器的数量)。

关于algorithm - 收发机网络的最低​​成本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40801899/

10-13 03:02