经典例题-多机调度问题

What

  1. 把大量的工作分配的许多的机器上
  2. 每一步选择当前最好的
  3. 最后的解不一定是最优的
    private static void greedStrategy() {
        // sort
        Arrays.sort(works, (a, b) -> b - a);
        // when workNum < machineNum
        if (workNum <= machineNum) {
            minimalTime = works[0];
            return;
        } else {
            // 为每一个作业选择机器
            for (int i = 0; i < workNum; i++) {
                // 选择最小的机器
                int flag = 0;
                int tmp = machines[flag];
                // 选择最小的机器
                for (int j = 1; j < machines.length; j++) {
                    if (tmp > machines[j]) {
                        flag = j;
                        tmp = machines[j];
                    }
                }
                // 将作业交个机器做
                machines[flag] += works[i];
            }
            // find max;
            minimalTime = findMax(machines);
        }
    }

你可能感兴趣的:(经典例题-多机调度问题)