有一个算法问题,求大佬们给个思路

2022-11-15 22:16:58 +08:00
 DIO

有描述不清楚的地方还请大佬们积极提出,我会积极回答。

现有一个 5*5 矩阵 Mat
[ a11 ,a12 , a13 , a14 , a15;
a21 ,a22 , a23 , a24 , a25;
a31 ,a32 , a33 , a34 , a35;
a41 ,a42 , a43 , a44 , a45;
a51 ,a52 , a53 , a54 , a55 ]

求一个矩阵 matR ,将 mat 再排列。
要求原矩阵 mat 中的相邻元素(横竖左右撇捺)在新生成 matR 中不相邻

对每个元素 aij 设定积分 point(ij). aij 在新矩阵 matR 中距离原相邻元素距离之和为 point(ij)
例如:aij 在原矩阵 Mat 的相邻元素{a(i-1)j,a(i-1)(j-1),......... } 在新矩阵 matR 中距离这些元素的直线距离单元格数为{1 ,1 ,1 ,1 ,1 ,1 ,1 ,1} 合计为 point(ij)=8

要求在生成的 matR 中 Σpoint(ij) 最大化

发在隔壁节点没反应,所以在这重发一次

1503 次点击
所在节点    程序员
9 条回复
liplushe
2022-11-15 23:03:02 +08:00
你这问题描述怎么稀里糊涂的
qq007523
2022-11-15 23:23:11 +08:00
没看懂...
Tanix2
2022-11-15 23:28:59 +08:00
意思是把 5x5 矩阵打散,原来相邻的元素现在距离越远越好,你这个距离我没看明白,能否再解释以下
iOCZ
2022-11-15 23:29:06 +08:00
真是费解,应该搞一些符号
DIO
2022-11-16 00:35:36 +08:00
@qq007523 是的,你理解的意思是对的。这个距离是我试图把这个意思量化的一个标准,不过似乎弄巧成拙了。明天画几个图再明确一下含义。比如说在新矩阵中,得出原相邻元素的坐标,计算他们横向和纵向坐标差的绝对值,两个维度求和。

我目前咨询了一些人,有一些局部最优解的方案,比如假设有一个目标矩阵,它恰好是对称的,那么对角线应当还是 i==j.那么根据规则计算对角线的情况。然后再填充上三角,根据这个推出下三角。今天晚上验证了一下,明天再具体研究一下。
Tanix2
2022-11-16 00:37:40 +08:00
首先原来相邻的现在都不相邻的矩阵是存在的
a44 a52 a34 a54 a42
a25 a11 a13 a15 a21
a23 a31 a33 a35 a43
a45 a51 a53 a55 a41
a24 a12 a32 a14 a22
然后我就不会了
whitepuppy
2022-11-16 11:38:36 +08:00
感觉可以对行操作?把每行 2 ,4 位数调换下位置,这保证了横着的不相邻,然后 1 ,2 ,3 ,4 ,5 行变为 4 ,1 ,3 ,5 ,2 ,每一行都不和之前的相邻行相邻,保证了所有的竖着的和斜着的都不相邻。
whitepuppy
2022-11-16 11:41:43 +08:00
@whitepuppy 第一步有点问题,2 ,4 调换还是改成后面那种对应
DIO
2022-11-16 13:03:05 +08:00
意思是通过把不相邻排列行列分别转化一次吗,这样好像确实可行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/895521

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX