磁带最优存储问题: 设有n 个程序{1,2,..., n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是L i , 1 ≤ i ≤ n。这n 个程序的读取 概率 分别是 p 1 ,p 2 ,...,p n , 且p 1 +p 2 +...+p n = 1 。如果将这n 个 1,2,....,n 的次序存放,则读取程序i所需的时间 tr=c*(P 1 × L 1 +P 2 × L 2 +...+P r × L r ) 。这n 个程序的 平均读取时间 为 t 1 +t 2 +...+t n 。实际上第k个程序的 读取概率 为 a k /(a 1 +a 2 +...+a n ) 。对所有输入均假定 c=1 。磁带最优存储问题要求确定这n个程序在磁带上的一个存储次序,使平均读取时间达到最小。试设计一个解此问题的算法,并分析算法的正确性和计算复杂性。 要求:先写出贪心策略,问题建模,Python编写代码,测试数据,测试结果。