Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 面试调度算法_Algorithm_Dynamic Programming_Greedy_Divide And Conquer - Fatal编程技术网

Algorithm 面试调度算法

Algorithm 面试调度算法,algorithm,dynamic-programming,greedy,divide-and-conquer,Algorithm,Dynamic Programming,Greedy,Divide And Conquer,我试图想出一种算法,它总是在这个问题的最佳时间内产生最佳解决方案: 一份工作有n个应聘者,k个房间,他们在一天的不同时间安排面试。面试在每个房间都有一个特定的时间表,每个面试都有一个指定的开始时间si、结束时间fi和面试室ri。所有的时间单位都是整数。此外,我们还需要安排一整天与当前接受采访的人合影。这些照片不会占用任何时间,但在一天中的某个时刻,每个受访者都必须在一张照片中。如果我们计划在时间t拍摄一张照片,那么所有正在接受采访的人都会出现在这张照片中。拍照对每个面试的开始和结束时间没有影响。

我试图想出一种算法,它总是在这个问题的最佳时间内产生最佳解决方案:

一份工作有n个应聘者,k个房间,他们在一天的不同时间安排面试。面试在每个房间都有一个特定的时间表,每个面试都有一个指定的开始时间si、结束时间fi和面试室ri。所有的时间单位都是整数。此外,我们还需要安排一整天与当前接受采访的人合影。这些照片不会占用任何时间,但在一天中的某个时刻,每个受访者都必须在一张照片中。如果我们计划在时间t拍摄一张照片,那么所有正在接受采访的人都会出现在这张照片中。拍照对每个面试的开始和结束时间没有影响。所以问题是:在一个无序的面试列表中,每个面试都有变量si,fi,ri,你如何确保每个面试候选人都在一张照片中,同时尽可能少地拍照

因此,理想情况下,我们会在尽可能多的人在场时拍照,以尽量减少拍照数量。我最初的想法是使用蛮力,但这将是一个非常糟糕的big-O运行时。在返回尽可能少的照片的同时,最小化该算法的运行时间是非常重要的。也就是说,如果你能想出一个快速贪婪算法,它不能完美地解决这个问题,我也想听听这个


我相信我在这里的描述远非完美无缺,因此,如果您想让我澄清任何事情,请随时发表评论,我会回复您。

从以下观察开始:

每次面试时必须至少拍一张照片,因为我们不能在被面试者到达之前或离开之后给他们拍照。 只有在si和fi时,可供拍照的人群才会发生变化。 到达事件si后,如果下一个事件j是到达事件,则无需在si和sj之间拍照,因为si可用的所有人在sj仍然可用。 因此,您可以让一组可用的受访者通过到达事件累积到k人,并等待拍照,直到有人即将离开。 因此,我认为以下算法应该有效:

将到达和离开时间放入一个列表中,并对其进行排序。时间应标记为到达或离开时间以及受访者的索引。 创建一个大小为n的布尔数组,以跟踪每个面试者是否可用面试正在进行。 创建一个大小为n的布尔数组P,以跟踪每个受访者是否已拍照。 在排序的时间列表索引变量i上循环:

a。如果遇到到达,请将[i]设置为true

b。如果遇到离开j,检查P[j]以查看离开的人是否已经被拍照。如果不是,现在拍摄一张照片,并记录其对所有a[k]=true集P[k]=true的效果。最后将A[i]设置为false


排序在logn上,循环有2n次迭代,检查数组是O1。但是,由于在每次拍照活动中,您可能需要循环一次,因此在最坏的情况下,如果没有采访时间重叠,则整个运行时间为on 2。

为了澄清,拍照时,它包括所有房间中的所有受访者?如果是,房间信息是否会以任何方式影响生产的解决方案?@phari Yes。所有房间的所有受访者都在照片中。房间信息就在那里,因为有时候房间里会有人,有时候不会。一个房间里最多只能有一个人。如果我们有5个房间,那么最多有5个人接受采访,但可能只有0人。这回答了你的问题吗?