更新时间:2022-09-16 15:44
阶石法是指在数字格中的数字用圆圈圈上,再用虚线从上到下,从左到右把各个圆圈联系起来,由圆圈和虚线所组成的图形很像一个台阶,所以这种解运输问题的方法也叫登石法。
运输问题不仅是最优化模型中最为普遍的一类问题而且经常作为某些复杂最优化问题(如旅行商问题)的子问题出现,具有极其广泛的应用。各类文献上针对运输问题的算法比较多,但是哪种方法对于运输问题更有效还没有定论。一般对同一个问题如果有多个算法可以解决时,偏向选择执时间上界较小的算法。但是实践中,很多情况下算法中基本操作重复执行的次数随问题的输入数据集不同而改变,使得在实用时需根据不同情况选择适用的算法。算法主要有阶石法与元素判别值分配法。
阶石法算法检验数的求解实现是基于行序为主序,通过对执行过程中一次循环时间与循环次数的分析表明,对于m×n= C常数的运输问题,虽然问题中矩形的长宽比率P加大,使得决定哪一个非基变量进入基中所需时间增加而导致一次单纯形迭代所需要的时间增加,但是因为在通常运输密度条件下,矩形运输问题所含的未知变量的个数比方型运输问题少,所以迭代次数明显减少,算法的执行时间减少。而对于常数的运输问题,随着问题中矩形的长宽比率P加大,一次单纯形迭代中不仅决定哪一个非基变量要进入基中所需时间增加,而且由于矩形问题比方型问题含有更多的约束方程参数,所以基变量个数增加。则算法定义在基变量上的操作时间增加,使得算法中第三步到第六步的每一个循环时间显著增加。虽然矩形运输问题所含的未知变量的个数比方型运输问题减少,但是不能补偿一次循环时间增加而导致的算法整体执行时间增加量,所以阶石法算法的执行时间增大。另外阶石法实际上是一种特殊的单纯形方法,所以从单纯形方法的角度分析,在最坏情况下它时间复杂性可能达到指数级。
按照自顶向下逐步求精的原则,在研究运算步骤时,首先考虑算法顶层的运算步骤,然后再考虑底层的运算步骤。顶层的运算步骤是指定义在数据模型级上的运算步骤,或者叫宏观运算,它们组成算法的主干部分。表达顶层运算步骤这部分算法的程序就是主程序,其中涉及的数据是数据模型中的一个变量,暂时不关心它的数据结构;涉及的运算以数据模型中的数据变量作为运算对象,或作为运算结果,或二者兼而有之。底层的运算步骤是指顶层抽象的运算的具体实现。它们依赖于数据模型的结构,是顶层运算的细化。顶层算法每个组成步骤可以看作是一个标准子程序模块,每个子程序可以有多个不同的底层算法实现。
用计算机解决一个确定的数学问题,需要设计问题求解的方法即算法设计。这一步要求建立问题的求解模型,确定问题的数据模型并在此模型上定义一组运算。接着借助于对这组运算的调用和控制,形成算法并用自然语言来表述.然后将非形式自然语言标的算法转变为一种程序设计语言表达的算法。一般来说,算法的执行效率受3个因素的制约: