超简易调度算法描述 - pfjhyyj/TrainDispatchKit GitHub Wiki

超简易调度算法描述

可用操作

  1. 让序列头部的某一火车进入任意栈中, 可以是原有的栈也可以是新开辟的栈

  2. 弹出某一栈中的栈顶的火车

目标

所有的火车以n, n-1, n-2, ..., 2, 1的顺序依次从栈中弹出

步骤

火车调度必须按照以下规则进行

如果某个栈中的栈顶编号与当前所需的编号相等(栈顶火车编号等于当前栈中所有火车编号的最大值), 弹出该火车

当无法从栈中弹出火车时, 将处于入轨火车序列首位的火车压入某一栈中

“某一栈”的定义为, 按照栈被开辟的先后次序, 以由先至后的方式依次检查栈顶火车的编号, 找到第一个栈顶火车编号小于待入栈的火车编号的栈, 将火车压入该栈, 若所有栈均不满足条件, 开辟新栈并将火车压入该栈

总结与问题

这样的方法是以贪心的方法每次寻求对于序列中首个火车的最优解, 此最优解是否为整体的最优解? 如果否, 请举出某一具体反例?

换句话说, 是否可以通过考虑整体火车序列的排列情况, 来寻求一个使用栈的数量更少的解?