Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

算法证明

Posted by Aidway at 2016-01-31 19:56:19 on Problem 1009
算法证明:记输入图像中{像素起点,起点的相邻点,左下角点}为集合A,输出图像中像素起点为集合B,那么B是A的子集。
证明:
假设存在点x属于集合B,但是不属于集合A,即输出中的起始点不属于输入中的{起始点、与起始点相邻的点、左下角点}
对于输入图像:
1)若x是左上角点
因为是第一个点,无论输入图还是输出图,都是线段的起始点。
即该点属于A,也属于B。
故假设不成立。

2)若x是右上角点
. . a x
. . b c
. . . .
因为a、b、c都不是起始点,
故上图可以转化为:
. a a x
. b b b
. . . .
此时x本身为起点,当然既属于A,又属于B。
故假设不成立。

3)若x是左下角点
假设直接不成立!
因为此点作为特殊点已加入A,故该点不管是否在B中出现,一定在A中。但,为什么要把它作为特殊点呢?
. .
a b .
x c .
此时左下角的点虽然不是起始点,也不与任一个起始点相邻,但是此处的输出值为|a-x|,
但是倒数第二行最右侧的x,输出值为max{|x-e|、|x-d|、|x-f|、|x-g|、|x-h|},
故,该点必须要考虑。
. .       d e
a a .     f x
x x .     g h

4)若x是右下角点
. a a a
. d d x
此处x本身为起始点也!,属于A,同2)所述。
故,假设不成立。

5)若x是非边界点
. . . . .
. a b c .
. d x e .
. f g h .
. . . . .
因为a、b、c、d、e、f、g、h都不是起始点
那么,a=b=c d=x=e f=g=h
故上图可入下转化:
. . . . .
a a a a .
x x x x .
f f f f .
. . . . .
注意:最左侧一列可能是边界,也可能不是。
此时,第三列的x与第二列的x在输出中对应的值相同,因此不可能是输出线段的起点。
此时x虽然不属于A,但同时不可能属于B。
故假设不成立。

综上所述,不存在一个点x属于B但是不属于A。反之,若一个点属于B,那么一定属于A。

若有疑义,可联系http://blog.csdn.net/aidway

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator