TL;DR:我如何证明算法适用于每个 n 值?
概述:
我是一名自学成才的程序员,具有线性代数的数学背景。我最近需要通过编写一个算法来解决 n=100 的问题来证明关系是递归的。
当我找到解决方案时,我到达那里的方式被认为是不可接受的。与我交谈的人说我的算法是一种“统计”算法,而不是实际证明存在递归关系并证明我的算法可以工作。
我一直在解决诸如 codesignal、hackerrank 等网站上的一些问题,但这是我第一次遇到这种将解决方案推广到正式证明的概念。
问题:如何证明算法适用于每个 n 值?
示例:让我们以二进制搜索为例,忘记我遇到的实际问题。
如果您有一个由 100 个整数组成的数组,按升序排序,您如何证明您的二进制搜索算法适用于任何数组和任何 n?
在下面的示例中,假设我们的数组是
arr = list(range(100))
我提出的问题是:
编写一个递归算法,如果值 '42' 在数组中,则返回 True,否则返回 False。
你如何证明(如正式证明)这个算法有效?请注意强调算法从启发式解决方案转变为证明算法的那一刻背后的思维过程和直觉?