Archive for 感悟

体验香港的银行服务

香港是世界著名的金融中心,其银行业的发达自不必说。中环一带遍布大大小小的银行总部,据说总共有不少于200家。世界上主要的金融机构均在香港设有分支机构。根据香港金融管理局的宣传材料,香港有两家银行间结算中心,每天处理的票据数量达数十万张。

我在香港先后开立了两家银行的帐户。第一家是大名鼎鼎的汇丰银行,在香港大学校内就有分行。开通后觉得服务门槛很高,服务费用偏高,不适合我;加上网点人总是很多,于是不久就销户了。第二家是恒生银行,离港大最近的网点步行5分钟可达,却有诸多优惠措施:大专院校学生免月费,各种业务的手续费也比汇丰便宜些,定期存款利率比汇丰还略高。汇丰和恒生银行同属一个集团,其ATM设备通用,在这两家银行间跨行取款免费。汇丰和恒生银行的网点加在一起遍布全港,真是太方便了。

不得不说,香港的银行,服务真是比内地的强太多了,不知内地要多久才能赶上。香港银行营业网点面积小,排队长,但是有多少个窗口开多少个,甚至连装修都是半间房半间房地进行的,丝毫没有影响柜台的工作效率;反观国内银行,设计8个窗口,最多能开4个就不错了。业务水平上,香港银行的员工对客户的问题往往能够对答如流。我就是利用这个机会学到了很多知识。

汇丰银行和恒生银行的网上银行均采用一种“保安编码器”来加强安全保障。“保安编码器”是一个小的电子设备,于客户开通网上银行后发给用户(汇丰自动以邮寄方式发给客户,恒生需客户自己申请),每次登录或使用网上银行的某些关键业务时,需要按“保安编码器”上的按键,得到6位数的密码,服务方可继续。密码随时间改变,每个用户的编码器同一时刻出现的密码也不同,且变化没有规律。据介绍,这个编码器的技术是基于PKI (public-key infrastructure)的,理论上说只要保证编码器不被他人获取,其他人不可能操作网上银行。用户一旦发现编码器丢失,可以立即挂失以终止其使用。但这种方法仍无法防范“中间人”攻击,不过这种情况下用户将必有察觉。想想国内的网上银行,“证书”、“盾”之类的弄了一大堆,却往往限于用户自己的操作水平而使这些安全措施形同虚设,并不能真正加强系统安全——参见“木桶原理”。另外,不论汇丰还是恒生银行,其网银系统均可在Firefox下使用,而国内的银行普遍使用ActiveX作密码输入框,能做到与Firefox兼容的更是凤毛麟角。据说国内某“专业版”网上银行甚至不惜强行打开防火墙,关闭远程访问,在输入密码时用系统钩子劫持用户键盘,反客为主啊。

在香港,个人支票被普遍使用。银行户口通常有两种,“储蓄户口”能生利息,不能开支票,“往来户口”不能生利息,但可以开支票。汇丰银行在开“往来户口”时,会发给一本10张的临时支票簿。开户后,即可申请正式支票簿。临时支票簿除了不能用来认购股票外,其他的和正式的基本无区别。支票可以用来作完成支付交易,避免大量现金的流动。支票上写明了收款人,可以放在信封里邮寄;因为在支票兑现前钱始终在往来帐户中,所以也无需担心邮寄丢失的。由于支票在兑现时会核对签名,具有一定的安全性。不过,支票作为一种支付工具,是以信任关系为纽带的。这一点,也决定了在国内个人支票的推行有很大障碍。

我注意到一个比较奇特的现象,就是香港的银行似乎从不用验钞机。在储户存取款时,都没有职员用机器验钞的步骤,完全是手工点钞。难道是香港的银行都觉得这里民风淳朴,没有假钞?

Comments (1)

澳门游感想

来了香港这么长时间,一次澳门都没去过,总觉得有点说不过去。很多人对澳门的入境政策的理解存在误区。简单来说,能够进入香港的人,不论持何种证件入境,均可以从香港前往澳门,只不过允许居留的时间和条件不一样。对于持通行证进入香港的中国公民,即使通行证上没有公安机关签发的“澳门签注”,也同样可以从香港来到澳门,并获准停留30天。(“澳门签注”的作用是获准从大陆前往澳门,从香港前往澳门无需此签注。)但是从澳门返回香港时,允许在香港停留的期限仍是此行第一次被批准进入香港时允许停留的期限。对大陆游客而言,如果首次进入香港后,7日内前往澳门并返回香港,只需具备一次“香港签注”;如果返回香港的日期超过首次进入后第7日,则需要动用第二次“香港签注”(这时如果通行证上没有有效签注,就会被香港拒绝入境)。澳门游后,通行证上不会留下出入澳门的任何印记。从这里可以看出,澳门对待游客的入境政策是相当宽松的。以上情况是我了解到的目前的政策,如果有疑问,可以给香港、澳门入境事务处分别打电话咨询。

可以从香港上环的信德中心港澳码头出发,乘“TurboJet”气垫船抵达澳门。往返船票大约300多港币,且班次可以提前,不严格对号。在澳门码头,可以获取旅游资讯,免费地图,并设有“大西洋银行”的澳门币兑换服务。澳门币与港币实行挂钩的汇率,规定1港币严格等于1.03澳门币。不过因为手续费的原因,实际兑换时1港币大约只能换1.027澳门币。在澳门消费,港币、澳门币可以通行,且通常按照1:1计算。兑换澳门币的好处是可以搜集一些澳门的硬币。澳门的纸币总体不如港币纸币干净、整洁。

澳门的市区非常小,且平,不像港岛有那么多的丘陵。拿着地图走,很容易找到各处景点。还有一种办法,就是在码头乘坐各酒店、娱乐场(即赌场)的免费穿梭巴士,直接前往市区。澳门的市政设施也不像香港那么先进,但也够用了。在澳门的主要街道上,可以看到一座座酒店、娱乐场林立,还有不少正在兴建,一派生气勃勃的景象。据统计,过去数年来澳门经济年平均增幅达到15%。赌博业是澳门的经济支柱,澳门的一切其他产业似乎都是为这个中心产业服务的。赌场旁边就是当铺。截至2006年底,澳门已超越美国拉斯维加斯,成为世界第一赌城,在澳门的赌场,平均每张赌台的收入是拉斯维加斯的十倍

我走进了一家著名的赌场——葡京娱乐场。这座大楼里面错综复杂,高层是酒店客房,低层就是娱乐场。楼内是交错相通的,可以方便地穿梭进入其他非葡京的娱乐场,和香港中环的建筑群有一定的相似性。进入娱乐城需要存包,经过金属探测,里面也不允许拍照,很是遗憾。服务台设有筹码现金兑换服务,信用卡兑换服务(实际相当于交一笔手续费套现),也有场际筹码互换服务,很是nb。我没有兑换筹码,也不妨碍我进入参观。在澳门赌场通行的货币是港币。

进入赌场,发现赌台主要都是一种叫做“百家乐”的游戏。看了一会儿,发现下注最小下注额大都是100HKD,也有200HKD,300HKD的。500HKD以上的就属贵宾区了,摆块牌子写着谢绝旁观,我就没去。赌徒还是以粤使用语者居多,大陆客的比例没有想象的那么多。有个人桌上散开摆放着一摞信用卡签账单,其中还有银联的,狠狠地吸着烟,完全不理会门口“禁止吸烟”的牌子。娱乐场内采用封闭式设计,在灯光下,不见天日,容易让人失去时间观念(据wikipedia)。娱乐场内免费供应饮品及点心,只要你坐下来参与赌博。

看了一会儿,逐渐发现了门道。“百家乐”这个游戏是借助纸牌进行的“赌大小”。不像“21点”那样有明确的“闲”、“庄”角色之分,赌客押在“闲”就是“闲家”,押在“庄”就是“庄家”。胜了就筹码可以加倍(近似),败了所押筹码就输光。加倍的概率不到50%但比较接近。庄胜的概率略大于闲胜,所以规则规定押庄不能获得100%,只能获得95%筹码奖励。还有一些其他规则。可能这是公平性及易掌握性都比较好的一种游戏。我观看了一段时间,熟悉规则后,发现此游戏的净收益的期望总是负值。赌场的收入来源就在于此。

又看了“骰宝”(利用三个骰子看点数、赌大小),“轮盘”(Floor(Rand()*n)+1)等游戏,它们的获胜概率相对容易计算,净收益期望也都是负的,更低。可见,赌场根本不必借助作弊手段,只需朴素地以概率论为指导,就可以稳赚不赔。还有一种角子机,是人和机器赌,下注额相对小很多。不过谁也不知道机器的程序是什么样,程序里是否作弊,是否公平,还是不玩为妙。

赌博确实是一种不够理智的行为。可是为什么那么多人愿意去赌呢?这究竟是一种什么心理?从经济学上恐怕难以解释,只能借助心理学或人文科学来理解。从澳门回来后和其他同学探讨到这个问题,有位同学说:保险产品本身不也是净收益期望为负值的吗?出各项险的概率乘以赔付金额,总额肯定会小于保费金额,为什么人们会买保险呢?这是不是也算是一种不理智的行为?我想,买保险是从规避风险的角度来考虑的,是为了将损失数额限定在一个upper bound之内,尽管收益期望是负的,但仍是出于一种理性的考虑。

Comments (1)

感受HKU的考试

本学期,我在 HKU 共选有 5 门课,全部需要进行期末考试。到今天为止,已经考过 4 门。这 5 门考试,每门都是 3 小时(而在清华,要考 2 个小时以上就算是很长的了)。考试的形式也和清华一样,有开卷(允许带任何资料进入考场)、半开卷(允许只带一张自己的 A4 纸进入考场,内容随意)、闭卷。考试大多允许使用计算器,不过很多情况下用处很有限。

考试很多时候是在一个大型的体育场馆进行,我的考试中有 3 次是这样安排的。所有的试题及答题册在考生进入考场前就已放在桌子上,学生对号入座后,即可开始答题。同一考场内可以同时进行多项考试,因为收卷时间相同,考试形式也可能作了考虑(即同一考场的考试要么都是开卷,要么都是半开卷,要么都是闭卷),故不会互相影响。答题过后,如果愿意提前交卷,只需将答题册放在桌面,收好东西离场即可。试卷可以带走。

答题册的设计很有趣,翻开就是横格纸,每页纸正面用于答题,背面用于做草稿。每页只能答一道题,但一道题可以使用多页。试题册共有 14 页或 28 页,左上角有穿孔,可于增加额外答题纸时穿线使用。答题册页面上不可写姓名,只能在答题册封面写学号。封面上还需要写明答题顺序及所用计算器型号等信息。整体设计显得无懈可击。

HKU 几乎所有的课程,都不是期末考试一锤定音的(清华也是这样)。我所参与的几门课程期末考试在课程总评中所占比例在 40%~60%。另外,最终的分数都会进行正态化处理,这从一定程度上保证了各届考生及同一课程不同 subclass 考生之间的公平性。不过,将如何得到的原始分数正态化,此过程看来并没有明确规定,可见实际操作中还是容许一定的模糊性的。一般而言,总评“A”的比例约在 15% 左右,因此只要保证最终自己的成绩在“平均值加一倍标准差”之上,就至少能够保证“A-”了。

Comments

会见“贵系”学长

会见“贵系”学长是我在港大期间经常做的事情。和他们交流,往往自己能够受到很多启发。这里要说明一下,“贵系”一词,通常是对说话人对方的人所属院系的敬称;但如果说话双方都是清华大学计算机系的人,那么这时“贵系”指代的就是自己的系。不要问我这是为什么,原因很复杂,反正大家都这么用,就习以为常了。

比如前天,我就见到了“贵系”著名的“李老师”,清华二字班(2002)一位学长。李老师目前是香港科技大学在读博士生,而两年前,他曾到香港科技大学交换。“李老师”是对他的尊称,表明走的是“学术路线”。李老师搞竞赛出身,在TopCoder上表现一贯十分勇猛,前不久参加Google CodeJam,还应邀到美国参加了决赛。

他此程来到港岛的港大来看我们(其实只看到我和宋姐姐),顺道办理“中联办”登记手续。我们去到港大转了一小圈,坐在图书馆旁的星巴克的遮阳伞下交谈。我们突发奇想,Song姐姐在不在呢?打个电话发现她正在图书馆,而且没什么事,于是把她叫下来一起闲聊。

Song姐姐比我和李老师都要年长。她在清华读的计算机本科、硕士,工作了两年,现在来到港大,攻读新闻专业MPhil。Song姐姐经历了听他们两个谈话,谈计算机系的各位牛们、总们的传奇故事,使我印象中那些先进事迹的得到了印证,不由得钦佩不已。有的去了Microsoft、Google,还有Sohu/Sogou做开发,有的整天奔行于地球各地,有的继续在大学当faculty,都开始招学生了。虽然那些学习成绩最好的,都在事业上比较成功。而学习成绩不是特别出众的,也有不少成功的案例,这使我很受鼓舞。和他们常常聊天,自己对未来的把握也会有机会变得更加明确。最起码,可以了解到“doing research”是什么含义,其内涵与外延是什么。如何挖paper,读paper,憋paper,发paper。哪些会议是牛会议,哪些刊物是牛刊物,哪些学校的哪个方向是最牛。甚至还有,美国的哪些地方气候不太适宜人类居住,等等。从他们的经验和教训中可以总结出很多规律性的东西来。听了他们说的这么好,说,干脆我也来写个paper吧,就发《清华学报》吧。李老师顿时眼前一亮,Song姐姐立马说,“好!”可是我却不以为意,想不出什么好写。他们说,这就是本科生和研究生的差别吧。

Partita也是一个对我有很大帮助的人。他是三年前来港大交换的计算机系学生。我在这边的选课、学习,甚至玄学上,他都给予了我很大的引导。他平时言谈似乎不多,爱好艺术,由于和我思维方法很相似,我们极具共同语言。一些在他的思维体系中成立的定理都可以不加证明地平移到我的体系中,反之亦然,这省去了很多口舌。他也经常在我遇到困难的时候鼓励我。我有一次周五晚上和他抱怨作业题没想法,他说周一下午让我找他谈谈,结果周日下午我基本上自己搞定了。于是我去到他的办公室,就改变了谈话的主题。我见识了一次什么是真正的“数据挖掘”。Google Scholar这个工具,各种关键词的组合,各种operator的使用,被他用得出神入化。“没有Google Scholar,我真不知道这个研究生怎么念。”他坦言。据说,他曾经和布总合作过一个毕业设计,之后多时才发现他们的东西已经有人做过了。还有人写篇文章提到个好不容易想出的算法,却被问及为什么用别人的“专利算法”……在信息闭塞的时代,这种现象恐怕比比皆是。但是在当今这个资讯全面开放的时代,就没有理由容得这样的事情发生了。

Comments (4)

标准

Java 课程的作业由几个助教来判。谁知几次作业判下来,竟引起同学中的强烈反弹。客观地讲,题目出得确实有问题:题目遵循的标准不明确,于是同学各自按照自己的理解来作答,而助教按照自己的理解来判定——只是助教的理解和绝大多数同学的理解相去甚远。当然,如果仅是标准的问题还好说,毕竟有章可循,可有些时候助教确实理亏,比如采用的评判标准前后矛盾,试图解释又不能自圆其说,被指问题又不愿承认错误,以致落得成为同学谈笑资源的境地。

有位和我不错的同学,作业判出来,得分不高。助教评价“与他人程序十分相似,扣一分,下次注意”,很郁闷。当时的作业题目很简单,题目大概就是输几行东西,存成一个文件之类,本来就编不出多少“花样”来。但我想表达的是,“十分相似”也是错误吗?下一次让同学如何“注意”、“改正”?最起码,说“十分相似”也要有个标准吧。比如据我所知,编译原理实验的著名kb助教就提出了他判定“严重雷同”的标准,大意如下:

  • 两份代码完全相同的
  • 去掉所有注释后,两份代码完全相同的
  • 在不影响语义的情况下,替换变量名的
  • 在不影响语义的情况下,成对增删大括号的
  • 在不影响语义的情况下,更改函数出现次序的
  • 以上情况组合发生的

标准确定了,写个程序实现判断是很容易的 O(n2) 的复杂度 :) ,当然可能会有漏网的,但是,一旦被判“严重雷同”,大家无不心服口服。

Comments (2)

International Conference on String Theory 2006

今天参加了“2006弦理论国际会议”的开幕式,感谢(thanks to) ring 同学提供的入场券。主要内容其实是个科普讲座,除去程式性的开幕致词外,共有3位教授作演讲。前两位的名字记不住了,科普的内容都是 String Theory,可惜基本上听不懂。弦理论这个东西,深奥又抽象:一会儿说宇宙是26维的,一会儿又说十几维就够了,我的脑子实在是不够用。只记得第二个(?)教授说:(大意)这些东西现在看起来很荒谬是不是?100年后当这些东西在中学课堂中讲述的时候,人们理解起来就很自然了。也许就是如此吧。

最后一位出场的是大名鼎鼎的霍金(Stephen Hawking),科普的内容是宇宙的起源。霍金本人不能讲话。据他的《时间简史》说,他需要通过由“太阳谷说话加强公司”捐赠的语音合成器来完成与他人的交流。我重点观察了他的语音合成设备。听声音很像是采用了 Microsoft TTS 引擎(《金山词霸》也用了这个引擎),声音简直是如出一辙。使用这种引擎,可以将预置的英文文本自动朗读出来,并能通过语调的升降简单地表达说话时的情绪。合成器的生产厂商可能专门将霍金先前的语音元素加入,对霍金先前讲话的特点进行了一些个性化的设置(这就无从查考了)。实际演讲中,霍金的讲话是一句一句地播放出来的。整个句子的讲述过程中霍金没有对设备进行明显而复杂的操作,可见演讲的内容应该是事先准备好的,而不是现场即兴的。句子中没有明显的停顿,但句子之间通常有很长的间歇。在此间歇可以听到微弱的“滴滴”声,猜测应是霍金触动按钮时设备发出的细小提示音。霍金所做的,或许只是在前一个句子停下来后,按一两下设备上的“确认”按钮,于是演讲即按照预定的程序向下播放一两句。

于是我大胆揣测,霍金在一段时期内,在世界各地的演讲可能都基本相同,甚至完全相同。他所“讲述”的内容,也可能已不完全是他本人的真实想法。想到这一点,突然觉得有点悲哀。霍金如此千篇一律的演讲,和录音机还剩下多少区别?他还有兴趣或能力作即兴演讲吗?观众面对的究竟是人还是机器?联想到某些旅游景点的讲解员,他们能够声情并茂地背稿子,必要时还能热泪盈眶一把。一次次地重复相同的动作,他们却浑然不觉自己在说些什么。在一个念稿子的国度,这些都不是什么异常的现象吧。所以对于霍金,也没必要大惊小怪了。毕竟,霍金已经彻彻底底被世俗的人们所符号化了。要知道,这世道,形式比内容重要。

Comments

百度之星程序大赛

说来也巧。去年第一届的百度之星程序比赛,我注册了个账号,比赛的时候看了看题,没做就离开了——当时对自己的水平也没什么自信。后来也就不了了之。前几天,突然收到百度发来的邮件,告诉我今年又有比赛了,是第二届。我挺高兴,也挺感激,毕竟人家系统一年过去了还在惦记着我,于是就注册了,同时收到了注册成功的确认信。然而,就在注册成功的当晚,我再一次收到百度发来邀请我参加比赛的邮件,内容和先前的一模一样。我有种不祥的预感。

正式比赛是星期六、星期天,这两天在截止期限前随时都可以登录百度的网站答题。规则是,首次登录起,8个小时的时间内答题有效。上午10点左右,刚一登入,计时器就开始跳动,却给人一点喘息的机会都没有——而我原本设想的是,登录后,先显示比赛规则,按下一个按钮之后,才开始抽题、计时——心中有些不爽。不管它了,反正8个小时,也不在乎那1~2分钟。看题。

一共6题:4道20分,2到10分,穿插在一起。浏览了一下,发现20分的第一题不难,只是个字符串替换的问题。有几个隐含的“陷阱”也被我发现了。努力做了20分钟,得到了我认为正确的结果。把程序传上去,居然编译错误。再仔细一看,这个错误不是我的原因,而是百度服务器的问题。错误信息如下:

In file included from /usr/include/c++/3.2/i386-redhat-linux/bits/c++io.h:35,
                 from /usr/include/c++/3.2/bits/fpos.h:44,
                 from /usr/include/c++/3.2/iosfwd:46,
                 from /usr/include/c++/3.2/ios:44,
                 from /usr/include/c++/3.2/ostream:45,
                 from /usr/include/c++/3.2/iostream:45,
                 from ../user/2/2489_LEFsFaoZra1TgQJG/code1.c++:1:
/usr/include/c++/3.2/cstdio:112: `fputc' not declared
/usr/include/c++/3.2/cstdio:113: `fputs' not declared
/usr/include/c++/3.2/cstdio:114: `fread' not declared
/usr/include/c++/3.2/cstdio:115: `freopen' not declared
/usr/include/c++/3.2/cstdio:120: `fwrite' not declared
/usr/include/c++/3.2/cstdio:121: `getc' not declared
/usr/include/c++/3.2/cstdio:126: `putc' not declared
/usr/include/c++/3.2/cstdio:129: `remove' not declared
/usr/include/c++/3.2/cstdio:130: `rename' not declared
/usr/include/c++/3.2/cstdio:139: `ungetc' not declared
In file included from /usr/include/c++/3.2/cstdlib:52,
                 from /usr/include/c++/3.2/bits/stl_algobase.h:67,
                 from /usr/include/c++/3.2/memory:54,
                 from /usr/include/c++/3.2/string:48,
                 from /usr/include/c++/3.2/bits/localefwd.h:49,
                 from /usr/include/c++/3.2/ios:48,
                 from /usr/include/c++/3.2/ostream:45,
                 from /usr/include/c++/3.2/iostream:45,
                 from ../user/2/2489_LEFsFaoZra1TgQJG/code1.c++:1:
/usr/include/stdlib.h:642: parse error before `throw'
In file included from /usr/include/c++/3.2/bits/stl_algobase.h:67,
                 from /usr/include/c++/3.2/memory:54,
                 from /usr/include/c++/3.2/string:48,
                 from /usr/include/c++/3.2/bits/localefwd.h:49,
                 from /usr/include/c++/3.2/ios:48,
                 from /usr/include/c++/3.2/ostream:45,
                 from /usr/include/c++/3.2/iostream:45,
                 from ../user/2/2489_LEFsFaoZra1TgQJG/code1.c++:1:
/usr/include/c++/3.2/cstdlib:100: `getenv' not declared
/usr/include/c++/3.2/cstdlib:114: `system' not declared

我很诧异。返回来,查详细比赛规则,发现如下说法:

为了保证系统和所有参赛选手代码安全,本次比赛禁止了某些函数的调用,包括以下几类:

  • 文件写入(fwrite, fputc, fputs…)
  • 目录操作
  • 帐号口令
  • 网络有关
  • 环境有关
  • 执行系统命令
  • 汇编代码

如果你的代码在在编译中报告函数没有声明的错误,请检查是否在以上列出的范围之内,并修改相应的代码。

我的程序中使用了 STL,这是 C++ 中的重要特性之一。尽管比赛中允许使用 C++,而且规定可以用 STL(参见百度工作人员的回答),但上面的规则等于变相不让调用 STL。因为 STL 的很多标准容器都依赖这些函数实现。有人甚至试过只写一个“#include <string>”,主函数中直接return 0的程序,都会出错。

这些不让使用函数的规则,百度方面是通过将上述函数的声明从标准库文件中删除实现的。然而,百度他们不知道,C/C++ 的库文件是多少年来多少人的智慧的结晶,岂能如此轻易地拿掉,而不至于牵一发而动全身?当然,适当地禁止这类可能造成比赛结果不公平的函数还是必要的。但绝不是通过如此简单的方法,比如,可以把 STL 剪裁一下。

百度虽然去年搞过一次比赛,但不是用的 Online Judge 形式。这是第一次采用这种先进的形式判卷,也算是一种尝试,值得鼓励。不过,通过我的遭遇,也证明了一点:百度的工程师在赛前根本没有测试 C++ 的程序——否则,连 cout 都出错,还如何让使用 C++ 的选手输出结果??

反正,经过这么一折腾,一个多小时过去了。我是没有心思继续答题了。把编译错误日志往百度比赛专用的邮箱中扔了一份,下线吃饭去了。晚上,收到了百度工程师的回复:

现在C++可以了通过了,多谢你的建议

—————————————————————————

AStar2006百度之星程序设计大赛组委会

不过,我提交的先前编译通不过的参赛程序,估计早就被他们给弄丢了。

Comments (4)

关于哲学的思考

刚才还正在为“理论计算机科学”的作业抓狂,突然以外发现“网络学堂”上此项作业 deadline 向后宽限了一个星期。真是意外惊喜,喜出望外。经询问得知,是周二上午的课之前通知的。而我当时上课去晚了 1 分钟。所以借这个机会小结一下最近学到了什么,应该还是很有好处的。

最近,终于搞清了什么是“NP”问题。原来不是 non-polynomial (非多项式),而是 Non-deterministic Polynomial time 的简写。据说,学过一点计算机的人大都知道“NP”这个词(比如我就是大一的导论课时候知道的),表示一类很难解决的问题,但它的具体定义,能说清楚的就比较少了。根据 Wikipedia 上的解释,这类问题为什么甚难解决,至今仍为 open question,即迄今为止还没有人给出令人满意的解答。这些内容,属于 computational complexity theory 的范畴。这远比算法“形而上”得多。Vess 大牛开玩笑说,前几个星期的算法还比较是“科学”,现在学的完全就是“伪科学”了。我觉得,他想表达的意思是:如果说,对于算法的知识 engineers 来说还是关心的,那么复杂性理论则是纯粹是 scientists 做的事情了。而在后者的理论的最核心的地方,则是一种被称为 philosophy 的东西。

我以前有一段时间觉得,“哲学”是一种扯淡的东西。这是由多方面的因素造成的。当然,一直以来,“XXXXX哲学”给我留下了不可磨灭的坏印象,属首当其冲。其次,汉语的翻译无法把源自西方的某些思想作一准确的映射。比如,汉语里面的“哲学”一词和“物理学”有着天壤之别,难以暗示两者间的联系,事实上后者也可被解作“自然哲学”。再比如,“博士”是“Doctor of Philosophy”的译文,但没有把“philosophy”的意思体现出来。再如,“人生哲学”这个搭配,显然作“人生观”更佳,因为它和“哲学”这门学问本身没有太大的联系。总之,philosophy 这个词在汉语中的对应已经比较混乱了。为了准确起见,本文中的“哲学”应被认为是英文中“philosophy”或其其他词形的直译。第三,我看到的一些旨在向大众普及哲学的书,更多地是在谈哲学的历史,而不是对其本身的论述。也许通过一门学科的历史,可以更好地辅助学习这门学科。但是,正如你不能指望只是泛泛地了解数学史,就能学会代数和微积分一样,学好哲学的正确方法还是应该自己努力多去想,而不是了解别人曾怎么想。

通过上面对于复杂性理论的分析,哲学显然不是扯淡的东西。它里面包含了很多深刻的思想,而这些思想又贯穿于多种(乃至所有)学科之中。关于它到底是什么,我尚不能具有能力去谈论。不过,我可以从复杂性理论的角度谈谈我自己的认识。从词源上看,哲学是“爱”(philo)、“智慧”(sophy)的合成词。理科生倾向于把它理解为动宾结构,文科生倾向于把它理解为并列结构,呵呵。以下就是我的一些想法:

人的智慧,或思维,是个很奇怪的东西。它有个比较大的问题,就是跳跃性。跳跃性思维赋予了人们想象的能力,这是创造的源泉。但不幸的是,这种跳跃性的思维人人不同,如不将其规范,人们将难以进行思想上的交流。于是,这种思维的规范应运而生,它就是逻辑(btw, 这个词的翻译也很诡异,音译其实什么都没传达,以后有机会再说)。人们在逻辑的基础上不断发展,建立起数学的宏伟的大厦(关于数学起源说法的一种流派)。利用已经建立起的逻辑和数学体系,加上物理等学科取得的成果,人们成功地研制出了“电子计算机”这种神奇的仪器。它的模型其实早就由图灵建立起来了,称为“图灵机”,听上去像个玩具。现在的电子计算机与“图灵机”结构迥异,但计算能力却等价。当前的计算机技术的不断发展,只不过是使运行速度上不断提高,但是计算能力却一直没有突破最早的“图灵机”。或者说,仍然有些东西是无法计算的。或者说,仍然有些东西是无法在有限的时间内算出来的。为什么?是思维本身的局限还是我们思维所依赖的逻辑的局限?不能不说,在我们规范的思维得以取得巨大的成功的时候,恰恰是跳跃性思维赋予我们思考这一问题的能力。既然有些东西是无法计算的,那么它们还是不是确定性的?或者,这些无法计算的东西的确定与否对我们来说是否还存在区别?这些问题有些得到了解决,有些还没有得到解决。而对这些问题的探讨过程本身,既有意义,又有意思。

Comments

新东方托福班

在过去的 7 个星期中,我参加了新东方的托福周末强化班。每周末的 2 天,每天上午 8 点半到下午 2 点半(中间有休息)。结果这个班,连同平日 5 天的课程,把我的日程填得满满的。

从这个课中,我得到不少东西。首先,对托福的考试有了个宏观的了解,比如明确了托福考试各部分分别要考什么、怎么考。其次,获得了很多复习资料,这也要比我自己在网上 google 有效得多。当然,这都不是最重要的。新东方的老师很和蔼(包括班主任),批评人的时候都很讲究“策略”。管理严格而富于人性化。在新东方,每天的课都会检查听课证,并在其上作记号。学生与座位一一对应,一切显得井井有条。有一次我忘带了听课证,在确认了我带着课堂讲义等资料的事实的情况下,负责看门的老师也让我进去听课了,我很感激。

在上新东方的课之前,我听说,在新东方能学到的充其量是一些应试的技巧,而不是能力。而上过新东方的课之后,我感到这种提法并不准确。首先,每一位准备参加托福考试的学生,其实英语都受过了中学 6 年甚至更多的英语教育,不可谓没有实力,缺少的往往是在考场上把自己真实水平发挥出来的能力。而在新东方,恰恰可以获得这种能力。第二,通过研究并掌握以往命题的规律,有的放矢地提高自己的弱项(如学术单词),也会提高自己不同分项目的英语能力。

重要的是,找到了一种感觉。我所在的教室共有 400 多人。老师在前面拿个无线麦克开讲,教室内均匀分布的 7 个大电视同步直播,坐在哪里都可以清晰地看见电子黑板上的内容。这样规模的大课在清华也很寻常,但感觉不一样。防止学生出现大面积打瞌睡的现象,新东方老师会时不时地讲笑话(新东方老师的幽默是有“传统”的),“寓教于乐”,雅俗共赏。新东方老师上课充满了激情,这也和学校一般大课的填鸭式教学形成鲜明对比。每个老师都有不同的方法(比如戴云的语法体系),但是思维快速、缜密,见多识广、经历丰富,善于表达,是他们的共同特征。

在课程进行到一半左右的时候,新东方不失时机地发给每一位学生一本《新东方精神》。有点像某些机构出的《我眼中的XXXX》这类广告性质的自我贴金式宣传册子。不过看过几篇文章之后,会感到眼前一亮,心中为之一振。比如我读到一句话,觉得写的不错:

假如我们民族的教育培养出来的全是陈景润式的失去独立性格和精神自由的三好学生的话,我们民族也许可以解开歌德巴赫猜想,但却永远出不了歌德和巴赫这类照亮了人类文明的伟人——甚至就连歌德巴赫这样原创性的数学家也诞生不了啊!(p.50)

而这样的“妙语”,在书中比比皆是。

建议每一位在校大学生,不管是不是打算出国,条件允许的情况下,都去上一期新东方课程。会有收获的。

Comments (3)

今日

今天的“理论计算机科学”课上,快到课间的时候,Andrew Yao 先生给大家留了一道题。题目大概是这样的:

从1~10000的自然数中,有多少个能被它“四次方根取整”后的值整除?

Yao 先生说,谁做出来我请谁去吃 pizza hut,谁做出来就找助教说说做法。事实上,这道题很容易做,即使不用计算器也容易算出(不知是不是 Yao 先生低估了我们中国学生的计算能力?)。结果上课铃一响,大半个班的同学都做出了正确的结果。Yao 先生请大家到助教处一一登记。

当时大家都以为,这么多人都签了名,pizza 的事情肯定就算了,或者改个其他什么方法奖励。谁知 Yao 先生随后说,大家都能做出这道题,他很高兴,下次助教习题课(tutorial)改在吃饭的时间进行吧!大家都十分惊异。

我觉得,Yao 先生可以请大家吃 pizza,其实并不在乎那点钱。很多中国老师其实也有钱,但对学生可就没那么好了。严格地说,这不是一个“对学生好不好”的问题,而是做人“守不守信”的问题。不知道大家在品味着 pizza 的同时,能不能意识到——Yao 先生教会我们的,不仅仅是计算机科学的理论,还有做人的理论。

Comments (8)