存档:2009年十一月

我所理解的博弈论 对策论(game theory)

十一月 12, 2009 | linux | RSS 2.0

记号,准备写

没有评论 »

N = NP ?

十一月 12, 2009 | 数学, 数据结构算法, 读书 | RSS 2.0

终于捡到一个时间来写这篇文章,其实我对p和np也不是很了解,只是觉得学计算机的起码应该知道,np问题应该算是计算机科学中的未解决的问题,关于n=np 也是一个未知的问题,Clay数学院评出的七个悬赏百万美元的难题。简单的讲p就是我们能在多项式时间内解决的问题?例如一些排序算法,初等的一些数学运算,p就是polynomial ,计算机科学里的算法复杂度是O(n),O(n^2)等都属于p问题,而np问题则是不能在多项式时间内解决的为难题,它是有20世纪70年代,数理逻辑领域两位计算机科学家的发现,Stephen A. Cook 和richard karp的论文,许多类型不同的问题抽象的逻辑问题其实是同一个问题伪装成不同的形式,np是一个世界之谜,当我们有限的心灵面对宇宙成指数,也许是比指数更高级的一个运算的运算的复杂度增长时,我们如何应对,为什么我们无法预测未来,变量太多,导致我们的运算成告诉增长的苦难,简单如天气预报来说,计算机发展十年天气预报才能多预报一天,但是预报的也不是百分之百的准啊,大家都会深有体会,世界时一个混沌中,在其中,我们和合自然抗衡还差很远。
在生活工作中,我们是在solving problems,而且一般我们处理的问题一般也是p问题,很简单的能把它解决,复杂性能不算太高,但是如果别人给你出一个问题说给我算一下10的100次方个素数是多少?你会傻眼的,为什么??很简单的问题的复杂度增长的太快,一个简单的例子是我们高中在学等比数列时候的一个小故事,向国外索要粮食,以2为底数,可见都速度惊人?何况以别的呢?现实生活中以指数式增长的例子比比皆是,《数字追凶》记得描述过一个这样的案子,甲流如果不控制,可以想象其传播速度会有多快?在有一个例子是计算机安全领域的一些加密算法,很显然我们如果采取逐个坚持,所谓的暴力破解去解rsa,des算法相信还是很困难的,但是给你密钥,验证就可以在多项式时间内完成。可见np问题是非确定计算模型下易验证的问题,np完全是一类看似不相关的问题,可以最终化解成一类问题,如果解决了这样一类 问题,这整个问题链条都可以迎刃而解,如果a问题能化解为b,b能化解为c,c能化解为d等等,这解决了最底层的则整座大厦将可以击破,著名的np完全问题 旅行售货员问题,哈密顿问题,相信学计算机的都应该学过,这些问题会出现在《离散数学》,《算法分析》课程中,如果城市有限,我们可以把旅行售货员去过的地方做成图,或者画一个树,画出所有可能到达的分支,利用回溯法即可解决问题,但是如果他要去一万个城市呢?复杂度可想而知,但如果知道了,我们可以轻松的验证,许多问题都属于此类,如果我们找到一个通用的方法解决np问题在多项式时间内,即n=np,这我们的则没有安全,估计也到了大同世界,只要有密码的地方我们可以运行下计算机,轻松破解,而不比等千万年。例如我们的rsa加密算法利用的是大整数的分解的复杂度,迷宫也是一个np问题,世界就是一个错综复杂的迷宫。
下图是wiki上的np,p问题的所属列表。
250px-Complexity_classes.svg
说到问题的转化和分解,想起编译原理课程中讲过的一些状态图,图灵机等,事物的转化状态,看似复杂的理论,起最终的解决可以固定到一些模式上,例如经常提到的狼和白菜和羊过河问题,这样的问题,可以通过分析状态,画出状态。把所有的解化解成固定的模式。
在np完全问题上,可喜的是今年第25界计算几何年会我国复旦大学的学者提出 ,”最小曼哈顿网络问题是一个NP完全问题“,获得最佳论文奖,np完全还是很多的存在在现实中。 附件为他们的论文。scg

参考:
1 http://web.mit.edu/newsoffice/2009/explainer-pnp.html
2 计算机算法设计与分析
3 推理的迷宫

没有评论 »

linux下迁移大文件

十一月 9, 2009 | linux | RSS 2.0

在《high performance mysql 》第二版在书后面的appendix a 讲了作者的一些小技巧,如何迁移大文件。
常见的包括我们的 先gzip下,然后scp过去,然后坐着讲了可以:
gzip -c file |ssh root@server1 “gunzip -c -> xxx” ,利用管道减少读写时间的浪费
两外讲了下使用nc来传入大文件,这样你的文件就不会得到加密:
如在你将要传输到的机器上建立sever nc -l -p 12345|tar xvzf -
在另外一台你
tar cvzf – xx|nc -q l server2 12345
传输速度很快:
rsync—》scp——》nc 传输速度越来越快
man 下nc 发现很牛叉,应该是黑客的必备命令,man页里面描述:nc – TCP/IP swiss army knife
不简单。

没有评论 »

谷堆悖论 连锁推理 图论解决推理题

十一月 9, 2009 | 数学, 读书 | RSS 2.0

断断续续的看了看《推理的迷宫》一书,paradox,puzzles and the frailty of knowledge。为作者博学所折服,哲学,对策论,计算机编程,物理,数学等多个领域,特别是逻辑学,总之作者依悖论导出作者的认识,人类文明的发展也是一次次在悖论危机中,找到新的分支,新的解释。自然科学一次次的升级,前进,发展。
特修罗的船:
传说中古希腊神特修斯有一艘战船,被雅典人作为历史文物保管起来。但是船上的一些木版已经腐烂了,必须要重新修补。就这样经过了许多许多年,这艘船的许多部分都被重修了。终于,船上再也没有最初的木版了。其实就是哲学的事物的发展的问题,所有的人都会同意撤掉一块木板后并不会改变船的身份,撤换一块还是原来的船,当问题是在某个时刻原来的船上的一块也不剩下了,如果此时还说是特修罗的船就不太合适了。
谷堆悖论:
无论什么时候从一堆沙子中,拿走一粒沙子,剩下的还是一堆沙子,会有这种可能,我们在一堆沙子中,取一粒,一粒,最终会出现剩下一粒的情景,我们取走后,就什么也没用了。
这些故事的现代版本是王浩悖论:
如果一个数x是小的,那么我们可以认为x+1是小的,那我们设x=0,大家都同意此时是小的,x+1是小哦,x+2是小的,依次得出所有的数都是小的,其实是荒唐的。
我的理解是按照哲学的解释是:事物发展到一定程度就会发生质变,量变引起质变,记得以前看过一本《数学头脑相遇的地方》讲的一个例子就是一个骆驼,你可以往它身上放稻草,一根接着一根,当总有时会,放了一根骆驼倒下了,其实也是这个道理,在数学上的解释也就是,变化发展依线性函数到一定程度就会突然变为不可预测的指数等多种混合模式发展,如果这个世界都是依照线性发展的,那我们就活的轻松自在了,我们可以预测二明天,因为在图上他的斜率是一定的,简单的用微积分的观念讲,变化率一定了,那就是const了,什么都会变的简单。我们认识世界的复杂度也会很简单。可惜的是现实不尽如人意。
解决谷堆悖论先认识下,连锁推理:
一个连锁推理是由一连串的推理构成的一个链条,在这种推理形式中,每一个命题的谓项和下一个敏体的主项相同,如:
所有大乌鸦是乌鸦,所有乌鸦是鸟,所有鸟是动物,所有动物都需要氧气,很明显我们能推出所有大乌鸦需要氧气。
还有一个经典的例子(引自《经典寓言中的逻辑学》):
一只猫泄漏了军事机密,讲的是德法在一次世界大战的战役中打的难解难分,战争的间隙,德国军官总是拿着望远镜监视法军的军事基地,发现一个重要战况:
他看见法国阵地后面的一个坟地上,每天早上都有一只价值不菲的波斯猫晒太阳,通过观察没有发现村庄,于是这个参谋对上级进行了汇报,指挥官非常重视,认真分析,得出结论,坟地下面有一个高级军官指挥部,刻不容缓,发动6个炮兵营开始发起猛烈攻击,结果可想而知,法军惨败,指挥部夷为平地。可以想想德国指挥部是如何分析得出的结论呢??
电梯问题:
电梯中有6个人,则或者其中至少有3个人互相认识,或者至少有3个人互相不认识,如何证明???
一个淫秽的版本是:大学宿舍任选6个学生,这或者至少有3个人,其中谁跟谁都在一起睡过,或者至少有3个人,其中谁跟谁都从未一起睡过?
这些问题展示了一个图论的数学分支,如果是计算机的话,大学课程里面一般会开《离散数学》,里面会讲到图论,一般也会挺过欧拉的七桥问题,都是图论的内容。上题翻译成图:
6个人表示6个点,任意两点间画一条线,表示二者关系,红线表示两人互相认识,黑线表示两人互相不认识:
a
b c
d e f
想象一下,画一下从a开始我们画五条线,表示我们要么认识,要么不认识,那么我们可以画5条线,无论如何三条线颜色相同,我们假定a至少认识3个人,继续画线,你就会发现矛盾。读者可以想象下,看来图论还是很有用的,数学与几何总是相得益彰,难怪当年笛卡尔梦中都在思考代数和几何联系啊。
雷声滚滚,得赶紧睡了。

没有评论 »

install mysql/pdo for php on debian debian下为php安装mysql pdo

十一月 5, 2009 | linux, mysql | RSS 2.0

debian is not install pdo default ,so i need install this extension,we can use phpsize ,but the simple way is
under this,when i search the method in google ,many chinese blog can’t solve my issues ,google.com is helpful to me .
first way:
# apt-get install dh-make-php dh-make-php
# pecl install pdo
# pecl install pdo_mysql
# pecl install pdo_sqlite
maybe u need excute this commond channel-update pecl.php.net
then config ur php.ini add like this:
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_sqlite.so

then restart apache or nginx
another way:
$ sudo apt-get install php5-dev
$ sudo apt-get install php-pear
$ sudo apt-get install libmysqlclient15-dev
$ sudo pecl install pdo
$ PHP_PDO_SHARED=1 sudo pecl install pdo_mysql

Then, add these lines to php.ini somewhere to activate the new modules:
extension=pdo.so
extension=pdo_mysql.so
third way is to simple
apt-get install php5-common php5-mysql php5-sqlite

I hope that this guide is useful to u .

没有评论 »

mysql replication 自动倒库,启动配置主从库脚本

十一月 1, 2009 | linux, mysql | RSS 2.0

简单的写了一个,可以继续优化调整,需要一个cfont.sh。

#!/bin/bash
FONT="./cfont.sh"
source $FONT &>/dev/null
USERNAME="xxxx"
PASSWD="xxxxxxxx"
HOSTNAME="xxxxxxxxxxxxxx"
 
USERNAME247="xxxxxxxxxxxxxx"
PASSWD247="xxxxxxxxxxxxxxx"
HOSTNAME247="xxxxxxxxxxxxxxxxxxx"
 
DATABASE="xxxxxxxxxxxxxxxxx"
DATABASE247="xxxxxxxxxxxxxxxxxxxxxxxx"
 
DATA=`date '+%Y%m%d%k%M'`
DUMPSQL="dump$DATA.sql"
MASTERLOG="masterposition.log"
MYSQLHOST=" -h$HOSTNAME -u$USERNAME -p$PASSWD"
MYSQLHOST247=" -h$HOSTNAME247 -u$USERNAME247 -p$PASSWD247"
printUsage() {
	cfont -b -red  "Usage: $0" -reset -n
	cfont -b -red "Failed" -reset -n
	cfont -red " --dumptable" -reset -n
	return
}
 
locktable() {
	mysql $MYSQLHOST -e ' FLUSH TABLES WITH READ LOCK;' 
	if [ $? -ne 0 ]
	then
		cfont -b -red " lock table Failed" -reset -n;
		exit 3;
	else
		cfont -b -green "lock table OK" -reset -n;
	fi
}
unlocktable() {
	cfont -b -green "unlock tables" -reset -n;
	mysql $MYSQLHOST -e ' UNLOCK TABLES;' 
	if [ $? -ne 0 ]
	then
		cfont -b -red " unlock table Failed" -reset -n;
		exit 3;
	else
		cfont -b -green "unlock table OK" -reset -n;
	fi
}
 
dumptable() {
	locktable
	cfont -b -green "get master status pos file" -reset -n;
 
	STATUSALL=` mysql $MYSQLHOST -e 'show master status ;'|awk '{print $1,$2}'`
	STATUSFILE=`echo $STATUSALL|awk '{print $3}'`
	STATUSPOS=`echo $STATUSALL|awk '{print $4}'`
 
	cfont -b -green "start dump database" -reset -n;
	#mysqldump --opt $MYSQLHOST $DATABASE247 >$DUMPSQL 
	if [ $? -ne 0 ]
	then
		cfont -b -red "dump database  Failed" -reset -n;
		exit 3;
	else
		cfont -b -green "dump database  OK" -reset -n;
	fi
 
	unlocktable
	#unlock t ables
	cfont -b -green "start dump sql to $HOSTNAME247" -reset -n;
	mysql $MYSQLHOST247 -e "stop slave"
	mysql $MYSQLHOST247  $DATABASE247 < dump200910231804.sql ;
	echo $STATUSFILE $STATUSPOS >> $MASTERLOG
	mysql $MYSQLHOST247 -e "change master to master_host='$HOSTNAME247', master_port=3306,master_user='replication',master_password='replication',master_log_file='$STATUSFILE',MASTER_LOG_POS=$STATUSPOS"
	startslave
 
}
startslave() {
 
	mysql $MYSQLHOST247  -e "start slave"
 
	RESULT=`mysql $MYSQLHOST247 -e 'show status like "Slave_running"' -ss | awk '{print $2}'`
	if [ "$RESULT" == 'ON' ]
	then
		echo -e "$HOSTNAME247    Slave is running!"
	else
		echo -e "$HOSTNAME247    Slave is not running!"
	fi
 
}
if [ $# -eq 0 ] ; then
	printUsage
	exit 1
fi
 
case $1 in
	--dump) dumptable;;
	--help) printUsage; exit 1;;
	*) printUsage; exit 1;;
esac

没有评论 »

mysql的优化数据库两种方法,脚本

十一月 1, 2009 | linux, mysql | RSS 2.0

我说的优化就是简单的用optimize table

1 第一种方法就是脚本,本来自己写了一个,但是后来在网上发现了一个可以优化所有库的,还是比较好的,可以看下

用了sed和awk:

#################################################
#!/bin/sh
 
# this shell script finds tables and runs 'optimize table'
# @date 6/14/2006
# @author Son Nguyen
# @modified by Matt Rae 7/7/2006
 
MYSQLCONFIG="-hxxxxxxxxxx -uxxxxxxxxxxxxx -pxxxxxxxxxxxxxxxx "
printUsage() {
	echo "Usage: $0"
	echo " --optimize"
	return
}
 
 
doAllTables() {
	DBNAMES=`mysql $MYSQLCONFIG -e "SHOW DATABASES\G;" | grep 'Database' | sed -n 's/Database: //p'`
	for DBNAME in $DBNAMES
	do
		# get the table names
		TABLENAMES=`mysql $MYSQLCONFIG -D $DBNAME -e "SHOW TABLES\G;"|grep 'Tables_in_'|sed -n 's/.*Tables_in_.*: \([_0-9A-Za-z]*\).*/\1/p'`
 
		# loop through the tables and optimize them
		for TABLENAME in $TABLENAMES
		do
			mysql $MYSQLCONFIG -D $DBNAME -e "OPTIMIZE TABLE $TABLENAME;"
		done
	done
}
 
if [ $# -eq 0 ] ; then
	printUsage
	exit 1
fi
 
case $1 in
	--optimize) doAllTables;;
	--help) printUsage; exit 1;;
	*) printUsage; exit 1;;
esac


第二种方法就是巧用数据库里面的表信息,如下:
mysql xxxx -e “select concat(’optimize table ‘,table_schema,’.',table_name,’;') into outfile
‘/u01/data/opti.sql’ from,<<< information_schema.ta<

cat /u01/data/opti.sql optimize table test.test; optimize table test.test2; optimize table test.zzz; mysql -u sg -p’xxxx’ < /u01/data/opti.sql test.test optimize status OK Table Op Msg_type Msg_text test.test2 optimize status OK Table Op Msg_type Msg_text 另外也可以用一个mysql的工具用perl写的,mk-find ,可以一下搞定,前几天在搞msql,数据库同步的时候遇到了一个号的工具Maatkit这个工具,有很多使用工具,国内很少人用,dba比本工具,好多使用的命令,倒库的比mysqldump快好多,多线程的运行。国内的http://www.bigheaddba.net/这个博客有较为详细的介绍

没有评论 »

下雪了,学英语

十一月 1, 2009 | 心情杂记, 读书 | RSS 2.0

今天真是个好天气,本来我以为天气预报说的阴天呢,谁知道早上醒来听说下雪了,而且鹅毛般,真不敢相信会下雪,天气预报也是事后诸葛亮了,但是这个是事实啊,很喜欢有雪的天气尽管有点冷,喜欢精灵般的雪,而且好多有雪的记忆特别清晰,小时候记得上小学,很小的时候下雪,穿棉裤,下好大,好大,不过都是穿的漏档裤,防止尿裤子的,不过有时候自己的腰带解不开了,也很麻烦地,所谓的腰带就是一根绳子,上初中的时候,经常晚上上晚自习,下雪回家天都黑了,几个人一起回家,两个人拉着一个人滑,一路上不知道摔倒了多少次,早上5点多久开始起床上学了,很找,很冷,试想下,从上了大学到现在就基本上没起那么找过了,8点都不错了,呵呵,不过晚上睡的也晚了。想想上学真是十年寒窗啊,尤其是对我们农村的孩子。

上大学也有一次记忆深刻的下雪,就是大一冬至的时候,一个班的同学在一块过,自己包饺子,记得在南阳下的好大,还记得一次是和女朋友吵架,呵呵。今天还好了,刚刚还没停就出去照相,女朋友还堆了个雪人,我就是东跑跑,西跑跑,我到是喜欢喝小孩们玩,不过那些小孩都叫我叔叔了,我得强制他们叫我哥哥,尽管他们不心甘情愿,不然会老的很快的。本来打算去图书馆看看,包都背 好了,放了两本书,一壶龙井。

其实周末去图书馆阅览室挺好的,先看看近期的好多报纸,然后浏览下各种各样的杂志,在图书馆竟然发现了《炎黄春秋》,看了下,觉得还是比较尊重历史的,比较喜欢看些沉思历史的书,记得胡适说过:历史是个小姑娘,任人打扮,所以喜欢看一些有独立思考,独特视角的书,譬如以前看的一本《扒这门缝看历史》,确实是这样,里面的好多历史事实跟我们传统认识的不一样,但是作者以合理的逻辑让我们重新思考,认识历史,我们的教育确实是限制了我们的思维,就是一直在灌输我们东西,我们也就学会了吸收,从来不思考,我觉得回去知识的能力和直接得到知识还是获取知识的能力更重要,独立思考的能能力还是很重要的,不然如何创新,突然想起做在病床的笛卡尔,思考哲学,思考数学,一个伟大的哲学家,数学家。

近段时候越发感觉英语越来越重要,特别是在外企,也伴随着我们公司被国外的一家公司收购,学了10多年的英语,可惜还是说不出口啊,想想小时候是先会说,后才会写,会读的,英语到好,反着来了,而且口语很来,前段时间在地铁里碰一老外,问路 how can i go to greatwall,自己发现英语说的还是很的差的太多了,主要一个方面是思维不同,以后只能加强了,不但要会读,口语还是很重要地。

没有评论 »