振芳's profile笨笨的小屋PhotosBlogListsMore Tools Help

笨笨的小屋

走吧,走吧,为自己的心找一个家。

振芳 李

Occupation
Location
October 24

communication complexity (CC)

The notion of communication complexity (CC) was introduced by Yao in 1979, who investigated the following problem involving two separated parties (Alice and Bob). Alice receives an n-bit string x and Bob another n-bit string y, and the goal is for one of them (say Bob) to compute a certain function f(x,y) with the least amount of communication between them. Note that here we are not concerned about the number of computational steps, or the size of the computer memory used. Communication complexity tries to quantify the amount of communication required for such distributed computations.

Of course they can always succeed by having Alice send her whole n-bit string to Bob, who then computes the function, but the idea here is to find clever ways of calculating f with less than n bits of communication.

This abstract problem is relevant in many contexts: in VLSI circuit design, for example, one wants to minimize energy used by decreasing the amount of electric signals required between the different components during a distributed computation. The problem is also relevant in the study of data structures, and in the optimization of computer networks. For a survey of the field, see the book by Kushilevitz and Nisan.

Donald.E.Knuth -崇拜

Donald.E.Knuth
  D.E.Knuth(唐纳德.E.克努特)
  算法和程序设计技术的先驱者,计算机排版系统TEX和METAFONT的发明者,他因这些成就和大量创造性的影响深远的著作(19部书和160篇论文)而誉满全球。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集。这一伟大工程在1962年他还是加利福尼亚理工学院的研究生时就开始了。 Knuth教授获得了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金奖(Medal of Science),美国数学学会斯蒂尔奖(AMS Steele Prize),以及1996年11月由于发明先进技术荣获的极受尊重的京都奖(KyotoPrize)。现与其妻Jill生活于斯坦福校园内。
  Donald Knuth自传的开头这样写道:“Donald Knuth真的只是一个人么?”作为世界顶级计算机科学家之一,Knuth教授已经完成了编译程序、属性文法和运算法则的前沿研究,并编著完成了已在程序设计领域中具有权威标准和参考价值的书目的前三卷。在完成该项工作之余,Knuth还用了十年时间发明了两个数字排版系统,并编写了六本著作对其做了详尽的解释说明,现在,这两个系统已经被广泛地运用于全世界的数学刊物的排版中。随后,Knuth又发明了文件程序设计的两种语言,以及“文章性程式语言”相关的方法论。
  到目前为止,Knuth已经出版发行了17部书籍,一百五十余篇论文,包括了巴比伦算法、圣经、字母“s”的历史等多方面的内容。作为一名数学家, Knuth曾开创了几门新的课程,为纯计算数学做出了很大贡献。他所获得的奖项和荣誉数不胜数,其中最值得注目的有1974年美国计算机协会图灵奖 (ACM Turing Award),1979年美国前总统卡特授予的科学金奖(Medal of Science)以及1996年11月由于发明先进技术荣获的极受尊重的京都奖(Kyoto Prize)。在不多的业余时间里,Knuth不仅写小说,还是一个音乐家、作曲家、管风琴设计师。
  是Knuth独特的审美感决定了他兴趣广泛、富有多方面造诣的特点,Knuth传奇般的生产力也是源于这一点。对于Knuth来说,衡量一个计算机程序是否完整的标准不仅仅在于它是否能够运行,他认为一个计算机程序应该是雅致的、甚至可以说是美的。计算机程序设计应该是一门艺术,一个算法应该像一段音乐,而一个好的程序应该如一部文学作品一般。
  早期经历
  Knuth,1938年1月10日生于美国威斯康星州密尔沃基市。他在模式方面辨别和熟练操作的能力在八年级的时候开始显现出来。当时,当地的一家糖果制造商举办了一项比赛,比赛要求选手用其品牌“Ziegler's Giant Bar”中的字母组成新的单词,规定时间内组成单词数量最多者获胜。Knuth参加了比赛,并以单词总数4500余个远远超过了裁判的2500个的标准,轻松赢得头奖。赛后,Knuth说道,如果自己当初想到回答时用些省略符号的话,还能写出更多。这次比赛Knuth为学校赢得了一台电视机,还为每个同学赢得了一根糖果棒。
  Knuth多产的出版事业开始于他的高中时代,当时他的科技设计被Westinghouse Science Talent Search 光荣提及。他的“Potzebie System of Weights and Measures ”的基础章节被登在“Mad”杂志第26号,“Power”的基础章节被叫作“whatmeworry”。“Mad”的编辑认识到了年轻的Donald著作的重要性,以25美元买下了他的文章,并刊登在了其1957年6月的期刊上。
  高中的时候,Knuth对数学并没多大兴趣,而是把主要精力放在主修的课程:听音乐和作曲上。他在高中的乐队里吹萨克斯、大号时,曾把Dragnet、 Howdy Doody Time 和 Brylcream的主题曲联成一段新的音乐。这位著名的科学家在近期评论自己的早期作品时承认:“对于版权,我一无所知。”
  虽然Knuth的GPA是学校历史上最高的,但是他和他的指导老师还是对他能否成功学习大学数学持怀疑态度。Knuth说在他高中阶段和大学早期一直有一种自卑感,这个问题一度是他的一个障碍。作为一个大学新生,Knuth没有对于失败的恐惧,他花了许多时间攻克额外的数学难题,几个月后,他在这方面的能力已经远远超过了其他同学。
  高等教育和早期的计算机工作
  当Knuth在Case科学院(现在的Case Western Reserve)获得物理奖学金时,梦想成为一个音乐家的计划改变了。Knuth回去继续研究数学是在大二,当时一个爱出难题的教授提出了一个特殊的问题,并说哪个学生能解决这个问题就立刻记成绩“A”。Knuth跟大多数同学一样,也认为那是道解不出来的题目,直到有一天,他错过了公共汽车,只能步行去看一个演出,Knuth利用路上这点空闲时间决定尝试一下。那阵子他运气真的是非常好,不仅问题很快就解开了,得到了“A”,还成功地经常逃课。虽然 Knuth也承认,逃课让他有负罪感,但是很明显,他完全有能力补上落下的功课,接下来的一学年,他的离散数学就又得了个“A”,而且还获得了给自己不能参加的课程评定论文等级的工作机会。
  1956年,作为Case的新生,Knuth第一次接触到了计算机,那是一台IBM 650。Knuth说直到一年后,女孩才进入了他的生活。这又是计算机科学界一直以来亏欠科学家们的一个事例之一。
  Knuth熬夜读IBM 650的说明手册,自学基本的程序设计。那时,在高等计算机语言发明之前,程序编写只能用第二代或是汇编语言。这个工作既耗时又困难,因为指令必须根据每台机器特定的构造编写,而实际上指令只须一步就可从二进制0、1系列转存到计算机硬盘上。Knuth说,有了第一次使用650的经历,他便肯定自己能编写出比说明手册上介绍的更好的程序。
  Knuth很快便开始“闲逛”,编写可以执行数学函数的程序。他的第一个程序是把数字转化为素数,第三个是做井字游戏(或者说是让计算机在改正每次输的错误的过程来学会玩井字游戏)。作为学校篮球队的经理,Knuth编写了一个根据不同成绩标准评定每个运动员对球队贡献等级的程序,他的努力赢来了那些认为这样做有助于球队赢得同盟冠军的教练的好评(虽然,无庸质疑,不是每一个运动员都这样认为)。Knuth的成就成了新闻周刊的标志,他和教练、计算机的照片也被刊登在IBM650后来的说明手册上。
  1960年,Knuth从Case毕业时享有着最高荣誉,在由全体教员参加的选举上,他因其公认的出众成就获得了硕士学位。1963年,Knuth回到加利福尼亚理工学院攻取了数学博士学位,之后成为了该院的数学教授。在加利福尼亚理工学院任教期间,Knuth作为Burroughs 公司的顾问继续从事软件开发工作。1968年,他加入了斯坦福大学,九年后坐上了该校计算机科学学科的第一把交椅。1993年,Knuth成为斯坦福大学 “the Art of Computer Programming”(计算机程序设计艺术)的荣誉退休教授。
  早期成就和计算机程序设计艺术的开端
  1962年,Knuth还是个研究生的时候就开始了他计算机程序的工作。那时,他已经开始了个人咨询,为不同的机器编写编译程序。编译程序是一种翻译原始或高级语言和对象或二进制机器语言的中间语言。在不知道众多软件公司正高额寻求成百上千的编辑者的情况下,Knuth编写了一个程序,赚得5000美元,他的名字立刻响誉了整个行业。世界上一流的出版社Addison-Wesley找到Knuth,请他写一本关于编译程序的书。到1966年,Knuth已经发表了3000页的手写设计草图,并且发明了一种综合方法,用于分析或决定结构翻译所客观需要的文法规则。最近,关于他的那第一部著作,Knuth自己这样评述:“用三年半的时间写第一章可并不是件好事。”
  当Knuth的出版商计算出他的那3000页的笔迹打印成文章大约需要2000页时,大家才发现这实际上是一项多么大的工程。Knuth决定将它详述,成为一部更大的关于程序设计科学的纵览,共分为七个部分。一部巨著就这样——诞生了。《计算机程序设计艺术》,至今仍是各程序类图书书架上标志性的书籍。微软首席执行官比尔.盖茨在1995年接受一次采访时说,“如果你认为你是一名真正优秀的程序员,就去读第一卷,确定可以解决其中所有的问题。”值得注意的是,盖茨本人读这本书时用去了几个月的时间,并同时进行了难以置信的训练。盖茨还说:“如果你能读懂整套书的话,请给我发一份你的简历。”
  依Knuth本人所讲,《计算机程序设计艺术》是他毕生最重要的事业,其目的是“组织和总结所知道的计算机方法的相关知识,并打下坚实的数学、历史基础”。Knuth撰写的前三卷被翻译成多种语言,到1976年为止,已卖出超过一百万册。他目前正全神贯注地编写第四卷,他期望第四卷的篇幅约为2000 页,并分为三个独立的章节。为了完成丛书的其余部分,Knuth现在进入了一种引退的状态,全身心地投入这项工作。Knuth说,一般说来,他更喜欢在一段时间内集中精神完成一项工作,正像他自己在书中提出的:按“一批”的模式。
  Knuth从他主要的工作计划中拿出了十年,即从1976年起,致力于对数字排版的研究,设计了著名的文件准备TeX系统,字体生成程序METAFONT。这项工作带来的值得注意的副产品是用于结构文件和“文章性程式语言”附随方法论的WEB和CWEB语言。
  现在,Knuth和他的妻子Jill,两个孩子John 和Jennifer一起,住在斯坦福大学校园里。他继续着《计算机程序设计艺术》第四卷的编写工作。虽然说Knuth是全身心的投入这一项工作,但他还是能挤出时间研究MMIX的设计,那是一台64位RISC(精简指令集计算机)。而他的业余爱好仍然是音乐,还一直邀请那些能够即兴演奏四手联弹钢琴曲的人们给他留下便条,以便安排一些活动。
  成就简要回顾
  编译程序
  编译程序能够实现高级语言和二进制机器语言之间的翻译。二十世纪六十年代初期,Knuth教授致力于这方面的研究,虽然现代的软件已经可以使其变的简单一些,但编写编译程序仍被认为是一项极为困难的工作。Knuth教授在这方面最著名的成就是LR(k)分析的研究,那是一个能使确定一串字符文法规则的过程更加顺畅的值得注目的方法。
  属性文法
  在编译程序的工作之后,Knuth教授走上了形式上定义程序语言意义、语义的研究道路。他建立起一个更加经济的方法去通译联合规则,他把这种方法称作“属性规则”。该方法创立的同时,计算机科学的子域被称作“属性文法”。
  算法
  也许Knuth教授在计算机科学领域最原创的贡献就是他对于算法的分析。算法是编写一个程序,使之能去完成一项任务的基础,例如搜索或分类等。在加利福尼亚理工学院时,Knuth教授在一个毕业生的协作下,开发了用来探究数学公理推论的Knuth-Bendix算法。1968年,Knuth教授在斯坦福,和他的一个学生开发了Knuth-Morris-Pratt算法,该法则使计算机在文章中搜索一串字符的过程更加连贯。他所著的《计算机程序设计艺术》是一个详尽的算法实践和科学的概观。
  数字化排版
  “数学书籍和杂志已经不像从前那样漂亮了。”Knuth教授在一篇早期关于数学排版的文章中这样写道。由于对计算机排版的校样的低质量感到无法忍受, Knuth教授从他史诗性的七卷集巨著的编写过程中拿出了十年时间,来开发一个高质量的计算机排版系统。其间,Knuth开发了两个用于文件排版和字体生成的软件系统,这两个系统现在已被世界大多数出版社运用。它们分别是TeX,用于出版业的科学排版,和“优美文章”的产品;METAFONT,一个字体生成程序。
  结构化文件和文章性程式语言
  Knuth教授的排版研究,引领他发明了文件构造的两种语言和一个方法论,叫作“文章性程式语言”。语言分别是WEB和CWEB,它们促进了程序编写向 “文学作品,是用来阅读的”这个方向发展。这两种语言的结合,一种是文件格式化,另一种是程序设计,这就使程序员能够同时创建两个不同的系统程序,一个面向人,另一个面向机器。当一条过程清楚地描述程序并促进其维护时,另外一个则产生一个机器可执行的程序。这些工作就是Knuth教授在实现其使程序设计为读者易懂、甚至感觉漂亮的目标的过程中,在计算机领域里所做出的巨大贡献。
October 20

SDI

Selective Dissemination of Information - (SDI) (From Library Science) SDI is a current awareness system which alerts you to the latest publications in your specified field(s) of interest.

A user registers at such a system with keywords representing his or her fields of interest, called a search profile. When new publications matching the search profile appear, the system informs the user of them instantly, periodically or upon request. Some systems may also be able to inform the user if changes in already notified publications occur.
==========================================
wiki

Selective dissemination of information ("SDI") was originally a phrase related to library and information science. SDI refers to tools and resources used to keep a user informed of new resources on specified topics.

SDI services pre-date the world wide web, and the term itself is somewhat dated. Contemporary terms for SDI services include alerts, current awareness tools or trackers. These systems provide automated searches that inform the user of the availablilty of new resources meeting the user's specified keywords and search parameters. Alerts can be received a number of ways, including email, RSS feeds, voice mail, Instant messaging, and text messaging.

October 10

哈佛图书馆墙上的训言 [转]

 1.此刻打盹,你将做梦;而此刻学习,你将圆梦。

  2.我荒废的今日,正是昨天殒身之人祈求的明日。

  3.觉得为时已晚的时候,恰恰是最早的时候。

  4.勿将今日之事拖到明日。

  5.学习时的痛苦是暂时的,未学到的痛苦是终生的。

  6.学习这件事,不是缺乏时间,而是缺乏努力。

  7.幸福或许不排名次,但成功必排名次。

  8.学习并不是人生的全部。但既然连人生的一部分——学习也无法征服,还能做什么呢?

  9.请享受无法回避的痛苦。

  10.只有比别人更早、更勤奋地努力,才能尝到成功的滋味。

  11.谁也不能随随便便地成功,它来自彻底的自我管理和毅力。

  12.时间在流逝。

  13.现在流的口水,将成为明天的眼泪。

  14.狗一样地学,绅士一样地玩。

  15.今天不走,明天要跑。

  16.投资未来的人是忠于现实的人。

  17.受教育程度代表收入。

  18.一天过完,不会再来。

  19.即使现在,对手也在不停地翻动书页。

        20.没有艰辛,便无所获。
October 07

NFA

计算理论中,非确定有限状态自动机非确定有限自动机(NFA)是对每个状态和输入符号对可以有多个可能的下一个状态的有限状态自动机。这区别于确定有限状态自动机(DFA),它的下一个可能状态是唯一确定的。尽管 DFA 和 NFA 有不同的定义,在形式理论中可以证明它们是等价的;就是说,对于任何给定 NFA,都可以构造一个等价的 DFA,反之亦然: 通过使用幂集构造。两种类型的自动机只识别正则语言。非确定有限自动机有时被称为有限类型的子移位(subshift)。非确定有限状态自动机可推广为概率自动机,它为每个状态转移指派概率。

非确定有限自动机是 Michael O. RabinDana Scott 在 1959 年介入的[1],他们证明了它与确定自动机的等价性。

NFA 同 DFA 一样,消耗输入符号的字符串。对每个输入符号它变换到一个新状态直到所有输入符号到被耗尽。

不像 DFA,非确定意味着对于任何输入符号,它的下一个状态不是唯一确定的,可以是多个可能状态中的任何一个。因此在形式定义中,一般都谈论状态幂集的子集: 转移函数不提供一个单一状态,而是提供所有可能状态的某个子集。

一种扩展的 NFA 是 NFA-λ(也叫做 NFA-ε有ε移动的 NFA),它允许到新状态的变换不消耗任何输入符号。例如,如果它处于状态 1,下一个输入符号是 a,它可以移动到状态 2 而不消耗任何输入符号,因此就有了歧义: 在消耗字母 a 之前系统是处于状态 1 还是状态 2 呢? 由于这种歧义性,可以更加方便的谈论系统可以处在的可能状态的集合。因此在消耗字母 a 之前,NFA-ε可以处于集合 {1,2} 内的状态中的任何一个。等价的说,你可以想象这个 NFA 同时处于状态 1 和状态 2: 这给出了对幂集构造的非正式提示:等价于这个 NFA 的 DFA 被定义为此时处于状态 q={1,2} 中。不消耗输入符号的到新状态的变换叫做λ转移ε转移。它们通常标记着希腊字母λ或ε。

接受输入的概念类似于 DFA。当最后的输入字符被消耗的时候,NFA 接受这个字符串,当且仅当有某个转移集合把它带到一个接受状态。等价的说,它拒绝这个字符串,如果不管应用什么转移,它都不能结束于接受状态。

形式定义

通常定义两种类似类型的 NFA: NFA 和“有ε-移动的 NFA”。普通的 NFA 被定义为5-元组 (Q, Σ, T, q0, F),它构成自

  • 状态的有限集合 Q
  • 输入符号的有限集合 Σ
  • 转移函数 T : Q × Σ → P(Q)
  • “初始”(或“开始”)状态 q0,有着 q0Q
  • “接受”(或“最终”)状态的集合 F,有着 FQ

这里的 P(Q) 指示 Q 的幂集。“有ε-移动的 NFA”(有时也叫做“NFA-ε”或“NFA-λ”)修订转移函数为允许空串 ε 作为可能的输入,结果为

T : Q × (Σ ∪{ε}) → P(Q).

可以证明普通 NFA 和有ε移动的 NFA 是等价的,给定任何一个都可以构造出识别同样语言的另一个。

 性质

机器开始于任意初始状态并读取来自它的符号表的符号的字符串。自动机使用状态转移函数 T 来使用当前状态,和刚读入的符号或空串来确定下一个状态。但是,“NFA 的下一个状态不只依赖于当前输入事件,还依赖于任意数目的后续输入事件。直到这些后续事件出现才有可能确定这个机器所处的状态” [2]。如果在自动机完成读取的时候,它处于接受状态,则称 NFA 接受了这个字符串,否则称为它拒绝了这个字符串。

NFA 接受的所有字符串的集合是 NFA 接受的语言。这个语言是正则语言

对于所有 NFA 都可以找到接受同样语言的一个确定有限状态自动机(DFA)。所以出于实现(可能)更简单的机器的目的把现存的 NFA 转换成 DFA 是可行的。这是使用幂集构造进行的,这可能导致在必需状态的数目上的指数增长。幂集构造的形式证明在这里给出。

对于有状态的可数无限集合的非确定有限自动机,幂集构造给出有状态的连续统的确定自动机因为可数无限集合的幂集是连续统: 2^{\aleph_0}=\aleph_1)。在这种情况下,为了使状态转移有意义,状态的集合必须被赋予一个拓扑。这种系统叫做拓扑自动机

NFA-ε的性质

对于所有 p,q\in Q,写 p\stackrel{\epsilon}{\rightarrow}q 当且仅当从 p 沿着零或更多个ε箭头前进可到达 q。换句话说,p\stackrel{\epsilon}{\rightarrow}q 当且仅当存在 q_{1}, q_{2},\cdots q_{k}\in Q 这里的 k\geq 0 使得

q_{1}\in T(p,\epsilon), q_{2}\in T(q_{1},\epsilon),\cdots q_{k}\in T(q_{k-1},\epsilon), q\in T(q_{k},\epsilon)

对于任何 p\in Q,从 p 可到达的状态的集合叫做 pε-闭包,并写为

\,E(\{p\}) = \{ q\in Q: p\stackrel{\epsilon}{\rightarrow}q\}

对于 P\subset Q 的任何子集,定义 P 的ε-闭包为

E(P) = \bigcup\limits_{p\in P}E(\{p\})

ε-转移是传递的,这可以证明,对于所有 q_{0}, q_{1}, q_{2}\in QP\subset Q,如果 q_{1}\in E(\{q_{0}\})q_{2}\in E(\{q_{1}\}),则 q_{2}\in E(\{q_{0}\})

类似的,如果 q_{1}\in E(P)q_{2}\in E(\{q_{1}\})q_{2}\in E(P)

x 是字母表Σ上的字符串。一个 NFA-ε M 接受字符串 x,如果存在 x 的形如 x1x2 ... xn 的表示,这里的 xi ∈ (Σ ∪{ε}),和状态序列 p0,p1, ..., pn二者,这里的 piQ,满足下列条件:

  1. p0 \in E({q0})
  2. pi \in E(T(pi-1, xi )) 对于 i = 1, ..., n
  3. pn \in F

特别注意某些字母 xi 可以是 {ε};它们不是选择自单独的Σ,而是来自Σ ∪{ε}。

实现

有多种方式实现 NFA:

  • 转换成等价的 DFA。在某些情况下这导致在自动机大小上的指数爆炸,从而辅助空间正比于在 NFA 中状态的数目(因为状态值存储要求给在 NFA 中的每个状态最多一位)。
  • 保持机器当前可能处在的所有状态的集合数据结构。在消耗最后一个输入符号的时候,如果这些状态之一是最终状态,则机器接受这个字符串。在最坏的情况下,这要求辅助空间正比于在 NFA 中状态的数目;如果集合结构为每个 NFA 状态使用一位,则这个方式等价于前者。
  • 建立多个复件。对于每个 n 路决定,NFA 建立这个机器的直到 n - 1 个复件。每个都进入单独的状态。如果在耗尽最后的输入符号的时候,至少一个 NFA 复件处在接受状态,则 NFA 就接受它。(这也要求关于 NFA 状态数目的线性存储,因为对所有 NFA 状态都可能有一个机器)。
  • 通过 NFA 的转移结构明确的传播(propagate)记号(token)并在一个记号到达最终状态的时候匹配。这在 NFA 应当编码触发转移的事件的额外上下文的时候是有用的。(对使用这种技术来跟踪对象引用的实现可查看 Tracematches)。

例子

下面的例子展示一个 NFA M,带有二进制字母表,它确定输入是否包含偶数个 0 或奇数个 1。设 M = (Q, Σ, T, s0, F) 这里的

  • Σ = {0, 1},
  • Q = {s0, s1, s2, s3, s4},
  • E({s0}) = { s0, s1, s3 }
  • F = {s1, s3},而
  • 转移函数 T 定义自下列状态转移表:
0 1 ε
S0 {} {} {S1, S3}
S1 {S2} {S1} {}
S2 {S1} {S2} {}
S3 {S3} {S4} {}
S4 {S4} {S3} {}

M状态图是:

M 可以被看作两个DFA的并集: 一个有状态 {S2, S1} 而另一个有状态 {S3, S4}。

M 的语言可以描述为如下正则表达式给出的正则语言:

(1^*(01^*01^*)^*) \cup  (0^*(10^*10^*)^*)

NFA-ε的应用

NFA 和 DFA 是等价的,如果一个语言可被一个 NFA 识别,则它也可以被一个 DFA 识别,反之亦然。这种等价性的建立是重要和有用的。有用是因为构造识别给定语言的 NFA 有时比构造这个语言的 DFA 要容易很多。重要是因为 NFA 可以用来减少建立计算理论中很多重要性质的数学工作的复杂性。例如,使用 NFA 比使用 DFA 证明下列性质要更加容易:

(i) 两个正则语言的并集是正则的。

(ii) 两个正则语言的串接是正则的。

(iii) 一个正则语言Kleene闭包是正则的。

 

DFA

真是惭愧,在校学的那些编译原理的理论,都还给徐老师了:)来恶补一下。
确定有限状态自动机 \mathcal{A} 是由
  • 一个非空有限状态的集合 Q
  • 一个输入字母表 Σ(非空有限字符的集合)
  • 一个转移函数 \delta: Q \times \Sigma \rarr Q (例如:\delta \left( q,\sigma \right) = p, \left( p,q \in Q, \sigma \in \Sigma \right)
  • 一个开始状态 s \in Q
  • 一个接受状态的集合 F \sube Q
所组成的5-元组。因此一个DFA可以写成这样的形式:\mathcal{A} = \left( Q,\Sigma,\delta,s,F \right)
 
非正式的语义
确定有限状态自动机一个字符接一个字符的读入一个字符串 w \in \Sigma ,并根据给定的转移函数一步一步的转移至下一个状态。在读完该字符串后,如果该自动机停在一个属于F的接受状态,那么它就接受该字符串,反之则拒绝该字符串。

扩展转移函数

为了能够对DFA的命题进行证明,需要一个数学上的正式的语义定义。

为此我们定义一个扩展的转移函数 \delta^*: Q \times \Sigma^* \rarr Q

  • \delta^* \left( q,w \right) 是自动机从状态q顺序读入字符串w后达到的那个状态
  • 扩展转移函数递归的定义为:
    • \delta^* \left( q,\epsilon \right) = q
    • \delta^* \left( q,u\sigma \right) = \delta(\delta^*(q,u),\sigma), \forall u \in \Sigma^*, \sigma \in \Sigma

正式的语义

对于一个确定有限状态自动机 \mathcal{A} = \left( Q,\Sigma,\delta,s,F \right) ,如果 \delta^* \left( s,w \right) \in F ,我们就说该自动机接受字符串w,反之则表明该自动机拒绝字符串w。

被一个确定有限自动机接受的语言(或者叫“被识别的语言”)定义为:\mathcal{L} ( \mathcal{A} ) = \{ w \in \Sigma^* | \mathcal{A}~ 接受字符串~w \},也就是由所有被接受的字符串组成的集合。

 利弊

DFA 是最实际的计算模型,因为有平凡的线性时间、恒定空间的在线算法模拟在输入流上的 DFA。给定两个 DFA 有有效算法找到识别它们所识别语言的并集、交集和补集 DFA。还有有效算法确定一个 DFA 是否接受任何字符串,一个 DFA 是否接受所有字符串,两个 DFA 是否识别同样的语言,和对特定正则语言找到有极小数目个状态的 DFA。

在另一方面,DFA 在可识别的语言上有严格的限制 — 很多简单的语言,包括需要多于恒定空间来解决的任何问题,不能被 DFA 识别。经典的 DFA 不能识别的简单语言的例子是括号语言,就是由正确配对的括号组成的语言,比如 (()())。由形如 anbn 的字符串组成的语言,就是有限数目个 a,随后是相等数目个 b。可以证明没有 DFA 有足够状态来识别这种语言。

其它

  1. 能被确定有限状态自动机识别的语言是正则语言
  2. 确定有限状态自动机是非确定有限状态自动机的一种极限形式。
  3. 确定有限状态自动机在计算能力上等价于非确定有限状态自动机。
  4. 没有接受状态列表并没有指定开始状态的确定有限状态机叫做转移系统半自动机

云里、雾里的计算模式^_^

转载:http://news.csdn.net/n/20081006/119638.html

今天,SaaS、云计算、云安全、云服务有如巨浪,汹涌而来: 几乎所有的软件企业都在向SaaS转型;所有的IT服务商都准备转战云计算;所有的软件创业公司都要在云里创业;所有欲投资软件的风险投资都瞄准了SaaS和云计算。

我们经过大量调查,发现业界认同的趋势是,随着新型软件服务模式的兴起,SaaS和云计算将全面取代传统的软件开发和交付模式。所有这些,都预示着软件和IT服务行业即将发生一种翻天覆地的变化。

然而,SaaS究竟是传统软件的拯救者还是终结者?云计算是SaaS的黄金搭档吗?云计算和SaaS能携手再造软件世界吗?我们看到的事实是,SaaS、云计算和软件这三者之间尚不稳定的三角关系,必然给它们的前景带来诸多的不确定性。

一、SaaS   VS  传统软件 终结者还是拯救者?

SaaS冲击传统软件业

“SaaS是软件通过互联网来交付,向用户收取月服务费。用户通过互联网来使用软件,不需要一次性购买软件、硬件,也不需要维护和升级。SaaS运营商将统一安装、升级、维护软件和硬件。”阿里软件总裁王涛如此解释SaaS与传统软件交付方式的不同。

而正是这种特殊的软件交付模式,让SaaS一经出世,就备受业界关注,尤其得到了为数众多的、缺乏资金和人才的中小企业用户的支持。在一次专门针对SaaS应用情况的调查中,86%的用户表示,他们将利用SaaS来节省费用。也正是因为用户的认可,才引得包括IBM、甲骨文、SAP等软件巨头在内的企业纷纷调整产业方向,以求分得SaaS的一杯羹。

早些时候,IBM推出的Lotus Notes已经拥有了众多企业级粉丝。近期,IBM又以 13亿美元收购了互联网安全系统公司IIS,旨在强化其SaaS业务的开展。而甲骨文CEO Larry Ellison也于日前公开表示: “SaaS将是未来软件交付方式的潮流。”

到目前为止,SaaS做得最成功的是美国的Salesforce.com,其高级营销副总裁Phill Robinson曾说过: “SaaS是计算领域中即将发生的变革。在这场变革中,传统软件业将前所未有地被撼动。”

我们看到,传统软件业确实正面临着诸多困境。传统软件业市场环境还不够成熟和完善,社会层面对软件价值的认知度不高,从而造成软件价格被压得很低,发展不利; 除此之外,很多软件产品还经常会遭遇到盗版软件的困扰; 此外,在市场秩序方面,软件企业存在同质化现象,价格战直接导致了利润率下降。在此形势下,传统软件业如果不向服务转型,无疑是极其危险的。

从另一个角度看,软件转向互联网,将为软件企业和互联网企业的发展带来新的机遇,传统的软件生产模式尽管会受到巨大的冲击,但是互联网将是软件企业“再见青山”的一个有力渠道; 同时,软件产品也将为互联网带来新业务、新模式和新的生产方式。

SaaS也可能再造软件世界。如今,Salesforce公司的下一目标,就是建造自己的网络应用软件平台Force.com,这一平台可作为其企业自身软件服务的基础,又可以供企业的程序员在上面开发应用程序。

Salesforce的发言人表示,一开始,开发人员都利用Force.com来创建Salesforce客户关系管理软件的附加程序,而如今,与Salesforce产品无关的软件研发日益增多。比如,游戏开发商电子艺术公司(Electronic Arts)就在Force.com平台上开发了一款员工招聘应用软件,而软件厂商蔻达公司(Coda)也在该平台上创建了一款总账应用程序。

SaaS模式尚待成熟  

尽管SaaS模式铺天盖地,很多人也认为它是大势所趋,但是从用户角度来看,有些人还是对它心存疑虑。把自己企业的各种数据交给互联网公司来管理,这样安全吗?

据Gartner公司的调查,在307家美国中小企业中,有45%表示,他们不放心把资料交给诸如SaaS供应商的第三方。只有7%的中小企业坚信SaaS适合他们的企业,还有17%表示愿意考虑SaaS,但要等它的应用更加普遍。

但王涛指出,其实没有必要太担心SaaS模式的安全问题,这就好比在银行里存钱一样,把钱存在银行里也要面临像SaaS模式一样的风险,但是绝大多数人还是要把钱存在银行中,因为在某种程度上,银行还为用户起到了保障作用,它可以给人们带来利息,同时提供保护服务。SaaS也一样,它会在基础软件的基础上提供一些增值服务,来保障用户更好地使用该软件产品,比如在企业办公软件的基础上,给用户开发一些企业内部通信的功能。

不过,任何事物都有两面性,SaaS在为用户提供共享和便利的同时,也带来了新的问题。用友集团副总裁郑玉林认为,目前的SaaS模式还存在着三点不足: 第一是复杂业务流程不能给以满足。很多企业有个性化需求,这些SaaS目前做不到; 第二是安全问题。人们需要知道自己的一些保密信息,比如财务、机密数据等交由SaaS服务商保管的资料是否安全; 第三是技术问题。因为SaaS与传统软件业相比还属新兴业务,在互联网上的编程技术比在桌面上编程技术要简单,从而造成很多网络软件的界面并不是很友好,但是随着时间的推移,这种情况将会得到改进。

二、云计算  VS   传统软件 颠覆还是改变?

云计算改变软件开发模式

在近日召开的VMworld 2008会议上,VMware做了一系列宣布,其中最令人瞩目的是,VMware将通过改造自己的基础设施产品与技术,积极进军云计算领域;前不久,Google也发布了Chrome浏览器,Google希望通过Chrome,可以将原有服务器端的工作转移到客户端来实现,将用户的电脑加入到“云”中,实现计算能力的大幅提高。Google的意思很明确,它将通过Chrome浏览器来部署云计算,将用户引向SaaS模式,以此来挑战微软的传统桌面软件模式; 9月22日,甲骨文也宣布,授权自己的几款软件产品在亚马逊的云计算环境中执行。

自此,无论是硬件公司还是软件公司,抑或是平台技术公司,几乎所有的IT厂商都在努力向云计算靠拢。

最近,比尔·盖茨在微软亚洲研究院10周年创新论坛上的言论,更是足以让软件业感到兴奋。他说:“软件行业永远令人兴奋,因为软件的边界一直在不断地改变, 云计算将使软件用在很多互相联网的电脑上,这会大大降低计算的成本。”在盖茨看来,人和软件的互动正在发生改变,当软件用在很多互相联网的电脑上时,就是“云计算”,它会降低计算设备和计算的成本。

“所有的软件都可以连接起来,可以说这是互联网的革命。”比尔·盖茨说,“当你需要写一个程序时,只需要呼叫其中的一个服务器,而不需要拿到所有的计算资料,这会大大提高人类的生产力。”比尔·盖茨所提到的,正是云计算的魅力所在,它不仅改变了软件交付模式,更加改变了软件开发模式。

为了让这种趋势发展得更快些,早在去年,IBM就联合Google开始了对这方面人才的培训。IBM和Google表示,两家公司均将各自出资2000万~2500万美元,为从事计算机科学研究的教授和学生提供所需的电脑软硬件和相关服务。

IBM和Google先期将提供400台左右的计算机,并计划最终在多个地点装备4000台计算机,这些计算机与6所美国大学相连。两家公司将投资建设多个大型数据中心,通过数据中心,学生们可用互联网进行远程编程和研究,这种方式被称为“云计算”(cloud computing)。在新模式下,计算业务将日益远离个人桌面和公司计算中心,成为一种通过互联网处理的服务。

两家公司提出了“云计算”编程技术。“其实云计算编程技术不难理解,就是编程人员将在互联网所提供的软件、硬件上写程序,或者是通过互联网上提供的计算资源进行协同研究,而本地的主机好比你进入这个互联网的界面。”IBM的工程师这样解释道,而此时的互联网资源即云计算。

这一计算模式颇受高校学者们的欢迎,因为它带来了计算设备成本的节约。不仅仅是学术界,连企业界也早就接触了类似的变化。只要稍加观察各云计算巨头的下一步计划,就可以发现,Google、Salesforce等企业都在倡导“平台及服务”,即他们搭建云计算平台,企业可以在“云”里开发自己的应用程序,并把它推向最终用户。

IBM的创立人托马斯·沃森曾表示,全世界只需要5台电脑。世界上所有的软件都将装载在这5台电脑里,其他人呢,只需要一根网线,连接上,“享受”就好。比尔·盖茨在一次演讲中则称,个人用户的内存只需要640kb就足矣。

据云计算的推崇者们解释,在日后的软件开发中,程序员不必在本地安装软件,也不必在本地配置多大的内存,只需要打开网络,在“云”上租用合适你的CPU、存储以及软件就可以了。

云计算难以颠覆软件商业模式

“这是一个时代的变迁,云计算会让传统软件产业经历一场阵痛。”一位云计算推崇者这样说道,其中受影响最为明显的,当然是软件界“执牛耳者”微软。据有关媒体报道,由于受到在线办公软件的冲击,自去年秋天始,微软选择性地降低了其办公软件的价格。在限定的时间内,学生购买办公软件office下载版,价格仅为60美元,而在此之前,普通版的价格约为460美元。

然而,与SaaS的情况颇为相似的是,今天的云计算并不足以推翻传统的软件商业模式,毕竟对于资格老道的传统软件来说,云计算还是一个尚不成熟的“少年”。

而最近一系列影响较大的网络故障,让人们对云计算的可靠性产生了实质性的担忧。今年2月和7月,亚马逊的“简单存储服务”(Simple Storage Service,简称S3)两次中断,导致依赖于网络单一存储服务的网站被迫瘫痪。今年7月,被认为将要取代微软Office等传统应用程序的Google Apps(在线办公应用软件)服务中断,用户的文件只能“呆”在“云”中; 8月,Google的云计算服务出现严重问题,Blogger和Spreadsheet等服务均长时间宕机,Gmail服务两周内3次中断,不满的用户纷纷到TwITter网站上发出抱怨。

对这些处于初创期、公司的用户黏性还不大的企业来说,网站瘫痪的损失以及服务的中断极易动摇他们的信心——这也是云计算不成熟的表现。

“在云计算模式下,所有的业务处理都将在服务器端完成,服务器一旦出现问题,就将导致所有用户的应用无法运行、数据无法访问。”一个中小企业的用户这样向记者表示,毕竟这些云服务的规模十分庞大,在出现问题之后,很容易导致网民对于云计算模式的怀疑,动摇用户对云服务的信心。

针对云计算的合理成本、可靠性以及安全性,Google Apps业务开发经理Jeff Keltner反驳道: “人们认为驾驶自己的汽车要比乘坐飞机更舒适,但是统计数字显示,乘坐飞机更加安全。当我们想到云计算的时候,应该把云计算的风险与现有业务环境的风险做一个对比。”

但美国利福尼亚州公用事业委员会的CIO Carolyn LaWSon显然不同意这一观点——“从政府的角度来讲,我们不会将所有的数据信息都迁移到‘云’中,因为我们的数据包括个人社会保障号码、驾驶执照,以及子女信息等,公众把他们的个人信息交给我们,希望我们能够很好地保护这些信息。如果我们将这些信息交给一家云计算公司,而这家公司非法将这些信息出售的话,我们该怎么解决?我们要承担这个责任。”

在现阶段,云计算模式似乎更加适合那些因为新项目,而紧急需要计算处理能力的用户,他们可以调动云环境中的所有计算实例,而且在不需要的时候关闭这些应用。

对用户而言,在使用云计算时,更重要的是在云计算下增强安全意识,清楚地认识到风险,并采取必要的防范措施来确保安全。Gartner咨询公司副总裁兼分析家David Cearley表示: “使用云计算的局限是,企业必须认真对待敏感问题,企业必须对云计算发挥作用的时间和地点所产生的风险加以衡量。”企业通过减少对某些数据的控制,来节约经济成本,意味着可能要把企业信息、客户信息等敏感的商业数据存放到云计算服务提供商的手中,对于信息管理者而言,他们必须对这种交易是否值得做出选择。

尽管IT厂商们进攻云计算的手段各异,但他们都不得不承认的一个道理是: 在互联网上开发、部署和交付软件服务是大势所趋,而云计算在其中充当了重要的角色。而随着技术和服务的进步,云计算与软件的关系将会变得越来越清晰。

三、云计算 VS  SaaS 黄金搭档?

“云”托起SaaS

云计算与SaaS是怎样的关系?

在“云计算”时代,“云”会替这些SaaS供应商们做存储和计算的工作。“云”就是计算机群,每一群包括了几十万台、甚至上百万台计算机。“云”的好处还在于,其中的计算机可以随时更新,保证“云”长生不老。Google的工程师谷雪梅则认为,PC时代好比每个人要用电,都得自己购买发电机; 而“云计算”时代,每个人不必拥有发电机,直接从大型发电厂买电就好。Google就有好几个这样的“云”,其真正的竞争力也在于有这些“云”,他们让Google有了无与伦比的存储和计算全球数据的能力。而其他IT巨头,如微软、雅虎、亚马逊也拥有,或正在建设这样的“云”。

事实上,云计算可以对SaaS起到很好的补充作用: SaaS强调最终的应用,云计算则侧重对底层架构和资源的充分利用,可以帮助SaaS提供商解决硬件或带宽等资源不足的问题,并实现降低成本的目的。SaaS厂商如果能和云计算厂商携手,必将能促进产业的进一步繁荣。

而SaaS在国内的风生水起,或许能让云计算真正找到用武之地。IBM大中华区云计算项目总监朱近之在提及云计算对SaaS的好处时说: “云计算对于支持SaaS发展有着天然的优势,通过灵活支配硬件资源,可以满足SaaS提供商的各种应用需求。”她还介绍说,IBM已经开始尝试和SaaS提供商在云计算方面开展合作。

SaaS厂商 静观“云”变

虽然云计算和SaaS的珠联璧合,被看成是传统软件的终结者,但对于两者之间的关系如何,业界目前的分歧却很大。从国内现状来看,SaaS厂商虽然对云计算表现了浓厚兴趣,但因为没有成功的案例,多数厂商仍持观望态度,等待出现第一个吃螃蟹的人。

金算盘公司刘古权博士告诉记者,金算盘也在尝试开展SaaS业务,也希望未来能和云计算厂商能有更多合作,不过目前并没有具体的合作计划。他还估计,像阿里软件等实力比较雄厚的SaaS厂商,或许会成为云计算最早的尝试者。而近期在阿里软件联合微软召开的共推SaaS的会议上,阿里软件总裁王涛也告诉记者: “SaaS要进一步发展,必须依靠云计算的支持。”而在云计算方面,他们也正在积极地建设中。

这两家厂商的观点或许代表了国内多数SaaS厂商的看法,对他们来说,云计算还是一个新事物,虽然看起来很美好,但还不足以抵消他们心中的种种疑虑。

有很多用户就提出疑问,云计算厂商和IDC有什么区别?(受成本等各方面因素限制,目前国内SaaS厂商多数没有自己的数据中心,而是租用IDC。)

对此,IBM的一位云计算专家解释了两者之间的区别: “IDC只是将机器租给用户,并不保证当用户的负荷量突增的时候,可以马上增加机器或调配其他可用资源,操作不够灵活; 而云计算是将软件和硬件结合起来,可以很快满足用户需求,这是IDC做不到的。”

“在中国,SaaS模式拥有巨大的市场需求。因为中国中小企业数量巨大,他们在IT方面的需求,实际上以前没有得到很好的满足。”王涛对SaaS在中国的发展显得非常有信心。

不仅是阿里软件,自打SaaS诞生以来,它就受到了互联网公司的青睐。SaaS的多种便利,让更多的中小用户开始选择SaaS。根据IDC的统计,去年全球在线软件服务总收入超过40亿美元,而且到2009年可能达到107亿美元,年增长率达到令人咋舌的21%。

看到这个大蛋糕的何止互联网公司。在传统软件业中,不仅是微软、IBM、甲骨文等国际公司不断向SaaS发起攻势,就连国内软件厂商金蝶、用友等也丝毫没有懈怠。早在2000年初,金蝶发布友商网、用友推出伟库网等一系列的举动,就可以看出,传统软件行业已经在纷纷发展SaaS。

然而经过几年的发展,这些传统软件公司在经营SaaS业务时,并没有像他们在经营传统软件时来得顺手。“比如微软由于在中国的网络用户群的限制,SaaS还没有发展起来,而其他软件巨头的声音也不是很大。在国内的情况也是如此,许多国内的传统软件厂商尽管一直在跟进SaaS,但却一直没有太多的作为。”某业内专家如此表示。

“主要的原因在于: SaaS供应商更专注于软件的开发,对网络资源管理的能力较弱,而SaaS模式要求供应商必须有一个好的互联网计算环境,否则随着这种模式的发展,往往会导致供应商花费大量资金购买服务器和带宽等基础设施,但提供的用户负载依然有限。”该专家表示,后出道的“云计算”提供了一种管理网络资源的简单而高效的机制,其分配计算任务、工作负载重新平衡、动态分配资源等功能,可以向SaaS厂商提供不可想象的巨大资源,满足用户的海量需要。

链接:各式各样的“云”

出于对自身能力以及优势的考虑,每家厂商所倡导的云计算并不相同,这也导致了业界在理解云计算时产生了一些混乱,以下介绍几种规模较大的云计算。

亚马逊

亚马逊的”云“名为亚马逊网络服务(Amazon Web Services),目前主要由4块核心服务组成: 简单存储服务、弹性计算云、简单排列服务以及尚处于测试阶段的数据库服务。换句话说,亚马逊现在提供的是可以通过网络访问的存储、计算机处理、信息排队和数据库管理系统接入式服务。

要提供这些服务,需要建造庞大的IT基础设施,而这些都需要亚马逊强大的数据中心做支持。用户只需按照他们所消费的服务付费。

Google

Google公司围绕因特网搜索创建了一种超动力商业模式。如今,他们又以应用托管、企业搜索以及其他更多形式,向企业开放了他们的“云”。

今年4月,Google推出了Google应用软件引擎(Google App Engine),这种服务让开发人员可以基于云计算环境编写应用程序,并可免费使用Google的基础设施来进行存储。Google云计算的优势在于,所有的应用程序都可以存在于云计算中,用户永远都不需要安装任何东西,不需要管理软件升级和安全补丁。

Salesforce

Salesforce是SaaS厂商的先驱,它一开始提供的是可通过网络访问的销售自动化应用软件。而如今,在云计算热潮的蔓延下,Salesforce在总结了自身“网络+软件”的优势之后,开始建造自己的网络应用软件平台Force.com,这一平台可作为其他企业自身软件服务的基础。Force.com包括关系数据库、用户界面选项、企业逻辑以及一个名为”Apex“的集成开发环境。程序员可以在该平台上,对他们利用Apex开发出的应用软件进行测试,并提交完成后的代码。

微软

很多厂商都认为,未来绝大部分的IT资源都将来自云计算,但微软却并不这么认为。微软表示,微软的宏伟计划是“提供均衡搭配的企业级软件、合作伙伴托管服务以及云服务”。简而言之,微软将其称为“软件+服务”。

不可否认的是,在云计算当中,微软有着别家不具备的应用软件优势。然而微软也有缺点,那就是没有自己的数据中心做支持。多年以来,微软一直都是在租用大型的数据中心,但现在公司已开始设计、构建并拥有自己的数据中心。

Sun

让云计算变得简单易用是Sun目前的核心研发方向,它已推出了两种相关的服务,其中之一是Network.com,它集合了大量网格化的在线应用软件,按使用次数进行收费; 另一个则是Project Caroline,这是一项提供云资源的计划,主要面向从事网络应用软件和服务研发的专业人员。

而如今,Network.com正在逐步演变为“虚拟按需数据中心”,用户可以根据企业的需求变化来实时地调整对它的使用; Project Caroline的目标则是成为SaaS供应商的托管平台,这一点和Salesforce的“平台即服务”计划颇为相似。

IBM

2007年、IBM公司发布了蓝云(Blue Cloud)计划。用IBM自己的话说,这套产品将“通过分布式的全球化资源让企业的数据中心能像互联网一样运行”。蓝云包括虚拟化Linux服务器,并行工作负载日程安排和IBM的Tivoli管理软件。IBM的云计算几乎包括了它所有的业务和产品线。

 
Photo 1 of 2
感谢访问!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.