【发布时间】:2017-04-12 06:32:53
【问题描述】:
所以,我在表面上有一个二维裂纹矢量,没有特定的顺序排列。如果一个裂缝太靠近另一个裂缝(假设 3 个单位),则必须将其中一个或两个裂缝移开(最多 8 个单位)。 B 型裂缝(已识别)将不会被修改。到目前为止,我的程序具有沿或垂直于它们的方程线平移裂缝的功能。
当我将一个裂缝从另一个裂缝中翻译出来时,问题就出现了,它太接近另一个不同的第三裂缝。这需要第二次翻译,如果问题没有解决,还需要第三次翻译。但这会变得计算密集。如果在第一次迭代中移动了 278 条裂缝,然后在第二次移动了 278 条,第三次移动了,那么在平移之前已经进行了 277^3 = 21,253,933 次计算(对于每个裂缝,必须计算到其他 277 条裂缝的距离) .现在并不总是必须平移所有 278 个裂缝,但我需要一个更好的算法来移动所有裂缝,使它们彼此相距至少 3 个单位的距离。即使我尝试使用动态搜索邻域,它仍然需要遍历所有 278 个裂缝。
请指教;我被卡住了,我真的不知道如何继续。
【问题讨论】:
标签: c++ search vector dynamic-programming algebra