KeyTo9_Fans 发表于 2022-8-21 16:50:15

正方形网格里的最长路

假设地图是n行n列的正方形格子,

起点在第1行第1列,

终点在第n行第n列,

每步的走法有上下左右4种。

问题1:

如何在某些格子里设置障碍,

才能使得起点到终点只有1条路,

且该路径的长度达到最大呢?

问题2:

如果不限制起点和终点的位置,

那么起点到终点之间的最短路径长度的最大值是多少?

#####

对于较小的n,我希望找到准确解。

对于较大的n,我希望找到与n有关的渐进公式。

例如,当n=7时,

问题1我最多可以构造出长度为31格的路径:



上图中的“×”表示障碍。

gxqcn 发表于 2022-8-21 18:45:50

允许斜对角运动么?

KeyTo9_Fans 发表于 2022-8-22 06:40:21

问题1:

如何在某些格子里设置障碍,

才能使得起点到终点只有1条路,

且该路径的长度达到最大呢?

解法1:

一共有$n^2$个格子,每个格子要么放障碍,要么不放障碍,

因此一共有$2^{n^2}$种放障碍的方案。

对这$2^{n^2}$种放障碍的方案逐一判断是否存在路径,

如果存在,就求出最短路径长度,

然后输出最短路径长度最长的那条路径,结果如下:

n=1: 1
1

n=2: 3
11
01

n=3: 5
111
001
001

n=4: 7
1111
0001
0001
0001

n=5: 17
11111
00001
11111
10000
11111

n=6: 23
110111
010101
110101
101101
101001
111001
输出的“n=6: 23”表示当n=6时,路径长度的最大值是23,

后面是具体的方案,其中“1”表示通路,“0”表示障碍

问题2:

如果不限制起点和终点的位置,

那么起点到终点之间的最短路径长度的最大值是多少?

解:

枚举起点、终点和$2^{n^2}$种放障碍的方案,

然后输出最短路径长度最长的那条路径,结果如下:

n=1: 1
1

n=2: 3
11
10

n=3: 7
111
101
110

n=4: 11
1111
1001
1011
1100

n=5: 17
11101
10101
10101
11011
01110

n=6: 24
110111
010101
110101
101101
101011
111010
这种解法的优点是不会遗漏任何解,缺点是慢。

n=6用时12小时,

n=7预计用时10年。

你们有更好的解法吗?

aimisiyou 发表于 2022-8-22 09:38:49

KeyTo9_Fans 发表于 2022-8-22 06:40
问题1:

如何在某些格子里设置障碍,


能否找到递推关系?

aimisiyou 发表于 2022-8-22 09:58:52

KeyTo9_Fans 发表于 2022-8-22 06:40
问题1:

如何在某些格子里设置障碍,


你是用暴力搜索吧?n=7用不了那么久吧?你划分得太细了。

ejsoon 发表于 2022-8-22 10:14:17

本人創作的弈棋《巫師與殺手》,殺手的行動方式,跟本主題類似。巫師放置的地符,相當於他的障礙物。

aimisiyou 发表于 2022-8-22 11:47:24

ejsoon 发表于 2022-8-22 10:14
本人創作的弈棋《巫師與殺手》,殺手的行動方式,跟本主題類似。巫師放置的地符,相當於他的障礙物。

规则恐怕只有你懂……

ejsoon 发表于 2022-8-22 23:18:15

aimisiyou 发表于 2022-8-22 11:47
规则恐怕只有你懂……

我可以做動畫或錄視頻。當然文字版規則其實也寫的很詳盡了。

ejsoon 发表于 2022-8-23 00:15:43

本帖最后由 ejsoon 于 2022-8-23 07:45 编辑

aimisiyou 发表于 2022-8-22 11:47
规则恐怕只有你懂……



行棋至此,輪到殺手行動,其實巫師已經輸了,因為殺手只要「左下下下右右」六步,就能正好射殺巫師。

這局巫師只是失誤,一般棋局不會這麼快就結束。

[*]那麼為甚麼殺手要走「六步」?

$rarr$因為此時場上一共有六個地符(白色棋子),包括巫師腳下也有一個。

(當棋局進展到中局時,殺手可能要走十幾步。這時殺手可能會因無路可走而輸掉。)

[*]殺手如何射殺巫師?

$rarr$在殺手的回合中,如果行走結束時,停在與巫師同一條線但不同區的地方,就能擊斃對方。

本棋棋盤是6x6,一個區就是3x3。如果殺手跟巫師處在同一個區,巫師不會遭到射殺。

aimisiyou 发表于 2022-8-23 10:36:59

本帖最后由 aimisiyou 于 2022-8-23 13:10 编辑

F(N)=F(N-4)+4*N-4,    N>=5。
F(1)=1
F(2)=3
F(3)=5
F(4)=7
F(5)=11
F(6)=23
F(7)=29
看来往后面结果就不对了。
页: [1] 2 3 4
查看完整版本: 正方形网格里的最长路