wpe7.jpg (11495 bytes)

我的征尘是星辰大海。。。

The dirt and dust from my pilgrimage forms oceans of stars...

-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆

作者:黄教授

二〇〇三


一月一日 晴

今天,收到黄勇的邮件并和他在线讨论,发现两个MBA的解答还不是最优解,虽然他们的理论是正确的,但是答案还不对。看这里。同时对6个海盗的情况引入了“数学期望”的考虑方法,修正了我和黄勇讨论中的错误。

我热切的期望有更多的朋友参加讨论,如果你们有什么建议和想法,不妨留话给我


一月六日 晴

今天是开学的第一天,又去找教务处关于免修课的事情,结果还是没有结果,想到林鹭浪的建议,以后可以写一个校园系列。奋战近一个星期终于完成了我的字典程序,这是一个利用二叉搜索树的可以存取到文件,并可以不断添加的字典(好像都是废话)。5M的空间上限到了只好狂删图片。


一月七日 晴

今天是开学第二天,我饿坏了!早上去TAV上数学,中午就吃了一块大饼,接着上C++的课,别看Fatty不学无术,他老婆Rita还是有点真才实学的,冲着这一点,他的作业就给他做吧。上完课回到家一看Concordia的上课时间到了,O.S.连着“概率论”,两门课上完回到家已经8:30了。真饿啊!写了一篇概率论的学习心得发给老师。

一月十日 晴(错了是小雪了)

累了两天终于可以休息一下.今天把昨天的离散数学及计算机组成原理的笔记完成了。Dr. Ford从善如流回信并在课堂上改正了小遗漏.又加了两三个黄勇推荐的小puzzle.


一月十一日 小雪

加了几个小puzzle据说是小学生的数学应用题,不过我实在是不敢保证大家都能做对,试一下?同时,我在网上看到说台湾搞教改,小学五年级的数学题竟然有:“爸爸出国旅行,一件行李25kg,另一件28kg,共多少kg?”者如果是真的,台湾也不用操心了,过20年他就要找上门来讨救济了。相比之下,大陆的小学数学有点太超前了吧!把feof()的问题作了两个测试


一月十二日 晴有小雪 

前天晚上吃晚饭的时候,我宣布要写一个逻辑的类,初步完成了基本的操作符重载,以后可以在家功能进去吧,明天又要上学了。半夜又加了一个小puzzle.


一月十三日 大雪

今天去学校买书注册,在地铁被一个穿着体面的中年白人妇女拦住用法国口音很重的英语解释说自己早晨被银行拒绝,现在没吃的,天又冷能否给她几块钱。我看她眼泪都快流出来了,急忙把钱包里所有的硬币都给了她,跟她说我也很穷只能这些了。那些quarter可都是我攒下来洗衣服的呀,看来这个月不用洗衣服了。事后我一直在想为什么那么多人她偏偏找上我?莫非她还是很识货的,一眼就看出我身上着价值三四千的防御力250,抗冷+50,抗电+20的皮夹克?转念一想不可能的,她肯定是知道我也是穷人,只有穷人才会帮助穷人了。


一月十四日 雪

一个今天概率课的简单证明


一月十八日 小雪

今天去学校听unix的讲座碰到反战大游行。然后宰了朱春明一顿以示庆祝,同时晚上终于可以开始这个星期一直计划写的Matrix的类


一月十九日 现在还是晴

一早起来把我的Matrix做了加强,实现了加法,乘法以及旋转等等。无聊之极写了一个模板化的stack.


一月二十二日

天气预报说非常非常冷。。。

夜不能寐,早起胡言乱语一通。对不起,我发现这实际上是Fuzzy Logic的意思。


一月二十五日   小雪

今天把头剃了,脑子清醒了一些就把离散数学的小作业用程序作了一下,这是一个极其简单的判断谁是罪犯的问题,因为只有三个嫌疑犯,而且只能有一个罪犯,所以太不值一提了,比爱因斯坦的问题还简单的多。 


一月二十六日 小雪

今天正在改我的字典,同时先写了一个极其简单的小函数给长征。同时把我以前写的一个从文件读字的简单的类(包含自增长的数组)简单整理了一下。 


一月二十七日 晴

终于胜利在领bursary之前完成了功能强大的Power Dictionary,增加了frequency和rank的功能,frequency也可以存入文件,rank也采用binary search tree以便经常更新的效率。


一月二十八日 小雪

今天把我的逻辑类小改了一下用来检验一组判断是否consistent也就是说给你一组“规则”和一些基本事实,你能否推理出某个结论,或判断这个结论是否可能? 


二月二日   小雪

今天真累啊,从早上10:00开始debug到下午18:00。晚上又花了两三个小时才完成了超级字典,即字典的第三个版本。改掉了ranking的一些错误。


二月五日 大风

今天偷懒就把前天做的作业贴一篇吧,是一个简单的统计输入单词的小题目,见笑了。


二月八日   阳光灿烂

今天终于完成了本星期最大的工程-- PowerLogic,这实际上是我的Logic类的第三个版本。这个版本无比强大,对于是非判断可以从结果倒推,他的完成总算没有辜负这个星期的辛劳。同时纠正了上一个版本的错误结果---我的输入数据错了,10个规则中的第六个少了一项。


二月十二日 小雪

色即是空,空即是色?今天讲的“空集合”真让人摸不着头脑。


二月十四日 晴

今天心情很不好,昨天看BBS到快两点,早上5点多起来挑战“Coding Competition”结果输了,我没有办法在3小时内完成最容易的题目,(虽然正常没有问题,我想,可是就如同后来的考试,可能和没有睡好有关系吧?)下午郁闷瞎闯到了“地下城”,真热闹。晚上为了排解郁闷把第三个题目也作了,这是次容易的。可是我还是超过了三小时。


二月十六日 晴

今天我都快要吐了。“Breadth First Search”怎么会这么复杂呢?我花了差不多一天半才解决第四题.现在我的胃一直在翻腾,头晕眼花,我要去跑步了。 


二月十八日 晴

昨天早上花了一上午为我的网页又找了一个免费的所在,现在再发生911我的资料还有一个备份,不过拷贝5,60个文件实在是一个无聊的工作。今天总算花了九牛二虎之力把第一个问题解决了,我认为是最难得,所以放在最后,可是那位写solution的大虾却不认为是最复杂的,虽然他自己也承认代码最多。


二月二十日 晴

有客自故乡来欲咨询此地如何?我实在不知所云


二月二十五日 晴

下了一场大雪,我也过完了一个堕落的春假!什么也没干除了打游戏,我要改变这个错,没什么好说的,贴一张汇编得作业吧,程序很简单但是能简单地描绘人类迁徙的一般规律,物以类聚,分久必合,合久必分。  


三月八日 晴

连着考试,作业不断,我最近什么都没干成,人变得又笨又懒,没东西贴了,就把c++的作业贴一贴吧。是一个很简单的模仿类似大富翁的Boardgame


三月十四日 晴

我的理由还是因为考试作业,什么也没有干成


三月十七日 晴

今天心里不好受。贴一个用汇编编的“二分法求平方根”。下载可执行程序试一下,运行然后输入一个小于65535的数字,回车。 


三月十九日 晴

平方根求法稍稍改进了一下,对于除法还是有疑惑。下载试一下。    

 


三月二十二日 小雨

贴一张汇编的作业,是前一篇作业的加强班,是要用图形来描述数组元素的变化。我讨厌提供的library自己重写了一遍,当然因为都很简单其实相当于重新key了一遍,不过呢心理感觉不错啊。下载运行一下吧。 


三月二十六日 晴间多云

本来以为可以开辟一个“在Mcgill的日子里”,现在看来是不可能了,Admission根本不看你得TOFEL成绩,只看成绩单,可怜我花了一百多刀考了647也没有用。心情不好,离散数学又没考好。唉,天下不如意事常十之八九!不过将来他们总有一天会后悔没有招我进去的,这么一想心情顿时舒畅了。把作业也做了。


四月四日   阴

无所事事的生活让我感到可耻,虽说考试作业很多,可是我真的都在学习吗?这并不能成为我没有写新程序的理由。很多想法稍纵即逝,我却始终未能开始。今天,总算抽时间把以前的Matrix小改了一下,实现了几个简单功能,“与”和“或”和“乘方”的运算,“reflexive,symmetric, antisymmetric, transitive”的属性,以及“transitive closure”。为了节约宝贵的网络空间,以后输出结果不在贴图了,改用文件形式,想看自己下载。(除非你贡献一点银子让我多买几M的空间。)  


四月七日 晴

今天,我想开始我的一个长期计划:写MASM的库函数。即使都是没什么大用的小函数,可是毕竟是自己的版本啊!先加了个GCD,LCM,还有输入输出整数。哈哈没想到是这么简单的东东吧? 


四月八日 晴

今天实现了我长久的计划:完成一个逻辑集合类的主架构,初步用回调函数实现了“universal”和“existential” quantifier。接下去我就可以以此集合类为基础实现“function”和“relation”了。响应朱春明同学的倡议,计划将来合作一个国际象棋程序,先画了一个棋盘,很幼稚吧? 虽然现在空间很紧张,可是,还是忍不住加了一张厦门环岛路的魅力照片---世界上最美的赛道


四月十三日   晴

朱春明同学回国了,现在唯一能讨论讨论中断机制的机会没有了。呕心沥血穷一日一夜完成了三个证明, 不过不知道对不对。


四月十四日    晴

今天居然用了一整天在写汇编作业。工作量超过了我的估计,在我的Library里又加了一些小函数,现在我都快记不清楚各自的功能了。作业里要对鼠标直接控制,结果我发现我的USB鼠标好像不行啊,只好等到实验室在debug了。


四月十八日    阴

今天是两门课的作业的DUE DAY,昨晚,突击完了离散,今天又胡乱写了一下硬件结构的作业,实在搞不懂具体的DMA, INTERRUPT机制,我的笔记本又不能显示鼠标,汇编调试简直是闭着眼睛在找鼠标。现在去实验室调试汇编作业我的Library。 倒霉!又是不知名的什么节日,学校不开门,作业怎么交啊?


四月十九日   阴

伟大领袖毛主席教导我们:理论只有和实践相结合才能得到检验和发展。我写的“功能强大”的逻辑类如果不能得到实际应用的话,我为什么要去写呢?所以,今天我小小地改了两行代码用它来作了一个反证法的证明,从此,PowerLogic又有了反证法的功能。 复习硬件,忍不住又要在我的小函数库里加一个阶乘,全当复习吧?不过又碰到了令我长久头痛的问题,如何输入一个大整数?或者负数?或者小数?看起来挺复杂的,对吗?


四月二十日   看起来是晴

今天,还在为昨天的事感到高兴。又把我心爱的逻辑类做成了Library,其实是很简单的事情,只是很少有这方面的资料,vc++的编译环境指令又很多,我摸索试验了好几次才成功,但是对于如何从Library里输出变量还是不懂,有谁能指导我一下呢?躺在床上想着要从我的集合类(LogicSet)衍生出关系类(Relation),不知道今天是否可以开始?

Relation算是作出个雏形,可是这算类吗?我用了大量的回调函数,程序员根本无法使用!最痛苦的是c++里不能用类的成员函数作回调函数的参数。我最后想到了友元,可是我还没有看过书,不知道怎样用。集合和元素真是一对鸡生蛋,蛋生鸡的关系,不知道谁应该先出来,烦! 又看了一遍Matrix。There is a big difference between knowing the path and walking the path.


四月二十一日 密云欲雨(错了现在是黑云密雨)

仰头看看天,低头望望地。忍不住又在MyLib里加了一两个小函数。一个人有一个梦想


四月二十二日   密云欲雨

今天早上去实验室大有收获。终于完成了debug的工作。毛病真不容易想到,因为牵涉到windows刷新的问题,因为鼠标也是windows画出来的,我先画我的图,怎样让操作系统知道鼠标的部分要更新?我必须在我画我的图之前隐藏鼠标,画完以后在显示他。

“集合本非树,元素亦非台,原本应同路,何故要分开?”学离散数学真好比是参禅悟道,今天在bus上我才领悟了集合与元素并非是“鸡生蛋,蛋生鸡”的两难关系,其实,鸡即是蛋,蛋亦是鸡。我就是一开始没有领悟这层关系才会将集合和元素分开来,写成两个类,结果在实现“Relation”时候,从最外面的集合指向最里面的数据竟然要至少6重指针,这么基本的一个类,让我搞得好累啊!


四月二十三日   黑云密雨

早上冒雨跑步把脑子淋坏了,就胡言乱语起来,哈哈,请看“明天就要嫁给我了”。


四月二十四日   

人间四月芳菲尽,蒙特利尔飘雪花。哎,又下雪了。昨天晚上想了一晚上的“薄层集合”(ThinSet)还是不行,写了一半又放弃了。头疼!

喂,那个坐在前排穿绿衣服的圆脸的同学,你留的地址不对,讲习所的新通知发不出去。(说谁呢?)

我给Matrix加了两个及其简单的方法,以至于我觉得提起他们我都觉得可耻。


四月二十五日    现在是晴

下午要模拟考试,明天要考一门组成原理,可是我现在还是无心看书。哎,现在真是不见棺材不掉泪,进了棺材也无泪,没治了。蒙城四月的雪和温哥华五月的雪差不多,记得去年刚在温哥华落地时候住在同学家里,突然一早醒来觉得窗外格外的亮堂,开窗一览,雪下完了。还没吃午饭,再一看,雪化完了。昨天的雪也是这样,晚上出去散步时候,地面干干净净,连雨都没下过的样子。

今天,我又几乎完全推翻了自己的“集合就是元素,元素就是集合”的想法,又部分地回到了集合归集合,元素归元素的出发点。难怪人们说天下事分久必合,合久必分。毛主席也说了:“否定之否定!”不过,改进还是有的,并不是原地踏步。我的ThinSet写了快一天,下午模拟考试不是很理想,哎,也没办法。我的Relation在前一版的基础上去掉了元素这个类,但是,集合内部数据和子集却是分开了。又把回调函数调整了一下。


四月二十六日   天街小雨润如酥

下午要考试了,我还在想我的程序。我不出国我干啥?


四月二十七日    阴天吧?

看离散看到一个小puzzle,考考你,我是没有答对,但是,我把它总结成一般规律了。他的意思就是“与时俱进”的道理。 下午去感受了一下蒙特利尔的春天,拍了不少照片,当然风景是主要的,我作为风景的陪衬也在如坐春风一样。


四月二十八日   阳光灿烂

多好的天气啊!和同屋的MBA胡去跑步真是冬天以来的“在那阳光灿烂的日子里”。看离散里的概率问题真有意思,当然不考试就更有意思了。说的是一个错误和大家都相关可是假如大家都不去纠正,结果是比较出乎我们意料的。


五月一日    天阴沉沉的

看到以前作业里绞尽脑汁的证明题,忍不住作了一个自以为Elegant的证明

无聊。


五月二日 阴雨绵绵

复习离散,忍不住按照书上的余数应用的例子用汇编写了一个随机数的产生函数,不过为了使用方便,我没有像c++的srand函数一样开放一个随机种子函数,要做是可以的了,嫌麻烦。 又照着最简单的加密法作了一个加密和解密函数,不过,解密的时候,我实在想不出从余数求原值得方法,只好用倍数-1次的试验整除这种笨办法, 害得我trace了一个多小时。


五月四日    多好的天气啊

今天应该是青年节,我也可以过啊!下午跑完步,黄昏去对大教堂作第N次的观光,拍了一些夕阳下的风景,同时不忘了把我作为风景的陪衬


五月六日   老天阴着脸

我心里也很烦,几天来期末考试让我不敢写程序,精神萎靡不振,向鸦片瘾犯了一样难受,心神不定,脑子也迟钝了,有时候还会像思春的怨妇一样感伤,没办法只好赶在晚上考试前随便写一个排列的发生类,其实说是写,还不如说抄,因为离散里有现成的算法,我不过把它写成个类,一个产生通用的排列的序列号,用户的对象数组可以用这个序列号作具体的排列,省得我用回调函数越俎代庖。哎,随便写写,就好像找不着鸦片抽支香烟解解闷罢了。

晚上考概率烤得我是痛心疾首啊!回来一怒之下,把组合的发生器也加入了类,其实,很简单,像算盘进位一样。至于输出接口,我还没有想好是否用回调函数,还是让类有一个属性来存函数指针。


五月七日 天高云淡,没有阳光也灿烂

今天,咱老百姓可真高兴。一高兴又用我的逻辑类作了一个简单的推理。还是老一套,已知一系列规则,事实,推出结论。这次是关于动物的,我的程序推出了这只动物是“非洲象,而不是食蚁兽”。(外人看着很无聊,鄙人却乐此不疲。这就是程序员的生活。)


五月八日   神清气爽,风走云飞

人的希望本无所谓有,无所谓无。因为,世人都在嘴边挂着,一如男人嘴上叼的香烟,女人唇上抹的唇膏,有时候,不过掩饰内心的孤寂无聊,或者装扮不够靓丽的外表。希望真正的意义却不大有人关心,敲完门的砖头早被扔到了墙角。

真实地我。而不是活在虚无缥缈的回忆里的我。  


五月十日     天高云淡,阳光更是灿烂

今天,我又把昨天从书上抄来的RSA加密算法写成一个简单的类,加密算法很深奥,别看代码这么简单可是理解起来就不容易了。基本的算法有求“inverse of a modulo m”,用的是从Euclidean算法倒推的办法。GCD(即最大公约数)也是用Euclidean算法,这个我以前用汇编写过,现在发现 有大用处,又用c写了一遍,反正是很简单的东西。还有求一个数的幂除以某一个数的余数的快速算法,这个纯粹抄书上的,否则让我想一万年也许能想到。RSA算是一种“公匙”加密算法,不过我对这个公共密匙想了很久才明白一点。为了给我的密匙,找两个很大的质数,我 又写了一个最最原始的搜索质数的小程序,见笑了。这个破程序跑了几个小时 也没有完成搜索。


五月十一日     天晴

今天,修正了GCD里的大bug,现在两个合数的GCD也可以正确的出结果了。又增加了一个linearCombination函数,就是求两个数的线性组合为他们的GCD的系数,哈哈学过离散的就明白了吧?这样239的作业就可以不用动脑筋了。我一向主张computer science的学生应该全部用程序解决所有的作业和问题。从昨天到现在我的搜索质数的小程序还没有跑完,天哪!已经十几个小时了还没有完!

Dr.Ford真是Concordia难得的好老师,我加密的算法理解过程都是在他的耐心指点下,你能想象他半夜十二点回我的邮件吗?  

我的有意义的一个星期天。 


五月十二日   小雨纷纷

今天,收到了期盼已久的DVD《Amelie》,和大家分享一下法国式的电影风格,喜欢吗?


五月十四日    天黑黑,要下雨,结果还是下了

刘教授批评我今天没有更新,哎,写不出什么东西,就把comp239的部分作业用程序算得结果贴出来吧。我个人认为除法理论是看似容易,其实挺深奥的,不过让我们去计算17的23次方处以131的余数,实在不公平,还是用程序作比较好。第12题,我还没时间贴出来,等星期四上完课再说吧。  


五月十六日    晴间多云

“...it follows by the Chinese Remainder Theorem that...”简简单单的一句话让我想了一晚上,4:40分从睡梦中爬起来,呆坐了半天才弄明白真正的含义,可是,我开始却无法想到这一层。Mr. Rosen认为理所当然的事情,我却无法想到,真是惭愧。

躺在床上又想了想,肯定还有别的途径。果然它是可以证明的。 

心愿---我现在有够无聊的,半夜12点听音乐看着时间流逝,我想用PigeonHole来证明Fermat's Little Theorem.我想改正我长久以来的错误---爱因斯坦的puzzle里面,我的程序结果是错的,我早就发现了,也几次试图改正,可是,总是半途而废,这个夏天里,我一定要完成这个心愿。我想完成集合功能的程序,我想按照书上说的用集合语言来描述所有的数学表达式,可是这一切的一切都在我的无所事事的幻想中变得越来越遥远。。。 


五月十九日   在阳光灿烂的日子里的又一天

昨天折腾了一天也没有办法证明Fermat's Little Theorem,看来我是好高骛远了,不过还是有一点心得的,也不冤。今天才有时间把作业做一下,因为,明天要交了。看我的网页总要有所回报吧?程序结果程序下载。昨晚还去看了一场电影《Matrix2》,特技还可以,情节不怎样。前天,参加别人的birthday party,居然路上碰到章鸿宾夫妇,蒙特利尔真小。

看书时候想到的问题,谁能解答?


五月二十二日   风和日丽

关于一个集合有多少个partition的问题一直萦绕在我心里。当时Dr.Ford讲课时候,那个加拿大小子要和Ford打赌说他当场得出了递推公式,我对此始终是半信半疑,这的确是一个复杂的递推公式。


五月二十六日    讨厌的雨下不停

补记昨天的博物馆日


五月二十七日    总算天放晴了

今天总算把partition的发生器写出来了。方法很粗糙,就是在数组元素中间方挡板的办法来分割集合。输出很头痛我就选择输出挡板在数组下标的位置,这样你就可以根据这些位置来分割集合了。(早晨起来发现以上全不对!简直是大错特错!!!贻笑大方了,如果有的话!


五月二十九日    晴朗的天空飘着白云

有人怀疑我的加密程序运算结果不对,这一点让我实在不能接受,我虽然没有做大量的验算,可是单凭书上的两个例子的正确验算,我相信程序是正确的。试想,假如我的程序有错,那么981的937次方除以2537的余数能正好和书上的结果0704相等的概率有多少?这种繁琐的计算我之所以写程序做,就是因为我对人的计算能力的不信任,包括我自己。


五月三十一日     晴

昨晚打游戏到3点,因为又是要写breadth first search,这总是我长久的痛苦。我的想法就是“数数”,世界上任何问题都不过是divide and conquer,所以,我想人工智能的核心就是partition,因此,我把BFS写成一个类,有几个方法我把它做成virtual的,以便后代可以重载来解决专门的问题。解决问题不过是切分,记录,检验,再总结。


六月一日 天黑黑,气温降到了8度,仿佛又回到了冬天

昨晚鼓余勇追穷寇,又用BFS的框架来解决第15题。这是一个四度空间路径问题,虽然总共只有16步,可是,到了第11步以后生出的节点就 多到以至于内存不够的地步了。因为,单单第11层就是超过4百万个节点。没有办法我只好把问题简化成10步。另外,让我对C++感到恼火的是我因为使用了static的变量结果virtual的函数不起作用了,叫我白白辛苦没法继承了。(准确地说是不能多态。)

今天又用Depth-First-Search问题重新解决了一遍。DFS和BFS运行结果呈鲜明的对比:DFS使用内存极少,仅仅几百k,但是cpu被完全占用了,而BFS使用cpu很少,只有百分之几,但是内存要用到几拾兆,最后把磁盘的交换文件都用光了还是不够。这个问题的结果很夸张的,如果我的计算正确的话,结果文件大小会有1G多。我的D盘都撑破了!


六月二日 看窗外阳光灿烂,听树上小鸟唱歌

早晨终于抽时间验证我的加密程序了,我一直坚信我的程序没有错,可是为什么结果和老师的答案不一样呢?终于搞明白了,我的输入0667前面的这个0在害人,0代表8进制啊!


六月六日 昨天是什么天气我今天早晨实在想不起来了

昨天的考试简直是开玩笑,竟然和sample一样!简直就是cheating!回来后愤愤不平就写了这个无用的Container类,不知道这种动态二维数组用什么用,反正就算是练习一下模板类的继承吧?总算明白继承前要先给父类传递子类的类型参数,否则编译器怎么编呀?


六月七日 好像是晴吧,下午出门看就知道了

夙兴夜寐,殚精竭虑,苦苦想了将近一个月终于完成了Partition的发生器。我也终于明白了我前天潜意识里面写多维动态数组的意思了,就是为了存储partition啊!冥冥之中似乎有什么暗示,今天临辰5点从梦中醒来发现在梦里我已经有了程序的思路了。不过仔细一想,其实方法我老早就想过,只不过因为效率的因素,不想用递归,所以迟迟不能解决,当然存储的形式也是重要因素,像这种最少一个元素,最多n个的数列,存储实在是一个麻烦事。


六月八日 太阳真灿烂啊!

下午,一觉睡醒,硬拖着MBA胡去跑步,然后,躺在HEC前的草地上学洋人晒太阳,一边欣赏眼前身穿BIKINI也躺在草地上刻苦读书兼显示身材的法兰西MM,一边畅谈起我儿时的理想:小时候出生在西安,常听说当地的老农民的理想就是冬天里有太阳的日子里,躺在向阳背风的山坡上,边晒太阳边抓破棉袄里的虱子,然后,中午回家吃老婆从政府那里领回的救济粮做的饭。恍惚间,我正在实现一个中国农民当年的最高理想:来到加拿大晒着太阳,抓着从草地爬到身上的小虫子,然后,回去吃着QUEBEC政府的Bursary做的饭,唯一不同的是饭不是老婆做的。不过反正是有饭吃就是了,哈哈。。。

补记昨天的日记


六月十一日 下了一天的雨

真闷啊!胡思乱想就写了这么个无用的东西:Number Divider。比如一个数10,你知道有多少种和的形式吗?(正整数)10有39种组合方式。早上无聊之际又把我的矩阵类修正了一个bug,现在可以正确地求解多元一次方程组了,不过,这实在太简单了,都不好意思贴出来了。不过,为了维护程序版本的连续性还是贴吧?关于LHRRCC没有学过离散的我也懒得解释了。


六月十二日 Another day in Paradise

如果说蒙特利尔的冬天是地狱,那么这里的夏天就是天堂了。我今天当然就是在天堂里的又一天了。这年头不知还有多少人喜欢Phil Collins的歌了?这就是我


六月十四日   风雨如晦

老妈第一次写邮件给我,并把老爸的来鼓励我。下午去买了个数码相机,这是我认真学习的样子。今天,又胡思乱想一番,不知所云一通。 临辰三点我还在看DVD,有时候我对自己很绝望,18个鸡蛋如何放到四个篮子里呢?这个问题并不很难啊,可是我的程序却写不出。谁能指点我一下呢?


六月十六日   风轻云漫,阳光灿烂

读了离散里的Hamilton Path,决定响应毛主席号召理论结合实际,跑到公墓里在迷宫似的林荫道里寻找Euler Circuits.哈哈实际上是用我的新数码相机拍风景照了。晚上debug了半天,自己随手改了一个小东西,结果害得我吃尽了苦头。我把我的BFS类变得标准化了,程序员只需要重载一两个函数。并且又解决了离散里一个简单的小问题。


六月十七日   晴

晚上上课回来加夜班赶着写Dijkstra算法,就是图里面的最短路径算法,好累啊!眼睛都快睁不开了。我觉得算法可能有问题,因为,最小值是对的,但是路径却不对


六月十八日   还是晴天

早上醒来才完全明白为什么昨天的算法不能给出正确的路径:因为节点加入集合的顺序与路径是毫无关系的,我们只能记录每个节点的前一个节点来最后逆推路径,因此,我在display的函数里用个简单的栈就能给出正确的路径了。本来书里的算法只是算最短的长度,路径完全是副产品,所以,没有提到。


六月十九日   阴雨绵绵

在Matrix里加了一个Warshall算法,算是对求transitive closure的一种快速算法吧。别看简单实际上很不好理解的。关于递归公式的再思考


六月二十一日   晴

离散老师出的额外的题目


六月二十二日 晴

昨天为了写isomorphic,结果意外地想到了解决树根设为静态变量,后代无法继承重载虚拟函数的问题。这个静态变量我把它做成了指针,只有在开始搜索前,有对象传入自己的this指针,把自己设为根。同时在添加子节点的时候,必须重载createSon函数,正确地创建类的对象。我用这个方法作了一个寻找连续0的程序。昨天看焰火好累啊。


六月二十四日 烈日如火

痛苦的一天!从昨晚上就开始写prim的算法,前后整整一天了。图的最大问题输入输出,我用一个16x24的incidence矩阵来描述这个图,几乎所有的错误都来自于这个矩阵数据的错误。我把我的BFS搜索类进一步完善了,并且简化了matrix类。


六月二十五日 晴

Kruskal还没完成,运行了Dijkstra解决assignment。 我下午想出了判断图是否有circuit的办法:顶点数不等于边数。不过程序我来不及检验了,1。明天要考英语写作。2。程序跑到12层就等很久了,估计又是几百上千万个节点了。


六月二十六日 骄阳如火

早上考英语写作,那个小资产阶级的老太婆出的题目都是从她所钟爱的《gazette》小报上来的,让我气愤不已,一怒之下,就第一个交卷子去理发了。下午听rice大学来的教授的演讲,真是如醍醐灌顶啊!我坐在第一排谁也不知道我是representative of equivalence class of undergraduates。因为其他人都是研究生和博士生,哈哈。其实他讲的都是一些简单的逻辑学发展为计算机科学的基础前的历史,穿插不少人物简介和掌故,老教授的德国口音很重,不过我基本上能懂。

忽然想起TAV的不学无术的Fatty


六月二十七日    树欲静而风常不止

他们又怎知我的征尘是星辰大海。(为藏拙,不给链接,想看自己找.)

什么是树?


六月二十八日   风舞九天,云动四海

Is there "universal truth"?

I am stuck again.当我试图用DFS重做Kruskal时候我发现了大问题,我的顶点和边的数量关系的前提是connected graph才行,可是判断connected几乎和判断circuit一样的昂贵,我真是不清楚是否真的有人实际用这个看似简单其实复杂的Kruskal写过程序?谁能告诉我?


七月二日     风舞清扬

看离散时一个简单问题的另一种简单解法。昨天是加拿大国庆节,游行时候看到法轮公的盛大排场让我 气不打一处来,这帮恶棍为了拿着美元真是丧心病狂!


七月三日      东边日出西边雨

千古奇冤!蒙城一夜。离散数学的考试完全不像我估计的那么简单!最可恨的是我写了那么多BFS的程序,居然最后一题BFS不会做,真是程序员的耻辱!准备反省做最深刻的检讨。这两天把我最喜欢的王菲几首歌的歌词抄下来了。“我也不想这样”,因为不知道自己“是否太软弱”。看到“天空”“蝴蝶”,我沉醉,结果从此再也“醒不来”


七月四日    淅沥沥的小雨下个不停

为了改正我的错,我决定重写标准的BFS(用数组这样更快,虽然少了灵活性。)为此,先写一个简单的queue


七月七日    天是阴晴不定吧?

我的BFS计划又搁置了,部分技术因素,部分是我把时间都花在了测试中国互联网发展现状的调查中了。(这个说法是够含蓄了。)老师都是认真的。


七月八日     看起来天气挺不错的

什么是减法?


七月十一日    淫雨霏霏

netwalky探讨唐诗英译。


七月十二日    天是阴的

朱春明同学要回来了,我去接他的行李。(他的人我就不管了。哈哈)做了一个英文版,主要是方便只懂英文的朋友,也就是把这个网页里所有的英文及其程序部分挑出来而已。 再顺便把c++作业贴一下,这几天实在是太堕落了,什么也没有做。


七月十四日   今天天气真是好!

不是我不明白。我一直很不好意思把一个少于100行的程序贴上来,但是它毕竟解决了我一个长久的pain.朱春明同学指点我解决了一个小问题


七月十五日   阳光普照大地

把长久未解决的问题答案贴一下,是从离散里炒来的,这个问题太难了,要用到inclusion-exclusion原理。昨晚的小问题是关于new对长度为0的数组的内存分配会返回空指针吗?答案是不!你预计到了吗?


七月十六日   忽晴忽雨

安能辨尔是雌雄?贴简单的作业会有人笑吗?


七月十七日    又是一个好日子

我终于抽时间把我心爱的DFS基础类进行了标准化,我感觉我用BFS用的太多了。我的斑马问题不能再拖了,我设想用DFS来解决它。昨晚去看焰火节,澳大利亚的焰火真漂亮!


七月十九日    老天的脸色不代表我的心情

长久以来我的心里一直有一个痛苦的声音在呼唤我,今天,我终于。。。“正确”地解决了这个让我魂牵梦萦的斑马问题


七月二十二日   临辰就能知道当天的天气吗?

今天,应该完成DFS的标准化工作。买了一片《notting hill》很同情男主人公--open a pandora box with troubles inside。后来计划改变了,我该做作业了


七月二十三日   多云?有雨?

local variable的reference可以用吗?


七月二十四日     阴有雨

今天早上把作业又小小的修改了一下,主要是当所有项都为0时候也要显示一个0。再一个就是安全复制,当两个对象order一样时候,显然不用再分配内存,同时,只有当复制成功并且分配了新内存才需要delete,如果有任何的异常,原来的数据必须恢复。同时写了一个comprehensive的测试程序,结果是比较长的。


七月二十六日 风起于野,云舞长天

正如我以前所说的,每次写关于深度搜索的东西,对我都是一个恶梦,我不知道其他学计算机的人怎样,反正我是想得头疼,尤其要将其写为一个反复用的类,更是累。我已经用链表写过一个,可是从效率的角度来看数组更好,可是改旧的真不如重新写。写不出来先去长征家蹭晚饭。

晚上看焰火又是刮风又是下雨好冷。长征提供了一个puzzle,朱春明同学很敏锐地提出递归的思想


七月三十日   风舞九天之上,云动四海之边

I just want to say thank you for your great job!


八月一日         风舞云飞

关于256bit加密的猜想。还有昨天做的作业,实在是太简单了吧?


八月二日       凉夏一日

终于,终于,终于完成了烂尾工程----DFSArray,把我心爱的DFS类的内部结构改造为一个数组,我也是鬼使神差地心底里总觉得链表结构比数组效率来得稍低一些,改呀改,很简单的改造变成了漫长的马拉松--超过一个星期。程序这东西,中间一停,后面再接起来就很烦人了,哪怕再简单的东西。所以,完成了我的心愿,我很高兴。

可是,接到家里的电话,却把他们快气哭了,我也不想这样,我心里也很难过。可是,这个世上有人相信我的征尘是星辰大海吗?


八月三日     好热的一天

今天去看同性恋大游行,好热。回来把我的DFSArray基类变成lib形式的obj文件,并放在lib目录下,.h文件放在include目录下,这样就是我的一个新的library。又用它作了一个“三个传教士“过河的经典的应用程序。


八月四日    热可是下了一场阵雨

一点关于conversion constructor的小问题。And at least it is correct, right?


八月六日      又是阵雨

Is conversion constructor involved here?


八月七日   好像是晴天

作业越来越简单,我写信去complain也没有用。无聊的作业。


八月十日   晴

今天要搬家了。昨天(就是一个小时以前)花了快一天改造我的DFSArray标准类,总算有一点点成果:我认识到深度搜索因为内存使用是固定的,没有必要不停地动态分配释放内存,所以,我改为搜索开始前建立一个对象数组。


八月十二日   晴间多云

搬了家发现sympatico的高速网不能用,只能忍痛取消,发现一个小漏洞:就是我这块自留地还没有被取消,就先将就着用吧。

我在黑暗中搜索,没有一丝线索,除了天边一颗若明若暗的启明星。我想唯一可以做的就是从读字开始-wordRead.


八月十三日    晴天

虽然不能上网来更新主页,可是我的日记却应当继续纪录我的征途,因为我的征程只能是星辰大海。Do we lose file pointer? 又写了一个作业,我的测试魔板的程序本身也是一个魔板程序,因为我痛恨重复的代码。


八月十四日    又是一个晴天

我出了一道考题,因为老师要每个人都贡献一道题目。


八月十六日    早晨有小阵雨

昨天,又翻弄以前让我痛心不已的往事--Code Competition。关于最复杂的第一题,当我尝试着用我的DFS类来解决时,我以为我遇到了不可克服的障碍,想了一晚上,明白类似Turing Machine一样,对于一个确定的状态只能由一个输出结果,只不过这个状态也许是由某一个内部参数决定的内部状态,于是,我在类的内部加了一个状态参数,这样问题的options还是不变,不过状态多了,还是维持一一对应的关系---这好像是我们所有科学的基本形式,为什么?


八月十七日    艳阳天

A const demo.


八月十八日     锄禾日当午

Re: I am not asking for something, but I do want to make it clear that I finished assignment 6 early last week...

I was shocked...


八月二十一日    阳光灿烂

想起了忘却的誓言。。。


八月二十七日    好天气

也许这一个星期所做得值得记忆的事情就是发现了VC++可能的一个小问题:Is it a bug of vc++6?


八月二十九日     秋高气爽

也许计算机课程里唯一不能一目了然的并不是离散数学而是Formal Language。这是我去年在York大学偷听的一点心得,不过话说回来了,所谓语法难道不就是一种编码原则,不也就是所有语义元素的排列组合,不也就是一系列non-terminals到一系列terminals的函数关系吗?这些不全都是离散数学研究的课题吗?

胡思乱想犯下了不可饶恕的大错!从此再不得安宁!为什么人总是犯同样的错误?自罚跑操场7圈。

重新捡起几天前的计划--写一个poke的小咚咚,见笑了,现在还只能发牌,比较awkward.


九月一日   天高云淡

mathematical induction.其实我并没有什么心得,可是,为了凑数还是写了这么一段。听小皱讲曾国藩坚持几十年写日记,看来我应该学习他。明天就要开学上课了,我的征程又进入了一个新的阶段。誓言


九月五日    秋高气爽

晚上去看免费的电影,这真是劳动人民的享受啊!感谢Quebec政府,感谢Montreal政府,咱老百姓可以看上露天电影。电影是好莱坞的老片子,应该是西区克可的悬念片,因为他所有的特征都有:恐高症,失忆症,谋杀,爱情,喜剧悲剧的转换。。。

回来后作网线的水晶头,奋战到半夜,终于网络通了,真好。


九月十二日 天真热

一个星期没有做事了,一方面是小徐从温哥华来,另一方面是刚开学很紧张。这个学期的课程全是硬骨头,今天是中秋,晚上上自动机原理,真好似听天书一般。天上月圆,人间月半,年年岁岁人们都在憧憬着新的希望。我只能默默地盼望我的征途真的 如大海星辰般的灿烂。希望本无所谓有,无所谓无,想的多了就成了希望;有一份梦想总比无梦的岁月来的好,至少我每天可以去幻想。

Why should we use literals?


九月十七日   老天爷会发高烧吗?

我会的。

comp229的作业。


九月十九日   秋花落叶知多少?

最简单的作业。


九月二十一日 落花有意随流水,流水无心恋落花?

 I think there are quite a few mistakes.


九月二十二日 天空灰蒙蒙的,好像布满了征尘

我的haskell作业,一句代码想一天的作业,看来我还是太笨了。Why don't I check website first?  This is completely wrong!

335-1,335-2,335-3,335-4,335-5,335-6,335-7

The declaration of an object should not add parentheses after constructor

229-1,229-2


九月二十四日 终于云开雾散出太阳了

程序是有一个小小的错误,主要是原来改代码的时候,漏掉一行。数目应该是56个


九月二十五日 忽雨忽晴

自动机原理作业修正。335-8

我花了25块美金买的域名还是不能用,而且写信去问,始终没有回音,真担心被骗了。


九月二十六日 晴

吾尝终日而思也,不如须臾之所学。


九月二十七日 晴冷

我的域名迟迟不能兑现,我想这次是被美国鬼子骗了,上网去搜索了一个新的免费的host,没有广告,应该国内看得到吧?以后就到这里来吧,geocities的广告太讨厌了。

实际上是冤枉人家了,现在一切都好了,可惜我自作聪明把cgi脚本给删除了。因此,计数器暂时不能做了。


九月二十八日   凄风冷雨

写了差不多一天才写了一个小程序---Reduce。功能很单纯的,就是把一个NFA的Transition Diagram转换为Regular Expression。原理很简单的,就是一次次地去掉一个个的节点,合并expression。程序写的很ugly的。这里是输入文件,就是一个含有"baa"为substring的语言的DFA。


九月二十九日 风吹树摇

“蹄之”不如不“蹄之”。“提之”不如不“提之”!


九月三十日     风雨如晦

心情跌倒了冰点,我把我的座右铭中的journey改成了pilgrimage,因为,journey和joy的开头一样,而实际上真正的旅程只是一片艰辛的看不到尽头的征尘。我知道我看得越清楚,我就会越看到它的艰难,然而,这也更说明那尽头并非绝对遥不可及。


十月一日    寒风凛冽,冷雨飘零

今天是所谓的国庆节,我很高兴,因为我去学校做心理测试题赚了8块钱,是现金。又去把胡一刀仓皇逃回国时遗留下的财产捡了回来,让他们继续在加拿大这片土地上战斗。战利品包括:将近100个一分钱的硬币,一件很新的鸭鸭牌的羽绒衣,一件这小子在这里买的夹克,他穿太大,我穿才合适,毕竟咱的身材在加拿大是标准的嘛!还有那个宝贵的从ikea买回来的杂物架,放上我的printer和scanner, it's perfect!


十月二日   天气很冷,阳光还算灿烂

昨天折腾了一晚上也没有解决中文显示的问题。这个网站的server提供的脚本写出的字串不能正确显示为中文,所以,我只好把留言簿作为英文的小小BBS作为中文留言簿

作业太多了,因为,没有什么作业是容易的。除了自动机原理,三门课都有programming的作业,我虽然不怕,也很喜欢,可是,毕竟大都是新东西,要浸润几十个小时以上才能成为专家吧?反正我是这样,就好像汇编,总要自己写很多程序,才算比较熟悉吧?


十月三日 阳光也变得如室内的暖气一样捉摸不定

229的作业真是不好做啊!一上午也没有做完理论部分,最后一个关于bootstrap loader可能遇到的错误,我实在是想不出来,大家讨论一下吧


十月五日 阴雨绵绵

今天下了一天的雨,心情郁闷到了极点,脚本语言简直是垃圾一样,我已经决定不再尝试了。烦闷的打了一天的游戏。想象人就是这样,平常抓得再紧,偶尔一放松有全都废了。何况我平常也不是那么抓紧点滴时间。

花了一天时间写数据结构的程序,写得很开心,因为这样的C++程序才是我所乐意写的,不算复杂,可是写起来挺有意思。主要是我花了将近两个小时在胡思乱想一个毫无疑义的问题:能否把一个模板类作为类型参数传递给另一个模板类呢?这实在是无稽之谈,我却想了很久都不明白。最后还是放弃了,老老实实地按常规写吧。结果在这里,这是一个很简单的洗牌的模拟,主要是必须运用抽象的基类的方法来完成,同时,要分别用数组,合链表两种子类来检验。


十月八日 晴朗的天空

今天真不好意思,看书发现了我的reduce程序有大bug。原来我不能假设在最后的结果中间头不能从final到start。花了一上午改正,真累啊。夏天的回忆,一组夏天拍的风景。作业的简化版。


十月九日 多好的天气啊!

今天晚上考自动机原理,题目非常的简单,可是,让人担心期末会很难。一高兴就把Dr. Ford讲的minimize DFA算法写了一个小小的类,算是第三版吧!现在是一点钟了,我实在是没办法完成merge等价节点的程序了,这种活看起来简单,写起来很繁琐的。


十月十日 夏天最后的灿烂

今天我从别人那里偷来了脚本程序,改了改就准备交上去了,这是我的耻辱,可是我实在是没有办法,我对脚本语言深恶痛绝了,看见就恶心,叫我怎么去写?就如同我讨厌java,以至于离开几条街还讨厌听人说起他的名字。窃书不算偷,程序就更不算偷了,大不了我将来多写一些c++来弥补我的罪过就是了。但是今天的收获却是解决了长久困惑我的一个小问题,这个说出来会被人笑话的,就是在head file里声名的变量必须用extern关键字才能被多个cpp文件引用。或者就干脆把他声名为static。见笑了。


十月十一日   今天又享受了一下我最喜欢的炙烈的阳光

偶然看到文学城上的无名氏的文章把加拿大,尤其是把蒙特利尔说的一钱不值,跟美国比怎么怎么不行。心里真是很愤懑,既然你认为这里不好那就不要在这里呆,又不是加拿大魁北克政府请你来得,美国既然那么好,你就直接去美国好了。加拿大就是加拿大,并不是美国的第51个州,加拿大不叫州,和中国一样叫做省。真是讨厌的一帮家伙。估计作者说不定就是什么什么IT企业LAYOFF以后来到CONCORDIA领BURSARY的主呢,真是中国那一套端起碗来吃肉,放下筷子骂娘,一天到晚牢骚不断什么大事也做不成,在国营企业混久了的那一类人。


十月十四日   灿烂的阳光让我舍不得平平淡淡的度过

忘了今天考试,哎想想看还有比A++更重要的事要做,那么就原谅自己吧?把昨天拍的照片放在了“秋天的沉思”里。至于煞风景的我不看也罢。娃娃的照片--秋天的回忆。


十月十五日 凄风冷雨

做作业啊,做作业,做不完啊。comp229-3。 335-1, 335-2, 335-3, 335-4, 335-5, 335-6, 335-7, 335-8


十月十六日 下午日出早上雨

应大家的要求上传SSH的客户端,欲下从速,只挂一个星期,有5M太大了。


十月二十一日     淫雨霏霏

I think I messed up with "virtual fork" with real "fork", Haskell Assignment 2


十月二十四日   有雨

编229的程序简直让我发疯了,花了三四天还没有完成。到两点半,调试过程出了一些莫名奇妙的错误,我简直疯了。后来想也许是服务器要睡觉了吧?果然连不上了,那么我也睡觉吧。也许DFA就是让我们找到能实现函数对应的一种方法,比如,我们人类能够研究的所有问题都是函数类型的,即一个确定的定义域的只有一个确定的函数之对应。逻辑也好,functional programming也好都是遵循这个原则。

总算完成了,我觉得还是挺完美的嘛!一高兴就把所有的作业都集中起来了


十月二十六日   淅沥沥的小雨下个不停

奋战了一夜半日完成了352的程序作业,至于考试我就管不了了。题目看起来不难,无非就是应用二叉搜索树来完成数据的记录与添加删除,存盘。我的超级字典里就都写过,只不过我那时候傻傻地为了存盘后再读盘能够树的结构不变,专门用记录每个节点的顺序来实现,现在知道只要两行代码用preorder就可以了。也许真正困难的地方是看懂那些复杂的模板类,比如标准的BST魔板有四个类型参数要传进来,他的内部的节点也是一个小的模板类,其中的类型参数是我们自己定义的一个类。我感到比较满意的地方是我写了一个简单的菜单类,他接受用户传进来的一个字串数组作菜单标题,用户的输入就是返回值,用户也可以把每一个选择所对应的函数当作函数指针传进来以便实现自动反映,不过因为写回调函数麻烦,类的成员函数不能当作指针参数来传递我就没有用这个思想去做了。我眼睛睁不开了。


十月二十七日   雨下的不停

想起昨天看得《终结者3》实在是糟糕。因为果然不出我的所料,离开了James Cameron,整部片子毫无创意,既不能和以前的情节相联系,也不能超越旧的框架,实在是一个蹩脚的三流动作片。施瓦性格也是乱来一气,演得更像一个活人而不是机器人。


十月三十日   晴天?忘了?

昨天写了一个简化版的352的作业。今天晚上考自动机原理,题目比较容易,就又对我的NFA---REG EXP的转化类作了进一步修正,改掉了若干错误,增加了用户自定义的删除顺序,并用一个产生所有排列顺序的辅助类来对所有的删除顺序产生结果,出乎我的意料,结果竟然都一样!!!肯定是由bug!


十月三十一日 好天气,阳光明媚

做数据结构作业忍不住用程序来试验算法,就是把BST用逐行的方式输出,见笑了,我现在离开编译器就玩完了,考试怎么办?问题是这样一个简单的实验我居然用了5个大类,每个大类又有若干基类(一般为抽象类)和子类,或者兄弟类(如比较用到的几个类),其中几个大类又都是模板类,又把别的类作为内部对象或者模板参数。还不包括I/O用到的各种类。这是多么的奢侈啊。


十一月一日   阳光成了老天爷难得一见的笑脸

早上和黄教授慢跑,跑到了Angrignon公园,又一次欣赏了入画入诗的美丽风景A concise solution according to notes. 不敢藏拙,把352的作业贴出来供大家指正。我希望能对大家有启发,也希望别人能指出我的错误。


十一月三日   又是阴天

335的作业好像是猜谜语,写了涂,涂了写,写了10页还有两道题不会,只好放弃。

4.b)ii)  {a^kb^n|  2k<n<3k} 这一题我想了很久也写不出语法,谁做出来了?

6.c)  S=>aSb|aaSb|e     我知道ambiguous的例子,但是unambiguous grammar我写不出。

决定只保留最近5个月的日记,老的日记放在OldDays。这样打开首页不至于太慢。

我在想也许。。。


十一月四日   小雪

下了早课回来,天上飘起了雪花,路上行人的脸色也仿佛突然从往日的萧瑟变味了冷峻。冬天来了,车顶上的白色积雪小声提醒我,虽然水汲汲的人行道还在顽强地为秋天争辩,愈走愈低的温度却无情地宣判从此以后冬天将正式接管我们的生活了,前几天提前命名的“秋天的回忆”名副其实地成了回忆,从此以后,那短暂辉煌的秋天的金黄色会让位给冬天的雪白。冬天来了。昨天,张洪岸的解答很巧妙,我想了很久最后一步就是想不出来:

4.b)ii)  S=>aSbb|aSbbb|aabbbbb 这一步的差距真是巨大啊。


十一月五日    雪过天还是阴

完成了229德programming作业,这个和上一个作业的反差太大了,因为动态链接,静态链接不需要你去编什么代码,工作量很小,只是需要理解


十一月八日    灿烂的阳光并不让人高兴

we are not allowed to delete "head" because the prototype of function is passing "head" as pointer instead of "reference to pointer". 

229的作业要求太含糊了,我问了MIA只好改:动态库和静态库与main程序要一起链接。


十一月十一日 小雨

229的理论部分有标准答案,不过我还是用自己的话重写了一遍。把程序作了一点点的修正,并解释了怎样证明dynamic library不是必要的。(实际上所谓的“必要性“很是含糊,从什么意义上来说明必要呢?我的理解就是动态链接是动态的就是,需要才链接,没有用到,即便程序有错也发现不了,当然如果压根就没有程序也是可以的。可是这是直觉,真正的环境下还是不对的。简单说,就是链接时候,linker会做检查,骗过去以后,就把动态库拿走,偷梁换柱重命名一个假的来试验,可是,o.s.会在run程序的时候检查动态库是否在,并且很过分地检查文件类型,所以,用空文件骗不过去,可以找一个系统的动态库重命名。当然,你的动态库里不要有任何主程序一run就要用到的变量了。)

Can you show me something like this?


十一月十二日 阴天

How can I find threshold?    352的第四个作业要比我想象的麻烦,主要是题目的用意不是很清楚。我先把第一个版本放在这里。 好久没有写puzzle了,老张小李贡献的题目。

把《英雄无敌》的一个战役改编成小说,我吃饱了,不过,我很怀疑这个系列我会不会继续下去,毕竟没有多少人感兴趣这种幻想小说,更何况背景知识贫乏的话。


十一月十五日 晴天

348的作业做不出来,只好写写数据结构的排序程序派遣郁闷。我本来的想法是应用Radix Sorting的原理来对数据库的多个index来综合排序,结果写完了发现完全不对。


十一月十六日    云纵四海,心驰五洲

Can you justify the grammar for me?


十一月十七日    晴朗

最后的希望4。


十一月十九日 小雨绵绵

昨晚去参加微软.net的学生展示会,吃了一个免费的pizza,但是回来的时候,地铁还在罢工只好打的,连小费花了18块钱。.net的思想我觉得是可行的,的确,我们一定要在每一个平台上都实现一个虚拟机吗?sun公司这样做不是更大的垄断吗?看来所谓业界的反对垄断只是反对微软而已。因为,统一从来就是列强的末日,正如台湾岛上的一小撮一样,不统一还可以呼风唤雨,统一了就只好去卖扁食度日了,这也正是他妈给他起名叫阿扁的一个原因。与其统一平台不如统一语言,这个思想不先进吗?微软试图用xml,或者web service等方式让不同的程序可以交流,这有错吗?如果有错,那就错在它是微软,一个所有软件公司的威胁,正如当年秦国试图统一战国列强时候,秦国的一切错误一样。

自己总结了一下消除ambiguous grammar的简单思路,完全是基于作业的答案,仅供参考。


十一月二十一日   雨

下午,348的老师讲了一个简单的程序,我就把源码要来写了写。


十一月二十二日 晴朗

229的理论作业颇有些难度,经常我发现自己在不知所云地写着答案。这里是makefile。在echo后面千万记得加上引号,不然,问题很奇怪的。写了一个测试程序,如果各位明白其中的问题,我想我们可以交流交流。不过我很怀疑读者中有这样的人,但愿我是错的。


十一月二十三日 晴

229的程序部分是最简单的了,可是,不做你永远不知道怎样做makefile。我怀疑有多少中国的程序员自己写这种东西,很简单,但是,你不一定知道啊。


十一月二十四日 晴

352的程序部分,我极其得不满意。我甚至怀疑老师是否自己写过,因为,程序很简单,所以,他未必会完成它。


十一月二十五日 晴

Is there any binding between function name and library?


十一月二十六日   晴

352的程序用到了9个头文件,两个cpp文件。共有3个抽象类,4个子类,3个辅助类,不算太多。真正的问题很严重!虽然不能从根本上动摇我的信念,可是,从实际的角度出发,几乎是搜索无法解决的,至少从我的角度看来。

I am running, so I am.  335的作业太难了,证明题我很多都不会。

Can we prove like following?   Dr. Ford's explanation is clear and convincing! But can we prove like this?


十一月二十八日   阴天

李维提供的很有意思的程序,对于c++程序员来说,如果不知道这些运行内幕,就不会意识到随手一行代码有多么昂贵的运行代价!我并非一个完全对Java,VB又固执的个人成见的人,只是始终觉得那些东西可能不是真正的程序员应该做的事。正好像现在很多小孩子玩flash玩得很转,我们能认为这是一种真正意义上的编程吗?

北美需要程序员吗?


十一月二十九日   现在是小雪

The no.3 question is tricky! And I have no idea how to find out the cycle.


十一月三十日     小雪还继续在下

关于Dijkstra的一点解释,这是我夏天学离散的时候照着伪代码写的,现在学了数据结构后应该抽空改写一下,可惜我的进度总是落后,348的midterm还没有做完呢!


十二月一日    总算晴了

心情也好多了,因为昨晚总算做完了所有的作业,可以开始复习考试了。352的作业也很烦, 程序部分我又写了一个简单的版本


十二月二日   晴冷

今天感觉很冷,因为差不多零下20度,去china town理发,顺便买了一些羊肉和小朱涮羊肉。花了大约一天时间写数据结构的各种算法,算是一种练习了,有一道题目是老师提出的:给两个有序的List,输出另一个List要求只包括两个list里不同的的元素。我花了好几个小时才写出一个效率比较高的方法:类似mergesort里的merge过程,但是比merge要复杂的多,因为重复的元素会造成很多问题。


十二月四日   冷晴

去跑步的时候冷得受不了了,看来以后要戴手套,帽子跑步了。按照DFA的思路写一个最简单的scanner,他的特点是结构清晰简洁,我把一系列的transition function放到一个数组里,函数的返回值是他指向的state的index,所以,可以再作为调用下一个transition function的参数,scanner主函数负责检查要检查的字串是否结束,函数返回值是否表示被拒绝(-1)。当检查完字串后,检查是否落在final states的集合里。多么简洁,清晰!我的数据结构练习又加了几个小函数,为保持版本连续性,把他们放在2里


十二月五日     零下十几度

网络断了,要星期一才能重新安装。


十二月六日     大雪纷飞

写了一个Depend的简单的类,这是一个很普遍的问题,比如,计算机的课程都有顺序,一门课可能有很多其他的课程作为pre-requisite,如果要你列出每一门课程的所有的pre-requisite。再比如,写makefile的时候,我们设定了某一个文件是依赖于某些其他文件,那么怎样建立这样一个树。又比如汇编器里对forward reference的处理是建立一个类似的结构,即某个变量包含若干个forward reference以便在遇到声明的时候再回过头来完成instruction。归根结底都是一个图的edge list的表示法。


十二月七日   雪在飞

改进了Depend,现在可以用topological sort来显示工作流程,并且能够显示所有的pre-requisite好似编译器里没有non-terminal的意思。我困死了,链表的指针操作确实是一件痛苦的事情。


十二月九日 雪停了

348的paper贴上来,做个纪念,因为,我认为思想也不过是push-down-automaton里的一些stack-symbol,状态结束也许就要被新的思想替换,每个人在当事的时候都有自己很信服的理由,过后来看却也许是些不知所云的垃圾。但是,这些stack-symbol确确实实是思想的轨迹,没有他们一个人就不成为一个人了。正如同操作系统里用process-descriptor来描述一个进程一样,我觉得人也只能一系列的状态量来描述,过了某个时期,状态改变了,就算外表状态量的改变微乎其微,思想的改变足够大的时候,我们也可以说这个人已经是另一个人了。所以,记录下人的思想的轨迹也许是最好的,因为这些定义了这个人。

至于那篇critical review我想我的情绪在当时是偏激了一些吧?不过,我看网上说,在英国所谓的lecturor在一些新近的大学里不过是助教的同义词,这也许能解释我的愤怒与不满的原因吧?也许妒嫉也是一个成分,我需要决定是否发给作者,去刺激她一下,满足我的有点阴暗的心理。


十二月十三日    阳光灿烂,所以我们去跑步

冷的不得了。穷一日一夜之力写了一个memory management的模拟程序,这是数据结构的一个章节。不过代码我不满意,因为,既无扩展性,也不完美,纯粹是一种耗时耗力的冬冬。


十二月十五日   雪下了一天一夜,有一尺厚了

Dr. Ford实在是一个数学家And my stupid assumption!


十二月十六日   雪好像停了,路边的雪被堆得有半人高

今天考自动机,题目出得很简单,一高兴就给metro的音乐家一个dollar的硬币。不过,那个弹西班牙古典吉他的乐手弹得确实很不错,如果“胡一刀”在的话准会喜欢,因为,这正是他喜欢的“slow hand”的曲目。这个家伙现在也不知道在干什么?


十二月十八日 天是那么的蓝,阳光是那么的灿烂

我的AVL Tree成了又一个烂尾工程,我确实没有意识到这是一个繁琐的工作,难怪Shaffer没有提供代码,无论如何要完成,不过不是现在,我想大约是在冬季。。。。简单地玩玩数据结构。晚上要考试了,我却坐在窗前往着蓝天阳光听着王菲钢琴版的《堕落》堕落着,而且愈堕落愈快乐,这是歌词立唱的,不是我说的。不过我想我也差不多了。硬盘不够存王菲的歌了,只好拼命地删垃圾文件,看到了夏天里我拍的风景,真是令人向往啊!我喜欢热带强烈的阳光,我喜欢温带和煦的清风,我喜欢冻土带静谧的森林。。。但是我最喜欢的还是Montreal永远是阳光灿烂的夏天。


十二月二十六日   下了一夜的雪

这一阵子俗务缠身,我的AVL Tree始终被打断,我也一步步地改动,因为,我发现我的想法开始的时候是很不完善的。终于在今天临辰完工了!终于可以舒一口气了。首先,模板增加了代码的复杂性,因为正如Dr. Peter所说的“编译器并不理解模板”。其次,我出于效率的考虑希望维护平衡的代码尽量的有效率,否则平衡所带来的worst case logn的好处就不大了。值得自豪的是,我在inserthelp里的加了我的方法使得维护平衡与添加同时从树的叶子一步步向上,省掉了另外的遍历过程。但是,我们必须考虑转折点(就是自下而上第一个factor绝对值超过1的节点。)是根的特殊情况,又因为树是一个单向链表,我要做转动的时候必须找到转折点的父亲才行,如果转折点不是根的话。这里面的情况有些混乱,我到最后才理解,改了好几次,而且我发现所谓的double rotating如果转动的节点不一样的话,单用single rotating也可以个保持树的平衡。这个就留给第二版去解决吧,如果有的话。另一个问题是是否一定要用子树的绝对高度作私有数据?是否应该按照伪代码一样用balancing factor?这样也许也可以省略掉指示道路的另一个私有数据---inLeft。这个也留给下一版去解决吧?最后一个恼人的问题是子类继承父亲类的一个protected指针,是否这是两个指针?因为我被这个问题困扰了许久,等作个试验就知道了。我想没有人明白我自己。我现在就想接着睡觉,实在太困了。

哎,这个问题真是丢人,早在用delphi的时候就知道,当子类与父类共用一个动态数据的时候,最好是由所有者,或者说父类来负责消除内存,这样最安全,或者养成习惯,delete之后把指针赋值为空指针NULL。


十二月二十七日   阳光灿烂得让人心醉

长征考试的一个题目我试图把一个数组分为一个max-heap和一个min-heap来寻找中位数,因为题目的要求是算法的复杂度为O(n)。结果,我胡思乱想的去重新默写了一遍heap的创建,因为要先能随意地创建max-min-heap。我试图用改变模板参数中的比较类来实现随意创建min或者max,这个问题我以前问过老师,他懒得理我,我也觉得很无聊,毕竟所有排序算法程序中实现用户自定义“升降”序的办法不外乎就是传入函数指针,如同回调函数一样,自己去看看就是了,有什么好问的呢?所以,我现在也觉得我写的这些都是些废话。我几天前考问春明除了用传入函数指针来实现用户自定义的比较方法外还有什么办法,现在想这个问题本身除了炫耀式的“回字有几种写法”外好像没有什么其它的意思。毕竟大多数学EE的人一辈子都不一定要去写回调函数。其实,我也是看到了课本中Mr. Shaffer利用模板参数传入一个static class来让用户自定义排序中的比较方法,才领悟到其中的妙处。问题是,用这个方法,我只能在声明的时候来决定“升降序”,也许用一个bool的旗标更好吧?

就简单地写了一个第二版凑数吧。

春明同学的时间观念与我们大多数人不一样,他每次说到我这里需要多少时间实际上都是乘坐亚光速飞船上的时间,我不是说他来去如风,而是说根据相对论,他在亚光速飞船上时间比我们慢,他的十分钟相当于我们大多数人的半小时。


十二月二十九日   天好像是晴的

我为什么要这样折磨自己的头脑?我实在是想不出,因为这个Turing关于计算机又无法解决问题的证明实在是一种折磨。我始终觉得这种问题是一个逻辑问题,或者说反函数的例子,也就是说一个函数只有当它使one-to-one and on-to的时候才可能有反函数。那么对于逻辑的推论,也就是imply来说,是没有converse的,比如,如果输入是hello,world,那么输出就是yes。我们能够说“如果输出式yes,那么输入就是hello,world”呢?显然不行。可是,问题是证明里面我们又强迫输入等于输出----turing program的输入就是它本身。这里面的关系实在是有些理不清楚,不是怀疑证明的正确性,而是怀疑这个问题本身是否是一个问题。比如这句话“这个问题本身是否是一个问题”作为这句话里面的“问题”,会怎样呢?我现在头脑像一团浆糊了,睡觉吧。

我想到了什么,等一等再说。能这样解释吗? 我又用中文解释了一遍。

工欲善其事,必先利其器。花了两个版本来写工具,今天才开始做应用,也就是长征的一个题目:怎样用一个复杂度为O(n)的算法找出中位数。我本来还想写一些累加比较,移动次数的统计方法,以便用实例来证明我的算法是O(n)。不过,debug比预期的晚了些,我肚子太饿了。


十二月三十日   天下着小雨

早上一大早去Burger King进行“社会实践”体会到加拿大劳动人民确实是生活在水深火热之中。搬了一百多箱才挣了35块,夏天的机票钱是不容易了,不过对我这敲键盘的手是一种很好的锻炼,至少省掉了原定去健身房的钱了。回来头脑有些麻木,这时候听到王菲的歌曲特别的感动。为了进一步证明我的算法是线性的,简单地照作业的方法统计数据移动和比较的次数,再和数组长度比较发现,当数组长度加倍增加,这个比值近似为常数。当然,index的比较是忽略不计的。

简单地年终总结

 

                               back.gif (341 bytes)     up.gif (335 bytes)     next.gif (337 bytes)