24小时热门版块排行榜    

查看: 2380  |  回复: 2

junmajifei

铜虫 (正式写手)

[求助] 无回向、自回避随机行走算法在MATLAB上的实现

存在一个二维数组,
cube =

    -1    -1    -1    -1    -1   -1    -1    -1
    -1     2     2     2     2     2     2    -1
    -1     2     2     2     2     2     2    -1
    -1     2     2     2     2     2     2    -1
    -1     2     2     2     2     2     2    -1
    -1     2     2     2     2     2     2    -1
    -1     2     2     2     2     2     2    -1
    -1    -1    -1    -1    -1    -1   -1    -1

       对于数组cube,一个颗粒可以在上面自由移动。随机选择倒数第二层上的一个格点(数值为2),该格点从一端移动到另一端。对于该格点,只能前进或者转弯,不能后退。如:对于左侧的格点,刚开始,只能向右,或者上、下移动,通过一个随机数来确定移动的方向。继续这样走下去,直到下一个格点为-1时,移动停止,这样就确定了一条移动路线。再随机选择倒数第二层上的另一个格点(数值为2),进行同样的操作。
       如何再MATLAB上实现这样的算法?     编程的难点在于移动过程中不能回头。
     
      http://v.youku.com/v_show/id_XMjk4ODU4OTY4.html?f=6176340   左边链接是自回避随机行走的动态图,我需要的条件还有一个,那就是移动过程中不能回头。

        附图是我想要实现的移动路线示意图。

无回向、自回避随机行走算法在MATLAB上的实现
123.png
回复此楼
相信自己,活出自己的精彩!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

跟人感觉,这个应该叫思路或者技术要求,不叫算法
也就是说应该设计一个算法来完成这个技术要求,之后的工作才是编程。

算法设计中可以考虑将每次移动的路径记录下来,这样能够知道“从哪里来”,然后在当前位置上需要做的动作是“向哪里去”,在进行“向哪里去”动作赋值的时候可以将之前(上一时刻)的位置排除,也就是说只有3个可以选择的位置可以走,然后随机数mod3(这应该能保证走向那三个方向的概率基本一致)。

至于其他的条件(初始和边界)就按照你正常的方式定义就是了。
2楼2015-04-18 22:33:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

junmajifei

铜虫 (正式写手)

引用回帖:
2楼: Originally posted by 信彼南山 at 2015-04-18 22:33:54
跟人感觉,这个应该叫思路或者技术要求,不叫算法
也就是说应该设计一个算法来完成这个技术要求,之后的工作才是编程。

算法设计中可以考虑将每次移动的路径记录下来,这样能够知道“从哪里来”,然后在当前位置 ...

谢谢您的回复,您说的有道理,我这个确实不叫算法,是我个人的一种思路。您的思路我之前也想过,不过实现起来有一定的难度。我想看看是否有其他的实现途径。
相信自己,活出自己的精彩!
3楼2015-04-20 08:32:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 junmajifei 的主题更新
信息提示
请填处理意见