【发布时间】:2019-03-28 15:50:12
【问题描述】:
这可能是一个重复的问题,但我无法在堆栈溢出时找到它。
取一些变量,它们都代表某事的机会。这意味着所有变量的值都在零和一之间(包括两者)。这些值是未知的。但是,我有一些方程式,其中部分或全部这些变量的结果是已知的。
例如,取变量a、b、c、x 和y。它们的值都是介于 0 和 1 之间的未知数(包括两者)。我有以下方程式:
1: a + b + c = 1
2: a + b + x = 2
3: b + c + y = 2
4: a + x <= 1 -> 0 <= a + x <= 1
5: c + y <= 1 -> 0 <= c + y <= 1
解决这个问题得到以下结果:
2: a + x + b = 2
(something between 0 and 1) + b = 2
b = 2 - (something between 0 and 1)
1 <= b <= 2
b = 1 (since 0 <= b <= 1 applies too)
1: a + b + c = 1
a + 1 + c = 1
a + c = 0
a = -c
a = 0 (since 0 <= a <= 1 and 0 <= c <= 1 apply)
c = 0
2: a + b + x = 2 | 3: b + c + y = 2
0 + 1 + x = 2 | 1 + 0 + y = 2
x = 1 | y = 1
-> a = 0, b = 1, c = 0, x = 1 and y = 1
我在纸上解决了这个问题,我的实际目的是通过为每个未显示的单元格分别分配一个变量x a b c y来证明以下扫雷情况。由于x、y 和b 是一个,它们可以被标记:
我的一般目的是使用这种技术解决扫雷板问题,但它可以用于其他软件。但是,如果我想让计算机使用这种技术来解决扫雷板问题,那么计算机必须使用一种算法来解决具有任意数量的变量和任意数量的方程的这种情况。有没有一个通用的算法可以做到这一点?如果有,我应该如何实现该算法?
让事情变得显而易见
- 方程是一个变量或一些变量的总和,具有有限或恒定的结果,始终为正。
- 变量是介于 0 和 1(包括两者)之间的未知值。
- 该算法采用具有相应变量名称的变量数量,以及定义一些变量的方程。
- 算法尝试计算尽可能多的值。无法确定的值仍未确定。
【问题讨论】:
-
如果你的变量代表扫雷方块,它们可以取除 0 或 1 以外的任何值吗?任何中间实数值是否与这个问题有任何关系?
-
无论如何,作为minesweeper is NP-complete,您可能很难接受。
-
我已经很难理解那篇文章了 :( ... 0 到 1 之间的值表示正方形下有地雷的可能性。如果是 1,它可能被标记,如果为0,则可以安全挖掘。
-
但是请保持它独立于扫雷本身。
-
我不完全理解这个问题,但听起来你可以通过寻找“约束优化”、“单纯形法”或“线性规划”来找到资源。祝你好运,玩得开心。
标签: algorithm math solver minesweeper