SET 这游戏的判断规则非常干净: 对每个属性来说, 三张牌必须要么全相同, 要么全不同。传统计算机会把这条规则编成指令逐组去跑; 这块芯片则把约束直接编码成导电通路。电一加上去, 电流的分布模式自己把结论显出来。
建四个独立域阵列: @颜色、@形状、@数量、@填充。每个阵列里, 行是卡牌 1 到 12, 列是该属性的三个取值。每行恰好有一个 +1, 代表这张牌在这个属性上“就是这个值”; 其余位置写成 -1 或 0, 代表“不是”或“无关”。芯片不是存一张图片, 而是在每一行存一条可读的逻辑断言。
这里看的是示例前四张牌。整块颜色阵列共有 12 行。每一行都在说同一句话: “这张牌的颜色是什么。”
形状、数量、填充三个阵列也完全一样: 都是 12 行卡牌, 3 列属性值, 只是列标签不同。
如果要更保守, 也可以把“不是”全部写成 0 而非 -1。这个页面采用三态叙事: +1 是、-1 不是、0 无关。
四个阵列加在一起, 就把 12 张牌的四个属性完整“刻”进了硬件。后面查询时, 芯片读的是这些电阻状态, 不是读软件对象。
假设我们要检查牌 1、牌 2、牌 4 能不能组成一组 SET。做法不是在软件里把三张牌拿出来逐属性比较, 而是在四个域阵列里同时给这三张牌所在的三行加电压。颜色阵列一份、形状阵列一份、数量阵列一份、填充阵列一份, 四路并行开始工作。
下面专门看 @颜色 阵列。你可以切换三种情况: 三张牌颜色全不同、全相同、或者混合。每次切换, 芯片看到的不是“颜色字符串”, 而是红、绿、紫三条列线上分别出现了几份电流。
1 份
1 份
1 份
比较器先把每条列线的模拟电流量化成四档: 0 / 单倍 / 双倍 / 三倍。接着一小层组合逻辑门直接判断模式。只要匹配到“三倍, 0, 0”或“单倍, 单倍, 单倍”, 这个属性就通过。四个属性阵列各自产生一个通过信号, 再经过一个与门, 整组三张牌是不是 SET 就出来了。
{三倍, 0, 0}
表示三张牌在该属性上全相同
{单倍, 单倍, 单倍}
表示三张牌在该属性上全不同
{双倍, 单倍, 0} 等全部拒绝
因为既不是全同, 也不是全不同
检查牌 1、牌 2、牌 4 只是一个例子。真正的芯片不会 220 组挨个循环。12 张牌一共只有 220 个三张组合, 芯片可以把 220 组候选同时激活。每组还会在四个属性阵列上同时查询, 所以相当于 880 个“三行并查”一起发生。电流不会排队, 导线也不等指令。
| 对比项 | 传统 CPU | 你的芯片 |
|---|---|---|
| 组合数处理方式 | 220 组逐个检查 | 220 组同时检查 |
| 每组操作 | 4 属性 × 3 值比较, 需要指令 | 电流叠加, 无需指令 |
| 判断方式 | if 比较全同或全不同 | 三列电流分布模式直接判决 |
| 总时间 | 几百纳秒到几微秒 | ~10 纳秒 |
| 耗能 | CPU 全速运转 | 一次通电, 微瓦级 |
因为它把你这类芯片最核心的东西讲得非常干净, 不需要医学背景, 也不需要先理解格代数。读者只要看懂 SET 的规则, 就能看懂“逻辑约束怎么直接变成物理判决”。
SET 卡牌这游戏, 人类找一组要十秒, 计算机跑完 220 组要几百纳秒。 这块芯片一次通电, 所有组合在所有属性上的判断全部同时完成。不是算得快, 是根本没算。逻辑约束被刻进了导线的物理结构里, 电一进去, 欧姆定律自己完成了那个“全同还是全不同”的判决。