如何解析包含二进制元素的特定矩阵(无向结构化同构图)

时间:2017-02-11 06:56:07

标签: algorithm matrix graph

一位朋友让我为他做一个程序:

所需的程序是解决一个益智游戏"由10个火把组成,排列成2x5(或5x2)矩阵。目标是通过让所有火把点燃来解决这个难题,但这就是难点:当你改变火炬的状态时,相邻火炬的状态也会发生变化(仅相邻,而不是对角线)。

所以就像我有一个特定的矩阵,我需要通过将所有元素转换为True(或者#34; alight")来解析二进制元素,但是元素与相邻元素链接,如无向结构齐次图("网格"图)。

这是一些图片来说明这个谜题是如何运作的:

Exemple of initial pattern

Puzzle Mechanics

这是我需要一些帮助/建议/线索的地方:

首先,我如何能够巧妙地解决这种难题(已经通过尝试所有可能性来完成它,但是当我需要超过5"步骤"时,需要花费太多时间来计算),使用数学。

然后,我应该使用哪种编程语言?哪一种最适合这种加工? (我想做一个用户输入初始模式的界面,然后程序搜索解决方案并给出步骤来解决它,通过在界面上提供coords和eventualy图片中的所有步骤。我一定会在论坛上发布它朋友和他的队友。)

我还在搜索,但还没有找到任何可以帮助我有效解决这类谜题的事情。

非常感谢您的帮助和贡献。

PS:抱歉对英语的使用不好。

1 个答案:

答案 0 :(得分:-1)

您可以使用BruteForce方法解决此问题。

只有10个手电筒,您只需按下每个手电筒一次。所以它将是2 ^ 10 = 1024组合。

对于您可以使用的编程语言:Python,C / C ++,Java或C#。 任何编程语言都可以解决这个问题。