以下是多机调度问题的贪心算法 Java 代码:

import java.util.*;

public class MultMachineScheduling {
    public static int schedule(int[] jobs, int m) {
        PriorityQueue<Integer> pq = new PriorityQueue<>(m);
        for (int i = 0; i < m; i++) {
            pq.offer(0);
        }
        for (int i = 0; i < jobs.length; i++) {
            int time = pq.poll();
            time += jobs[i];
            pq.offer(time);
        }
        int maxTime = 0;
        while (!pq.isEmpty()) {
            int time = pq.poll();
            maxTime = Math.max(maxTime, time);
        }
        return maxTime;
    }

    public static void main(String[] args) {
        int[] jobs = {10, 20, 30, 40, 50, 60, 70, 80, 90};
        int m = 3;
        int time = schedule(jobs, m);
        System.out.println('Minimum time required to schedule all jobs is: ' + time);
    }
}

在这个算法中,我们首先创建了一个优先队列来存储每个机器的完成时间。我们将所有机器的完成时间初始化为 0。然后,我们遍历所有作业,将它们按顺序分配给每个机器。我们选择完成时间最早的机器,并将当前作业的时间添加到该机器的完成时间中。最后,我们找到所有机器中完成时间最长的时间,它将是我们的最小总时间。

在上面的示例中,我们使用了一个具有 9 个作业和 3 个机器的示例来演示如何使用贪心算法来解决多机调度问题。运行此代码,将输出可以在给定的 3 台机器上完成所有作业所需的最小时间。


原文地址: https://www.cveoy.top/t/topic/njYo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录