gpt4 book ai didi

c - 将条件表示为公式

转载 作者:行者123 更新时间:2023-11-30 15:14:19 27 4
gpt4 key购买 nike

这种情况是我正在处理的代码的一部分:

// All are Bitvector of length 4
node[i], V1, V2, V3;

我试图确保 node[i] 不应包含任何其他三个 vector ,即 V1 、 V2 和 V3 。例如,假设 V11001V20111V30011

我能想到的一个简单的方法是将其表述为 (node[i] & V1) != V1 ,其他人也类似。

我正在考虑表示为公式/子句,这将有助于优化我的代码。因为我迭代所有可能的 V,然后用节点一一检查。

Is there a better way to do the same?

最佳答案

  1. 而不是

    (((node[i] & V1) != V1) && 
    ((node[i] & V2) != V2) &&
    ((node[i] & V3) != V3))

使用以下设置,任何与 V2 匹配的 node[i] 都与 V3 匹配,因此只需要 2 次测试。

 V1 is 1001, V2 is 0111, V3 is 0011

(((node[i] & V1) != V1) &&
((node[i] & V2) != V2))

当然,不同的V1、V2、V3需要哪些测试是不同的。

详细信息:参见Karnaugh Map

  • 仅使用 4 位 vector ,预先计算一个 valid[] 表。在 precompute() 中,根据原始 (((node[i] & V1) != V1) && ... 测试遍历所有 16 个组合。

    bool valid[1u<<4];
    precompute(valid, V1, V2, V3);

    loop
    if (valid[node[i]]) ...
  • 关于c - 将条件表示为公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109442/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com