V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DIO
V2EX  ›  程序员

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

  •  
  •   DIO · 72 天前 · 1052 次点击
    这是一个创建于 72 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现有一个 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) 最大化

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

    第 1 条附言  ·  71 天前
    3L 概括得很好

    “意思是把 5x5 矩阵打散,原来相邻的元素不相邻(硬性),现在距离越远越好”




    这里我简单粗略做了一个 point 计算办法,还有不清楚的地方欢迎提出。欢迎大佬们提出想法,集思广益。

    这里是源文件地址: https://wwd.lanzout.com/i9oko0g10eda 密码:b52e

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

    我目前咨询了一些人,有一些局部最优解的方案,比如假设有一个目标矩阵,它恰好是对称的,那么对角线应当还是 i==j.那么根据规则计算对角线的情况。然后再填充上三角,根据这个推出下三角。今天晚上验证了一下,明天再具体研究一下。
    Tanix2
        6
    Tanix2  
       72 天前
    首先原来相邻的现在都不相邻的矩阵是存在的
    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
        7
    whitepuppy  
       71 天前
    感觉可以对行操作?把每行 2 ,4 位数调换下位置,这保证了横着的不相邻,然后 1 ,2 ,3 ,4 ,5 行变为 4 ,1 ,3 ,5 ,2 ,每一行都不和之前的相邻行相邻,保证了所有的竖着的和斜着的都不相邻。
    whitepuppy
        8
    whitepuppy  
       71 天前
    @whitepuppy 第一步有点问题,2 ,4 调换还是改成后面那种对应
    DIO
        9
    DIO  
    OP
       71 天前
    意思是通过把不相邻排列行列分别转化一次吗,这样好像确实可行。

    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   273 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 21:33 · PVG 05:33 · LAX 13:33 · JFK 16:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.