Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
算法证明算法证明:记输入图像中{像素起点,起点的相邻点,左下角点}为集合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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator