贴一道简单一些的数学题

duz 2001-06-08 08:37:00
Consider an n * n square board, where n is a fixed
even positive integer. The board is divided into
n^2 unit squares. We say that two different squares on
the board are adjacent if they have a common side.

N unit squares on the board are marked in such a way
that every square (marked or unmarked) on the board is
adjacent to at least one marked square.

Determine the smallest possible value of N.
...全文
405 56 打赏 收藏 转发到动态 举报
写回复
用AI写文章
56 条回复
切换为时间正序
请发表友善的回复…
发表回复
fish_autumn 2001-07-14
  • 打赏
  • 举报
回复
我还不太明白,好好想想
yrs 2001-07-14
  • 打赏
  • 举报
回复
谢谢,我明白了 :)
Arter 2001-07-13
  • 打赏
  • 举报
回复
等几天晚上!
fish_autumn 2001-07-13
  • 打赏
  • 举报
回复
呵呵,天啊
starfish 2001-07-13
  • 打赏
  • 举报
回复
上次我说的算法可能不太清楚,我再解释一下我的算法:

如果将2x2的格子按如下方式标号:
1 2
3 4

构造的图的邻接关系如下:
和1相邻的有: 2, 2',3,3'
和1'相邻的有:2, 2',3,3'
和2相邻的有: 1, 1',4,4'
和2'相邻的有:1, 1',4,4'
和3相邻的有: 1, 1',4,4'
和3'相邻的有:1, 1',4,4'
和4相邻的有: 2, 2',3,3'
和4'相邻的有:2, 2',3,3'
最小支配集有多个,其中一个是{1,2},还有{1',2},{1',2'},{1,2'},{1,3},etc

不可能做出来{1,3},因为点1'没有被{1,3}支配,所以{1,3}根本就不是合法的支配集。为了能够使得每一个格子都和被mark的格子相邻(包括被mark的格子也要和其他的被mark的格子相邻),我将一个格子拆成两个格子,分别和周围的格子相邻;虽然求最小支配集的时候在支配集中的点p并不一定被支配集中的其它点支配,但是由于点p有一个镜像点p',其镜像点p'一定会被支配集中的其它点所支配,而p和p'的邻接关系完全相同,所以p也一定会被支配集中的其它点支配。因此这种算法可以求出来的解是正确的。

如果题目改变一下,要求所有没有被mark的格子都和被mark的格子相邻,则更简单一点,不必将每个点拆成两个,直接求支配集就可以了。

这种方法比较麻烦一点,但是具有通用性;而且,我认为肚子给出的那三个公式也可以用这种方法推导出来;因为每个点都和周围的8各点相邻,所以只要展开最小支配集计算公式应该就可以推出你给出的公式来,不过那个多项式展开也比较麻烦。

starfish 2001-07-13
  • 打赏
  • 举报
回复
肚子的id用不了了,所以他让我帮他把问题的解答贴出来,下面是他的原信:

The answer for 7*7 squares should be 15. And I found the best posted in csdn is only 16. The solution for 7*7 is

0**00*0
00000*0
*00*000
*00*00*
000*00*
0*00000
0*00**0

And the answer is
(n*n+2*n)/4 when n is even
(n*n+2*n+1)/4 while n=1mod4
(n*n+2*n-3)/4 while n=3mod4

and i think i should give the clue about how to prove it is the best value.
For example, to prove 3 is best for 3*3 squares,
first we give
000
***
000
to prove exists a 3 solution for 3*3 squares.
then graph
00@
000
@@0
here no block marked will @ share common neighbor. For there's 3 @, so to overlap them, we need at least 3 marks.

RedGuest 2001-07-12
  • 打赏
  • 举报
回复
太复杂啊~~~~~~~~~~~~~~~~~~~~~~~
要死人了~~~~~~~~~~~~~~~~~~~~~
你们都是些什么人,学数学的还是计算机的~~~~~~~~~~~~~~~~~~
laozi 2001-07-12
  • 打赏
  • 举报
回复
duz怎么不回话,我的答案到底正确吗?
我给个证明,采用分治法。
2*2和3*3时,不用想,我的答案是正确的,mark方式也没问题。
当n>3时,把square board分成3*n和(n-3)*n,对3*n寻找最佳方案,以3为行,n为列,从第二行开始,空第一个square,mark第二个,然后每隔两个square,mark一个square,显然最佳方案一定包含这些marked square,因为每个marked square都充分利用(最后一个不一定,但也没办法),然后进行满足条件地mark,分析第一列的第一个和第三个square以及第三列的第一个和第三个square,要满足条件,有两种做法,mark第二行第一个和第三个或mark第二列第一和第三个,现在还不能肯定两种方法孰优孰劣。实际上只要n mod 3==0,两种方法等效,都mark了n个square,但当n mod 3!=0时,最后几列只能采用第二种方法,然后为了mark的square最少,就会产生连锁反应,导致第二行统统mark.接下的依此类推,就得出答案了。
laozi 2001-07-11
  • 打赏
  • 举报
回复
对不起有误,应是以n-3为列,n为行
laozi 2001-07-11
  • 打赏
  • 举报
回复
有一点儿眉目了。
n*n的square,第一行不动,第二行全marked。剩下(n-3)*n;
以n为列,n-3为行,第一行不动,第二行全marked,剩下(n-3)*(n-3);
(n-3)*(n-3)的square,第一行不动,第二行全marked,剩下(n-6)*(n-3);
...
若最后没有剩余的行,则完成,若只剩一行,列必为4,mark当中两个即可,若只剩两行,列必为5,mark第二,第四列即可。
总结一下
n mod 3==0:N=n^2/3
n mod 3==1:N=(n-1)*(n+4)/6+(n-4)*(n+1)/6+2=(n^2+2)/3
n mod 3==2:N=(n-2)*(n+5)/6+(n-5)*(n+2)/6+4=(n^2+2)/3
fish_autumn 2001-07-11
  • 打赏
  • 举报
回复
天啊,这么复杂?
fish_autumn 2001-07-10
  • 打赏
  • 举报
回复
yrs(月如霜):对clavy说法我保留意见,但你的*周围没有*与原题不符,应该归在扩充里
[回复人:duz() (2001-6-20 19:26:00) 得0分
如果解决了这个问题,还可以继续考虑一个非常类似的问题,即最小的N使得可以markN个方格后使所有unmark的格子都至少同一个mark的格子相邻。 ]
starfish 2001-07-10
  • 打赏
  • 举报
回复
这个问题可以转化为图论的极小支配集问题。具体方法如下:
将每个格子u 看作两个结点 u 和 u', u和u'分别与该格子相邻的周围四个格子所拆分成的8个节点相邻,比如对于下面的情况,

.........(x,y-1))
............|
(x-1,y)--(x,y)--(x+1,y)
............|
.........(x,y+1))

格子(x,y)与周围四个各自相邻,将其拆成两个顶点(x,y)和(x,y)',周围的四个格子也分别拆成两个顶点,则(x,y)和(x,y)'分别与周围的8个顶点(x-1,y),(x-1,y)',(x,y-1),(x,y-1)',(x+1,y),(x+1,y)',(x,y+1),(x,y+1)'相邻;

这样将网格转化成了一个无向图,原来的问题也转化成了,求该图的最小支配集的元素个数。如果问题是“求最小的N使得可以markN个方格后使所有unmark的格子都至少同一个mark的格子相邻”,则用不着将一个格子拆成两个节点,直接将原来的网格根据邻接关系转化为图求最小支配集就可以了,那样更简单一点。

求最小支配集有个很简单的公式:

φ(V1,V2,……,Vn) = ∏(Vi+∑u), 其中i=1,2,...n, u∈N(Vi),N(Vi)表示和Vi相邻的节点集合。

这里的加法和乘法是逻辑加法和乘法,满足以下性质:
(1)交换律:X+Y=Y+X, XY=YX
(2)结合律:(X+Y)+Z=X+(Y+Z), (XY)Z=X(YZ)
(3)分配律:X(Y+Z)=XY+XZ, (Y+Z)X=XY+XZ
(4)吸收律:X+X=X,XX=X,X+XY=X

例如,求下图的最小支配集:
.....V2.........V5
..../..\......./.|
.../....\...../..|
../......\.../...|
./........\./....|
V1--------V4.....|
.\......../.\....|
..\....../...\...|
...\..../.....\..|
....\../.......\.|
.....V3.........V6

计算过程为:

φ(V1,V2,V3,V4,V5,V6)
=(V1+V2+V3+V4)(V2+V1+V4)(V3+V1+V4)(V4+V1+V2+V3+V5+V6)(V5+V4+V6)(V6+V4+V5)
=V1V5+V1V6+V4+V2V3V5+V2V3V6

所以上图中有支配集{V1,V5|、{V1,V6}、{V4}、{V2,V3,V5}、{V2,V3,V6}
其中极小支配集为{V4},也就是说,控制了V4就可以控制其他各点。


这样我们只要求原来的网格构造成的图的极小支配集就可以了。
但是这个方法不太好,需要编程来解决,似乎不像是数学竞赛的正确解答,因为这个图是从一个网格构造而来,每个节点只有8个度,所以应该有更简单的方法。
yrs 2001-07-09
  • 打赏
  • 举报
回复
clavy的想法和我不谋而合,
但极限值我认为应该是n*n/4,和sietlkj握手 :)
for example:
while n=5
00*00
*000*
00*00
*000*
00*00
any1 can make it better?
clavy 2001-07-09
  • 打赏
  • 举报
回复
最小极限应该是 n*n/5。
这个问题相当与用
O
O X O
O
这样的十字板覆盖一个区域的问题。
fish_autumn 2001-07-09
  • 打赏
  • 举报
回复
to RedGuest(Haha) 
你的四个角是不是没有照顾到啊?
sietlkj 2001-07-09
  • 打赏
  • 举报
回复
最小极限值是N=n*n/4,且当n为无穷大时N取此值,其他均大于n*n/4。
to duz: 极限值是否正确?若不正确,小弟的算法将找不到理论依据,小弟只好投降了。
RedGuest 2001-07-09
  • 打赏
  • 举报
回复
题目的意思我仍然有些迷糊,是不是求关于每个n的大N的最小值?
那样的话,真的有很多麻烦…………哈哈
想出来了也没有用,何况想不出来,睡觉去了…………zzzzzzz
RedGuest 2001-07-09
  • 打赏
  • 举报
回复
这样看,*必须至少两个在一起,我们考虑最基本的情况,两个一起时,可以控制3*4的一个区域
oooo
o**o
oooo
这样,显然是最经济实惠的:)(这点应该容易证明,用数学归纳法吧,懒的再想了,呵呵),所以,如果n%(3*4)==0,那这时候,N一定是最小的。
就是N = n*n/(3*4)*2
fish_autumn 2001-07-08
  • 打赏
  • 举报
回复
继续关注
加载更多回复(36)

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧