第六十五章 算法和程序完成-《重生IT大亨》
第(2/3)页
拿着下发的文件,他仔细看了一遍,对于现在的他来说,尽管还做不到过目不忘,但也差不多了,里面的算法和变量说明,他基本全部记了下来。
算法采用了枚举法,最基本的算法之一,枚举算法的思想是:将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的。
在c语言中,枚举算法一般使用while循环实现。使用枚举算法解题的基本思路如下:确定枚举对象枚举范围和判定条件。 逐一列举可能的解,验证每个解是否是问题的解。
枚举法是能解决问题,但问题是,这种算法的效率太低,追求的是精确值。
关键是碎片的数量太多,如果靠这种精确的计算的话,等撞击发生了,计算还未必能完成。
上面要求的,并不是完全避免撞击,只是利用有限的卫星燃料,进行最小幅度的变轨,规避对卫星伤害最大的撞击。所以枚举法没问题,但不适合做为计算天体运行程序的基础算法。
脑海中,在已经开发的脑域中,脑波搜索如雷达一般,不断的快速扫描着。
算法有很多,但却未必适合现在的情况,无论怎么说,枚举法是绝对不符合要求的。
有了,这种算法不错,在github的浩如烟海的源代码库中,他找到了一种合适的算法。
贪心算法:从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出一个近似解。这个近似解就无限接近于精确值。
首先建立数学模型来描述问题。然后把求解的问题分成若干个子问题。对每一子问题求解,得到子问题的局部最优解。把子问题的局部最优解合并成原来解问题的一个解。
这样的算法,最大限度的利用计算机多线程的性能,以最快的速度来解决问题。最是适合现在这种状况。
拿出稿纸,速度飞快的,完成了算法的流程图。
有了算法,就有了程序的灵魂。考虑到天体运行时的差之毫厘,谬之千里,轨道的参数变量都采用了双精度浮点型,最大程度的保证了计算的精确性。
第(2/3)页