Greedy Alg:占用开始时间到完成时间

时间:2015-11-02 20:38:44

标签: python algorithm sorting shortest-path greedy

背景信息:

给出一个建议列表:A = {a1,a2,...,ax},其中每个赋值从指定的开始时间到指定的完成时间运行,选择一个最小大小的赋值集,以便来自给定S的所有时间到F至少占用一个任务。

作业可能重叠,可能在开始时间之前开始,在结束时间之后结束。

仅限要求:所选作业之间没有间隙

所有信息都在assignments.txt文件中以下列格式给出:

2   8      // the first line gives the start time and end time
5          // the second line gives the number of assignments to choose from
1   1   3  // the subsequent lines give the assignment number, start time, and finish time
2   2   6
3   5   7
4   6   9
5   5   10

如何在python中编写此算法?

我的想法: 读取文本文件并存储到数组中。根据它们各自的属性分离阵列的元素,然后对贪婪的alg进行编码,即在持续在开始和结束时间内连续选择最长的分配。

这是我到目前为止所做的:

def readFile():
file = open( "assignments.txt", "r" )
unsortedArray = []
for line in file:
    toInt = map(int,line.split())
    unsortedArray.append(toInt)
print unsortedArray
return unsortedArray

def sortArray(unsortedArray):
    for i in range(2, len(unsortedArray)):
        if unsortedArray[i][1] > unsortedArray[i+1][1]:
             unsortedArray[i],unsortedArray[i+1] = unsortedArray[i+1],unsortedArray[i]
        print unsortedArray[i]

def main():
    readFile()
    sortArray(readFile())

main()

0 个答案:

没有答案