算法与设计分析作业3(贪心)

算法与设计分析作业3(贪心)


2 Greedy Algorithm

​ There are n distinct jobs, labeled J1,J2,···,Jn, which can be performed completely independently of one another. Each jop consists of two stages: first it needs to be preprocessed on the supercomputer, and then it needs to be finished on one of the PCs. Let’s say that job Ji needs pi seconds of time on the supercomputer, followed by fi seconds of time on a PC. Since there are at least n PCs available on the premises, the finishing of the jobs can be performed on PCs at the same time. However, the supercomputer can only work on a single job a time without any interruption. For every job, as soon as the preprocessing is done on the supercomputer, it can be handed off to a PC for finishing.
​ Let’s say that a schedule is an ordering of the jobs for the supercomputer, and the completion time of the schedule is the earlist time at which all jobs have finished processing on the PCs. Give a polynomial-time algorithm that finds a schedule with as small a completion time as possible.

Pseudo-code
# 定义一个结构体(类)
# class Job
#   p  #实例变量p,表示任务在超级计算机上所需要花的时间
#   f  #实例变量f,表示任务在PC上所需要花的时间
# end
# @param {Job[]} Jobs
# @return {Job[]}
function find_minimum_time_schedule(Jobs)
    以f为优先级对jobs按降序排序
    return Jobs
end
Prove the correctness

​ 按照PC上所需要的时间降序排序后获得的顺序,即是能最早完成所有任务的顺序。所最少花的时间是

[ img+img ].max 1<=j<=n。对于任务j来说,它完成的时间是img+img ,所有任务完成的时间取最大值即是最早完成任务的时间。

​ 证明该问题有贪心选择的性质。由于我们以f为优先级对jobs按降序排序,所以job1的f1是最大的,job1也是第一个做的,假设最优解B中job1不是最先做的。而是在第k项任务开始做(k>1),那么对于B来说完成第k项任务所需要的时间是img+img(j=k) (因为fk是最大的,且前面超算用的p的和也是最大的),而这个值大于以PC上所需要的时间降序排序后获得的顺序任意一个任务完成的时间,这与B是最优解矛盾(假设只有两个任务J1和J2,f1>f2,第一种情况:J1在前J2在后(按照贪心选择性质),则J1完成的时间是p1+f1,J2完成的时间是p1+p2+f2。第二种情况,J1在后J2在前,J1完成的p1+p2+f1,这个值大于第一种情况的任何任务的完成时间)。所以该问题有贪心选择性质,最优解中包含让f最大的任务先做。

​ 该问题有最优子结构性质。当第一个任务被选择之后(f最大的任务),我们可以用相同的算法来选择接下来的n-1个任务。因此该问题可以用贪心算法完成。

The complexity of your algorithm

​ 时间复杂度主要是排序算法的时间为O(nlogn)。

3 Greedy Algorithm

​ Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so an island in the sea can be covered by a radius installation, if the distance between them is at most d.

​ We use Cartesian coordinate system, defining the coasting is the x-axis. The sea side is above x-axis, and the land side below. Given the position of each island in the sea, and given the distance of the coverage of the radar installation, your task is to write a program to find the minimal number of radar installations to cover all the islands. Note that the position of an island is represented by its x-y coordinates.

Pseudo-code
# 定义一个结构体(类)
# class Pos  #岛的位置
#   x  #岛的横坐标
#   y  #岛的纵坐标
# end
# class Interval #想要探测到岛雷达在横轴安装的区间
#   s  #区间的开始
#   e  #区间的结束
# end
# @param {Pos[],Integer} 
# @return {Integer}
function find_minimal_installations(poss,d)
    len=poss.length
    return 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Practice 1 Date: Monday, March 18th, 2013 We highly encourage being environment friendly and trying all problems on your own. Implement exercise 2.3-7. Implement priority queue. Implement Quicksort and answer the following questions. (1) How many comparisons will Quicksort do on a list of n elements that all have the same value? (2) What are the maximum and minimum number of comparisons will Quicksort do on a list of n elements, give an instance for maximum and minimum case respectively. Give a divide and conquer algorithm for the following problem: you are given two sorted lists of size m and n, and are allowed unit time access to the ith element of each list. Give an O(lg m + lgn) time algorithm for computing the kth largest element in the union of the two lists. (For simplicity, you can assume that the elements of the two lists are distinct). Practice 2 Date: Monday, April 1st, 2013 We highly encourage being environment friendly and trying all problems on your own. Matrix-chain product. The following are some instances. Longest Common Subsequence (LCS). The following are some instances. X: xzyzzyx Y: zxyyzxz X:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCALLAAQANKESSSESFISRLLAIVAD Y:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCTLLAAQANKENSNESFISRLLAIVAG Longest Common Substring. The following are some instances. X: xzyzzyx Y: zxyyzxz X:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCALLAAQANKESSSESFISRLLAIVAD Y:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCTLLAAQANKENSNESFISRLLAIVAG Max Sum. The following is an instance. (-2,11,-4,13,-5,-2) Shortest path in multistage graphs. Find the shortest path from 0 to 15 for the following graph.   A multistage graph is a graph (1) G=(V,E) with V partitioned into K >= 2 disjoint subsets such that if (a,b) is in E, then a is in Vi , and b is in Vi+1 for some subsets in the partition; and (2) | V1 | = | VK | = 1.     Practice 3 Date: Monday, April 15th, 2013 We highly encourage being environment friendly and trying all problems on your own. Knapsack Problem. There are 5 items that have a value and weight list below, the knapsack can contain at most 100 Lbs. Solve the problem both as fractional knapsack and 0/1 knapsack. A simple scheduling problem. We are given jobs j1, j2… jn, all with known running times t1, t2… tn, respectively. We have a single processor. What is the best way to schedule these jobs in order to minimize the average completion time. Assume that it is a nonpreemptive scheduling: once a job is started, it must run to completion. The following is an instance. (j1, j2, j3, j4) : (15,8,3,10) Single-source shortest paths. The following is the adjacency matrix, vertex A is the source.  A B C D E A -1 3 B 3 2 2 C D 1 5 E -3 All-pairs shortest paths. The adjacency matrix is as same as that of problem 3.(Use Floyd or Johnson’s algorithm)     Practice 4 Date: Monday, May 8th, 2013 We highly encourage being environment friendly and trying all problems on your own. 0/1 Knapsack Problem. There are 5 items that have a value and weight list below, the knapsack can contain at most 100 Lbs. Solve the problem using back-tracking algorithm and try to draw the tree generated. Solve the 8-Queen problem using back-tracking algorithm.    

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值