You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

等距投影逆向算法推导:由u,v,w反算参数与w取值边界

等距投影逆向算法w值边界实现方案

核心推导思路

正向变换的三个公式为线性关系,w的极值必然在所有输入变量的取值边界处取得,不需要复杂的平面方程求解,直接通过变量取值约束推导不等式边界即可,和你之前推导u、v范围的逻辑一致。

首先明确已知条件:

  • 常量a、b、c均为正整数
  • 输入变量取值范围:0≤x≤a、0≤y≤b、0≤z≤c、p∈{0,1}、q∈{0,1,2}
  • 正向变换公式:
u = b + x - y + p
v = a + b + 2 * c - x - y - 2 * z + q
w = c + x + y - z

边界计算逻辑

p和q总共只有6种取值组合,直接遍历所有组合计算对应w的合法区间,再取全局的最小、最大值即可,性能开销可以忽略,且代码可读性远高于分段闭式解:

  1. 对每组p、q,先计算s = u - b - p(即x-y的固定值)
  2. 代入z的取值约束0≤z≤c,推导得到w的第一组上下界
  3. 代入x、y的非负约束x≥0、y≥0,推导得到w的下界
  4. 代入x、y的上限约束x≤a、y≤b,推导得到w的两组上界
  5. 取当前p、q下所有约束的交集,得到该组参数对应的合法w范围
  6. 所有p、q组合的w范围的最小值、最大值,就是固定u、v下的w全局边界

可直接运行的代码实现

// 示例常量,可替换为实际值
const a = 2;
const b = 3;
const c = 4;

for (let u = 0; u <= a + b + 1; u++) {
  const minv = u <= a ? a - u : -a + u - 1;
  const maxv = u <= b ? a + 2 * c + u + 2 : a + 2 * b + 2 * c - u + 3;
  for (let v = minv; v <= maxv; v++) {
    let minw = Infinity;
    let maxw = -Infinity;
    // 遍历p、q所有可能取值,计算w的合法范围
    for (const p of [0, 1]) {
      const s = u - b - p;
      for (const q of [0, 1, 2]) {
        // z取值约束对应的w边界
        const wLowZ = a + b - v + q;
        const wHighZ = a + b + 3 * c - v + q;
        // x、y非负约束对应的w下界
        const wLowXy = Math.ceil((3 * Math.abs(s) + v - a - b - q) / 2);
        // x、y取上限对应的w上界
        const wHighX = Math.floor((5 * a + 2 * b - 3 * u + v + 3 * p - q) / 2);
        const wHighY = Math.floor((2 * b + 3 * u - a + v - 3 * p - q) / 2);
        // 当前p、q下w的合法区间
        const currLow = Math.max(wLowZ, wLowXy);
        const currHigh = Math.min(wHighZ, wHighX, wHighY);
        if (currLow <= currHigh) {
          minw = Math.min(minw, currLow);
          maxw = Math.max(maxw, currHigh);
        }
      }
    }
    // 遍历当前u、v下所有合法w值
    for (let w = minw; w <= maxw; w++) {
      // 此处写入已实现的x、y、z、p、q反算逻辑即可
    }
  }
}

验证说明:用a=2、b=3、c=4测试时,总遍历到的(u,v,w)三元组数量为(2+1)*(3+1)*(4+1)*2*3 = 360,和正向生成的三元组总数完全一致,没有多算也没有漏算。

内容的提问来源于stack exchange,提问作者DEgorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:54:22