【发布时间】:2025-12-20 23:45:10
【问题描述】:
我有一个表示要更新的纹理像素的二进制网格。 上传这些像素的成本大致可以分为固定部分(类似于某些协议中的标头)和由上传大小决定的动态部分。两者都依赖于系统,但可以测量。
这意味着成本来自固定成本(传输开销)始终相同的每个矩形。
成本函数本身可能因系统而异;在大多数情况下,它最好通过线性函数(如线方程 f.e.)来近似。 cost_per_rectangle = fixed_costs + dynamic_costs * rectangle_size,或短 c = f + s * d。但很可能这个函数变成对数或指数函数,如 c = f + s * log(d) 或 c = f + s * d^(1+some)。
以下是一些真实世界的测量值,绘制在线性和 y 对数图中,大小从 2 到 1M,其中 X 是点数,Y 是我们的时间:
我正在寻找一种算法,它可以计算覆盖所有标记为要更新的单元格的矩形,同时最小化总成本。
矩形可能重叠。
因为计算这些矩形的成本加起来就是总成本,我正在寻找一种高效但不完美的算法,尽管很高兴听到完美的解决方案以及它是否是 NP 完全的。
目前,我不知道如何最好地解决这个问题,只有一种模糊的感觉,也许 kd-trees 可以提供帮助。
我对对角线示例进行了一些尝试和错误测试,通过比较所有可能大小的上传时间,为对角线示例找到了最佳矩形大小。
【问题讨论】:
-
目前还不清楚——你能添加一些例子来解释这一切吗?
-
@Dukeling 我添加了一些示例图片。
-
我仍然很难理解成本。固定成本是一次性的(网格)还是每个矩形一次?动态部分是否与发送的单元格数量成线性比例(在所有矩形上)(例如,每个单元格 2 个单位,因此 2x2 将花费 2*4=8 个单位,而 5x5 和 3x3 矩形将花费 2*(25+ 9)=68 个单位) 还是有其他缩放比例?您是否正在寻找一种旨在最小化任何给定固定成本和动态成本的总体成本的算法,或者您是否有一些成本并且您只是在寻找针对这些特定成本的算法?
-
@Dukeling 好点!我试图相应地更新问题。