这段代码的数学归纳法?

Posted

技术标签:

【中文标题】这段代码的数学归纳法?【英文标题】:Mathematical induction of this Code? 【发布时间】:2013-12-15 12:58:32 【问题描述】:

我真的不明白我如何在本准则中使用归纳证明。 我只想知道如何证明这段代码和算法的正确性。

证明我们永远不会计算已经计算过的项目。

countCells(x,y) 的算法

如果 (x,y) 处的单元格在外面

结果为0的网格;

否则 (x, y)处的单元格颜色不是异常颜色结果为0;

其他 将 (x, y) 处的单元格颜色设置为临时 颜色;结果是 1 加上每块中的单元格数 包含最近邻居的 blob;

public int countCells(int x, int y)

    int result;

    if(x<0 || x>=N || y<0 || y>=N) // N is the maximum value of the matrix
        return 0;
    else if(!getColor(x,y).equals(ABNORMAL)) // 
        return 0;
    else
    
        recolor(x, y, TEMPORARY);
        return 1 + countCells(x-1, y+1)  + countCells(x, y+1)
             + countCells(x+1, y+1)  + countCells(x-1, y)
             + countCells(x+1, y)  + countCells(x-1, y-1)
             + countCells(x, y-1)  + countCells(x+1, y-1)
    

以下链接显示了它是如何工作的

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=186514818

【问题讨论】:

证明正确性?你能指定countCells应该做什么正确的事情吗? 在我看来,这是一种填充算法,它计算从(x, y) 开始时连接的异常颜色单元格的数量。不过,没有什么要证明的。 您不证明代码的正确性,而是证明基于它的算法的正确性。那么您的算法是否计算包含单元格的 blob 中的总元素? 我的计算机科学老师说我应该通过归纳来证明这一点。我不知道我如何证明。是的。此算法仅计算包含单元格的 blob 中的总元素。 输入:现有矩阵中任意点的二维矩阵,x坐标,y坐标。输出:包括像素(x,y)的blob计数 【参考方案1】:

归纳证明

证明基本情况条件(n = 1)

证明所有假设步骤 (n = k)

证明归纳步骤 + 1 (n = k + 1)

因此,使用步骤 1 的基数调用您的函数,让 k 等于其他一些通用输入,然后执行输入 + 1。

基本上,您希望测试函数的边缘情况以确保它们正常工作。你的老师可能希望你只为上面的函数编写测试条件。

【讨论】:

谢谢。但我仍然不明白我是如何从这个算法中通过归纳得到证明的。我刚刚发布了这个算法是如何工作的。你能点击我上面写的链接吗?

以上是关于这段代码的数学归纳法?的主要内容,如果未能解决你的问题,请参考以下文章

归纳方法

初一数学上下两册书的知识点归纳。

高中数学必修和选修知识点全归纳

数论 Day2基础归纳法 题目

LeetCode 390 消除游戏[数学 归纳法 递归] HERODING的LeetCode之路

高中数学必修和选修知识点全归纳