对大O记号两个性质的证明

要认真理解基本概念,复杂问题无非就是简单问题的约束性组合

——刘杨

在对计算机算法进行渐进时间复杂度分析时,针对足够大的输入规模n,算法执行时间T(n)的渐进增长速度,有一个渐进上界的估计,用大O记法表示。

若存在正的常数c和函数f(n),使得对任何n \gg 2都有T(n) \leq c \cdot f(n),则可认为在n足够大之后,f(n)给出了T(n)增长速度的一个渐进上界。此时记之为:

T(n) = O(f(n))

由这一定义,可以导出大O记号的以下性质:

(1)对于任一常数c > 0,有O(f(n)) = O(c \cdot f(n))

(2)对于任意常数a > b > 0,有O(n^a + n^b) = O(n^a)

最近不是在看匈牙利数学家波利亚写的《怎样解题》嘛,我就突发奇想:如果让我来证明这两个性质,应该不难吧?我该如何证明呢?

题目的已知数据,是正常数c和一个在非负整数域上的函数f(n),n为问题的规模,f(n)为算法执行的最长时间,所以f(n)的值域也是非负的。未知量是要证明的两个结论。

观察结论,未知量和已知数据之间通过大O记法联系在了一起。突破口很可能就在大O记法本身的定义上,于是,我们先回到定义上去,认真研究一下上面对大O记法的定义。

仔细理解这个定义,它想表达什么意思呢?当n足够大的时候,从函数图像上来看,f(n)就像是T(n)上方的一个无法逾越的鸿沟,T(n)的取值永远都小于等于f(n)乘以一个常数的值。但它对证明这两个结论有什么帮助呢?看上去似乎没有,要证明的结论两端都有大O记法,好像并不能直接应用T(n) = O(f(n))来做点什么推导。

O(f(n)) = O(c \cdot f(n))中的等号是什么意思?T(n) = O(f(n))中的等号又是什么意思?它们是一个意思吗?仔细想想并不是的。T(n) = O(f(n))中的等号,隐含的其实是小于等于,是T(n) \leq c \cdot f(n)的意思。也就是说存在一个T(n),当n足够大时T(n) \leq c \cdot f(n)。那么我可能找到很多个函数都满足这个不等式,O(f(n))是啥?对了!它本质上是一个集合,集合中的每个元素T都是一个函数,都满足T(n) \leq c \cdot f(n)。所以两个性质中要证明的结论其实是想证明两个集合相等。也就是说,在深刻的理解了定义,并搞清楚大O记法的本质后,我们以一种不同的形式重新叙述了要证明的结论:其实就是证明两个集合相等。

\forall e \in A,e \in A \to e \in B\forall e \in B,e \in B \to e \in A,那么A = B。这就是证明两个集合相等的方法。另外,从大O记法的定义中,我们能读出一点熟悉的味道,就是微积分中“极限”的概念:
\lim_{n \to \infty}\frac{T(n)}{f(n)} = c
可以给出(1)的证明了:
\forall T(n) \in O(f(n)),有:\\ \lim_{n \to \infty}\frac{T(n)}{f(n)} = c,\\ 根据极限性质,两边乘以1/c,得到\lim_{n \to \infty}\frac{T(n)}{cf(n)} = 1,\\ 再由大O记法定义,可知T(n) = O(c \cdot f(n)),得到O(f(n)) \subseteq O(c \cdot f(n)) \\ \forall T(n) \in O(c \cdot f(n)),有:\\ \lim_{n \to \infty}\frac{T(n)}{c \cdot f(n)} = c'\\ 两边同时乘以c,得到\lim_{n \to \infty}\frac{T(n)}{f(n)} = c \cdot c' = c'' \\ 由大O记法定义,可知T(n) \in O(f(n)),故O(c \cdot f(n)) \subseteq O(f(n)) \\ 综上可得:O(f(n)) = O(c \cdot f(n))
再给出(2)的证明:
T(n) = O(n^a + n^b) \Leftrightarrow \lim_{n \to \infty}\frac{T(n)}{n^a + n^b} = c,c > 0 \\ 因为a > b > 0,\lim_{n \to \infty}\frac{n^a + n^b}{n^a} = \lim_{n \to \infty}(1+\frac{1}{n^{a-b}}) = 1 \\ \lim_{n \to \infty}[\frac{T(n)}{n^a + n^b} \cdot \frac{n^a + n^b}{n^a}] = \lim_{n \to \infty}\frac{T(n)}{n^a} = c,所以T(n) = O(n^a)
总结一下,在真正理解大O记法深刻含义(集合)的基础上,我们从观察结论出发,找到了正确证明这两个性质的思路,即证明两个集合相等。证明两个集合相等的方法以前在别的题目中是做过的,可以直接拿过来用。再从大O记法的定义出发,成功解读出它的“极限”的含义,从而和微积分中学过的函数的极限联系起来,然后通过极限的性质,成功地对这两个性质进行了证明。已知数据和未知量之间联系的条件,是集合相等,以及函数极限的性质。

反思一下,解决问题的时候要找思路,而不是遇到一点困难就开始自我攻击。一直以来我有个思维方式的怪圈:尝试解决问题--->思考半天没有思路--->忍不住看答案--->开始懊悔:这么简单的思路我咋想不出来呢?!然后下次再遇到别的题目,又重复一遍上述的思维怪圈,形成恶性循环。就在尝试证明这两个结论的时候,我又开始忍不住想看看答案,幸运的是找不到对这两个性质证明的答案,只能尝试自己解决。后来翻了《离散数学及其应用》,发现大O记法中等号的确切含义并不是相等,而是小于等于,进而领会到大O记法表示的其实是函数的集合,这才找到了证明的正确思路。然后又翻了《托马斯微积分》,再次确认自己对极限性质的应用没有问题,这才给出了完整的证明。但在找到思路之前,我又一次开始了对自己的自我攻击,俗称精神内耗:

  • 这么简单的性质你怎么就证明不出来呢?你是不是脑子有问题啊?
  • 你不是上了大半年的《数据结构》课吗?学那么多有什么用?
  • 你以前也做不出来,现在还是做不出来,我看你真的是一点长进都没有
  • 你就根本没看懂这本书,算了你还是看答案吧废物

越想越心烦,越想越没信心,首先就输给了心中的这些恶念,所以不管怎么学都始终有一种学不会,学不通的感觉。现在看来,这不是智商问题,是心理问题。

对这两个基本性质的证明是微不足道的,但我却从中发现了我自己身上长期以来存在的问题,即心态问题。从现在开始,我要斩断心中的这些执念,停止对自己的精神内耗,遇到问题多找方法,承认自己基础不扎实并多补基础,而不是遇到点困难一上来就开始自我PUA。人要在事上磨,方能见真功夫,毕竟

人生难得今生得,

佛法难闻今已闻。

此身不向今生渡,

更向何生渡此身?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容