【发布时间】:2012-02-15 14:50:56
【问题描述】:
我有一个小问题。我需要将一个填充有 1 和 0 的二维数组(我们称之为矩阵 A - 零实际上代表空白点,而 1 是足球运动员在球场上的位置)与许多其他填充不同的矩阵(但同样,只是一个和零),结果应该表明哪个矩阵与矩阵 A 最相似。通过相似性,我指的是场上球员分布(或位置)的相似性 - 所以与球员位置最相似的矩阵矩阵 A 将被选择用于进一步的东西。
有人可以帮忙解决这个算法问题吗?
我是用 C++ 编写的,但伪代码就足够了。问题只是一个比较算法。最好的情况是比较函数的输出类似于similarity coefficient,我可以将其存储在一个数组中,然后使用它选择最相似的矩阵。但我只是想不出一些用于相似性比较的算法。
编辑:从下面我的 cmets 复制的关于相似性和算法的一些说明 -
矩阵 A - Matrix A ,矩阵 1 - Matrix1 ,矩阵 2 - Matrix2,与矩阵 A 相比,两者都有 1 个变化,但对我来说 - 矩阵 2 必须“更相似” - 因为玩家是更接近它在矩阵 A 中的位置
矩阵被认为是大约 8x6 或类似的大小,它需要相当快 - 它将在每个游戏周期(因此每 20 毫秒左右......)计算一次,并且每边将有 5 名玩家。
【问题讨论】:
-
如果你想提出一个算法,你需要比上面模糊的描述更可靠地定义“相似性”
-
好吧,最相似的矩阵应该是玩家站在矩阵 A 中最接近位置(或在某些情况下正好在位置上)的矩阵。
-
如果您在问题中添加一些示例以及您在每种情况下期望的所需“相似性”度量,也许会有所帮助?
-
我真的不知道如何解释相似度度量,我认为它在某种程度上很明显:) 但我会尝试一些例子:Matrix A - wolframalpha.com/input/… Matrix 1 - wolframalpha.com/input/… Matrix 2 - wolframalpha.com/input/… Matrix 1 会有更好的相似系数。你明白基本概念了吗?
-
有一个明显的衡量标准:让玩家四处走动将一个矩阵转换为另一个矩阵需要多少步。但是,这将很难计算。
标签: c++ algorithm matrix pseudocode