终于想起用户名
七月 22, 2008 at 6:55 上午 | In Default | 8 Comments这个blog已经4个多月没有更新。除了自己懒,主要原因是我忘了用户名了……密码忘了还容易,帐号都忘干净就没法了。昨天灵光一现把帐号从记忆深处拉了出来,终于能看到这个后台管理页面,心里居然一阵激动。
以后还是保持这个blog的更新,虽然开学以后想必会很忙……直到我能自己架独立blog。
阅读(275 次)
Using LAPACK in C/C++
二月 22, 2008 at 1:00 下午 | In Default, Technology | 1 CommentFortran是科学计算的标准语言,无论是性能,库,还是普及程度都勿庸置疑地是老大。作为最古老的计算机语言,这么多年的积累让其它语言几乎没可能改变这一局面。可惜我在大学时只学了C,这得怪我们系里的课程安排……无奈之下,很多时候只能C + Fortran Library来干活。最常用的Fortran库无疑是Lapack,主要就是各种对角化。这篇文章里就把C/C++中调用Lapack的每一个细节都记录下来,主要目的是让我下次编程时可以不用重复回忆(我已经吃过一次亏了,花了一晚上时间来研究怎么在C/C++里面链接dll这种白痴问题)。如果有朋友也碰到类似的问题,而又碰巧看到了这篇文章(这是小概率事件,google虽然触角无数,但也难以伸到我这网络深处的小地方),也许可以帮你少走些弯路。
Continue reading Using LAPACK in C/C++…
阅读(823 次)
暴力求解24点
二月 15, 2008 at 10:44 下午 | In Default, Technology, algorithm | No Comments是真正的暴力求解……穷举法。不过这个问题似乎也没有更好的方法了,各种算法除了暴力的程度,似乎也没有其他本质的区别。
好久没写程序,今天写得这个75%是从网上参考过来的。那个产生所有可能的后缀表达式的算法很漂亮,产生所有排列的函数也很简洁。唯一的缺点是,这个方法会搜索大量重复的表达式,总的搜索空间是全排列数乘上Catalan数,比指数增长还要彪悍。但是对一般4个数的24点,这个低效率还体现不出来。此外,输出的表达式是后缀的,看起来不怎么顺眼。但是后缀转中缀又很麻烦,我就懒得再折腾了。
import sys
def add(a,b):
return a + b
def sub(a,b):
return a - b
def mul(a,b):
return a*b
def div(a,b):
return float(a)/b
ops = {add:’+‘, sub:’-‘, mul:’*‘, div:’/‘}
def permute(seq):
seqn = [[seq.pop()]]
while seq:
newseq = []
new = seq.pop()
for i in range(len(seqn)):
item = seqn[i]
for j in range(len(item) + 1):
newseq.append(item[:j] + [new] + item[j:])
seqn = newseq
return seqn
def _exprs(expr, stk_depth, vals, ops):
if not vals and stk_depth == 1:
yield expr
if stk_depth > 1:
for op in ops:
for e in _exprs(expr + [op], stk_depth - 1, vals, ops):
yield e
if vals:
for e in _exprs(expr + [vals[0]], stk_depth + 1, vals[1:], ops):
yield e
def exprs(vals, ops):
return _exprs([], 0, vals, ops)
def eval(expr):
stack = []
for e in expr:
if callable(e):
b = stack.pop()
a = stack.pop()
try:
stack.append(e(a, b))
except ArithmeticError:
return None
else:
stack.append(e)
return stack[0]
def tostr(expr):
ret = []
for e in expr:
if callable(e):
ret.append(ops[e])
else:
ret.append(str(e))
ret.append(’ ‘)
return ”.join(ret)
if __name__ == "__main__":
vals = [int(x) for x in sys.argv[1]]
goal = int(sys.argv[2])
for p in permute(vals):
for e in exprs(p, ops.keys()):
if eval(e) == goal:
print tostr(e)
阅读(533 次)
新年好
二月 6, 2008 at 12:41 下午 | In Default | 2 Comments居然年三十了,同志们新年快乐。
转载ws短信一条:工资翻个十倍,爱情出点小轨(这个免了),理想早日放飞,卧佛快点到来,百合多多灌水,BN再战三百回。
我来继续ws:多收offer(此条送本宿舍申请团),多看动画(此条送所有宅男),多泡mm(此条特送Bcui和Bhui),多写禁书(此条送Bluo),等等等等。
阅读(748 次)
Mathematics in Physics
二月 6, 2008 at 12:21 下午 | In Default, Physics | No Comments我向来认为学数学的都是一等一的聪明人;学物理的就要稍微差一些。但是物理学家有个硕大的优势,就是他的研究对象有时远比研究者聪明。大自然往往出人意料,所以物理学影响数学的名例数不胜数,反过来的就逊色很多。以前高中时看杨振宁的演讲,谈到规范场和纤维丛的对应关系,真是漂亮的结果。二十世纪的数学肯定是几何和数学的天下,荣耀几乎都归于几何学家和拓扑学家。这个风气估计也影响到了物理学界,大家都喜欢把自己的结果拔高到topological的高度,这样才能吸引到足够的眼球和引用率。
作为一个物理系学生,我自己对数学和物理之间关系的认识这几年也有很大变化,很大程度上受到了南大物理系氛围的影响,毕竟南大物理主攻凝聚态,和玄之又玄的超弦比起来,能量在几个eV的电子无疑是再实在不过的东西。以前刚进物理系的时候,满怀着对理论物理的热情,对场论和数学物理无比向往。数学与物理学结合最密切的分支,无疑是场论(包括弦论在内)。弦论对数学的要求更是到了令人发指的程度,我想我一辈子都不会搞明白代数几何到底在说些什么。当然,弄那么多复杂的数学结构,到底是好是坏,不是我一个外行人能判断的。不过从目前看来,弦论对数学的影响似乎还要在物理学之上,想想教皇E. Witten是Fields奖得主就明白了。
Continue reading Mathematics in Physics…
阅读(506 次)
杂博
二月 5, 2008 at 6:39 下午 | In Default | No Comments今天早上起来,习惯性的开邮箱……看到一封Admission 2008……激动莫名。Boston College虽然物理排名不怎么样,但好歹是个offer,终于摆脱了三无状态。
随后又有一条坏消息。UMich发面试通知;2月29日在上海。但是我没收到,难道这个学校就这样黄了?
在家里实在无聊,银魂补完计划进度喜人,已经扫荡了50集。开始几天几乎是除了吃饭睡觉都在看,现在每天睡觉前看三集。所谓物极必反,我终于想起来还带了一堆paper回来看。但是做了一阵,数值模拟的结果总是不对,也很让人郁闷。
阅读(618 次)
龙书第二版下载
一月 24, 2008 at 5:17 下午 | In Default, Technology, compiler | 4 Commentscompiler-aho.pdf
今天终于把龙书第二版的电子书传上去了。不知道链接什么时候会失效。
失误,一开始写成第三版了
阅读(1037 次)
Evil of Memory Leak
十一月 19, 2007 at 1:44 下午 | In Technology, gc | 2 Comments本篇含技术内容,不喜者勿入。
这是一个关于内存泄漏的凄惨故事。内存泄漏,乃是C/C++ Programmer最恐惧的Bug之一;来不知其来,去往往也不知其去,潜伏在层层花括号深处,当你发现它的时候,往往已经是程序崩溃之时。我几天前还被一个诡异的memory bug困扰了一晚,此bug举止异于常bug,在调试时单步执行没有任何问题,但一运行就出一些稀奇古怪的结果。以至于我都无法定位bug的位置,最后不得不借助于石器时代的printf调试大法,在可能出错的位置加上一摞一摞的printf才找到bug的可能位置。就算我已经定位到某一行代码,在我盯着屏幕看了半天,看得眼前快要出现幻觉,还是想不通bug从何而来。果然,从哪里来,到哪里去,是个终极关怀级别的问题。这一块代码和内存分配有关,无奈之下只好重写一遍,用了个稍微不同的逻辑。然后bug消失,程序再次和谐。
我个人喜欢用C写东西,尽管已经有无数与memory leak搏斗的经验,每次仍然免不了犯这类错误,经验虽然不停增长,错误好像未见减少。所以有时候觉得Java, C#这样的带Garbage Collection的语言也不错,但昨天看了一篇文章,讲述了一个C#中的内存泄漏怎样导致200万美金旁落的悲惨故事。涉及到这么大的支票,我们的兴趣总会提高一些。
Continue reading Evil of Memory Leak…
阅读(814 次)
推荐一篇博文
十一月 15, 2007 at 12:26 上午 | In Default | 1 Comment因为我老是在blog写一些半桶水的技术文,大家的感觉可能是这个家伙无趣得很。今天决定推荐一篇博文,顺便给maoz同学拉拉票(虽然我这儿的访问量实在趋近于零)。maoz同学参加了Feedsky主办的博客大赛,有点像环法,每天都要写一篇命题作文(或者应该叫话题作文),坚持不懈一个月,你就完成比赛了。至于能不能拿到那台作为奖品的手提,鉴于有像和菜头那样的巨无霸参赛,我对maoz同学不表乐观。说实话看到这篇文章还是通过和菜头的blog。写了半天,不见庐山真面目,赶紧给一个链接:
下面是投票链接:投票点此
插播广告完毕。
对于这篇文章,我不知道该做些什么评论。也许就用鲁迅的话,直面惨淡的人生。maoz同学,据我所知(如果我没弄错的话),是属于产量极少的高智商人类,而且,强调一下,是个非常有趣好玩的人。说到这儿插几句,其实以前就看过maoz的blog,但没想到这个挺有意思的blog的主人居然是我的旧识,虽然也有许多年未见了(这句话可能不准确),我对maoz同学的印象也基本停留在N年以前,但想来现在应该也差不太远(希望如此)。但这篇文章,确实不像出自一个比我还小一岁的女孩子之手。
最近似乎几个国产Web 2.0网站都挺热闹,feedsky在办博客大赛,豆瓣的注册用户忽然就到了1000000个。中国的网络,真的是在夹缝里生存,从一开始就营养不良,到现在都不知营养良为何物了,但看到这些成绩,还是值得高兴一下。
阅读(1000 次)
龙书第二版
十一月 12, 2007 at 10:31 下午 | In Default, Technology, compiler | 9 Comments说到龙书(Dragon Book),喜欢玩编译器和程序语言的老大们肯定是人手一册,在编译器技术这一块的教科书中地位几乎有如圣经。说到这儿又要鄙视一下国产的什么编译原理教材,简直是不知所云,抄都抄得这么潦草。
计算机领域的经典著作,常常会有些“小名”或俗名,如无人不知的TAOCP,C语言圣经K&R,算法入门宝典CLR。TAOCP是书名的缩写,此书堪称最有名的算法书籍,我估计也是被完整阅读次数最少的计算机书籍,之一都省掉了。K&R和CLR都是作者名字的开头第一个字母。龙书算是比较有个性的,这个外号来自其封面。1977年,Alfred V. Aho和Jeffrey D. Ullman写了一本Principles of Compiler Design,封面是一位骑士枪挑一头绿色恐龙,因此得名龙书。到了1986年,此书升级换代,书名变成了Compilers: Principles, Techniques and Tools,沿用至今,作者增加了Ravi Sethi。封面依然是一位骑士和一头恐龙,只不过恐龙变成了红色,骑士则坐在了电脑前。仔细看的话,发现龙身上纹身“Complexity of Compiler Design”,骑士全副武装,盔甲上书“Data Flow Analysis”,夹着一把写着”LALR Parser Generator”的宝剑,盾牌上则写着”Syntax Directed Translation”。
Continue reading 龙书第二版…
阅读(1551 次)
Zero Sound
, powered by 赛族 & WordPress MU | Theme: Pool by Borja Fernandez.
Entries and comments feeds.
MSN:
