`
canonical
  • 浏览: 367028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]级列设计理论

阅读更多

     理论物理的优美在于从少量基本原理(如最小作用量原理)出发推导出整个理论大厦。而在软件设计领域却充斥着林林总总的"最佳实践". 太多的规则只会意味着没有规则。软件设计领域的现状说明这个领域还处于非常稚嫩的阶段,应该从其他领域借鉴更多的知识。在我前面的blog中已经说明了在 软件中的一些具体的分析技术。但如何有效的应用这些分析技术,我们还需要一些指导性的理论框架。如果把软件设计放在更加广泛的系统工程的背景下,一个合适 的支配性原理应该是最小复杂性原理。即在软件分析过程中我们所作的一切,无论是面向对象分析,基于工作流的分析等等,其目的都是尽量降低系统构建的复杂 性。只要能够有效降低系统构建的复杂性,那所采用的方法和所建立的模型就是好的。复杂性是唯一的度量,而不是是否符合某人的观点,是否采用流行的技术等 (当然,采用流行技术往往意味着降低了和其它系统交互的复杂性)。
     李小龙说:简单是美。但是否最简单的就是最好的?科学界对此却有着否定的结论。关于复杂性的一个很深刻的基本事实是,复杂性是分级的,不同复杂性层次的事 物有着本质的差异,不能期待一个较低复杂性的方法能够解决一个更高复杂性层次上的问题。所以Einstein说:make everything as simple as possible, but not simpler。复杂性级列的存在意味着,随着我们获取到更多的信息量或者因为系统自身的发展,当我们所建立的系统的模型沿着复杂性级列演化的时候,我们 所提出的解决问题的方案也必须作相应的演化。即我们提供的不是一些固定的解决方案(solution),  而必须是一个完整的策略(strategy)。这样我们就不是孤立的看待一个问题, 而是要看到它的过去,现在和未来。
     在作分析的时候,我们都知道"从一般到特殊,从特殊到一般",但如何科学的,有步骤的去做呢? 我从等离子体物理的BBGKY Hierarchy中学到了一个基本的分析框架: 级列理论.这个理论首先定义了一个最普适的模型:气体由N个完全相同的原子组成, 其动力学由N个互相耦合的Newton力学方程来描述。理论的第二步是从最极端的简化开始,假设所有的原子之间不存在相互作用,即假定原子之间是相互独立 的。则得到Vlasov方程。理论的第三步考虑系统的复杂性逐渐增加,当气体密度较高,必须考虑分子之间两两碰撞的时候,得到Boltzman方程。当需 要考虑更高阶的相互作用的时候,我们得到关联动理学方程,如此继续下去建立一个无穷级列。
抽象一些地说,该理论包含如下内容:
. 建立能够描述所有情况的最广泛的模型M0, 该模型定义系统的边界
. 建立一个包含最少假设的最简单的模型Mn,该模型作为求解的基础和基本的参照。
. 建立一个从Mn到M0的复杂性逐渐增加的模型级列,确保在每一个复杂性的层次上,都存在着对系统有效的建模,而且在求解高阶问题的时候,可以参考较低阶问题的解。
   如何从这种无穷级列中做出选择,必须根据具体应用情景而定,Vapnik在其统计学习理论中详细描述了这种求解策略:
 综合代价 = 训练数据与模型预测之间的偏差 + 模型自身的复杂性
    学习 = minimize[综合代价]
即在能够解决问题的方案中选择最简单的一个。


 建立级列理论,首先需要建立最广泛的模型。在量子力学中,确立了如下基本概念:
 1. 确定性的态。
 2. 所有态构成完备的态空间。
 3. 系综(即态的集合)的动力学。
   首先,状态的确定性非常重要。即使在量子力学中,量子态存在几率诠释,态函数本身在数学上仍然是确定性的,即在任一时刻,任一地点存在唯一的值。如果我们 的讨论没有一个确定性的基础,那所有的推演都将变得极为困难(模糊数学目前提供的帮助很少)。而且确定状态本身就是一个极为重要的简化过程。因为一般我们 可以建立Markov模型,使得系统的演化只与系统当前的状态有关,而与系统的历史状态无关,因此大大减少系统模型的参数。
   其次,状态演化的结果必须仍然处在态空间中,否则我们在该空间中建立的理论就存在着"盲点",存在着失效的可能。
   第三,我们研究的不是单个状态的演化,而是综合考虑相邻的状态。
   在软件世界,理论物理的这些真知灼见依然有效,只是在所有的概念前加上了"有限"这个修饰语。有限状态机(Finite State Machine)正是理论计算机科学研究的基本模型。所有的计算机都可以看作是有限状态的,因为所有的内存和硬盘能够表示的状态数是有限的。目前计算机科 学中几乎所有重要的理论成果都和有限自动机理论相关。在软件编制的过程中,我们第一步所要做的也是确定系统的状态。与物理系统所不同的是,我们认为物理系 统的状态及其演化规律是客观存在的,而软件系统中的规则是由开发者确立的,我们必须尽一切可能使得系统的状态能够被确定下来。例如,我们编制getXX ()和toString()等函数来暴露系统的状态,以确保系统状态的可观测性;使用assert断言来确保函数执行时的状态;尽量减少函数的副作用来避 免依赖函数调用历史。软件世界中态空间不完备的例子最著名的就是Y2K问题。所以很多人说,软件中最大的bug就是地址空间不足,因为这是任何技术手段都 无法解决的问题。

分享到:
评论

相关推荐

    《如何提高小学教师的课堂导入技能》立项申报书——张维卿.doc

    10. 研究创新点:申报书中并未具体列出研究创新点,但可以推测,研究的创新可能体现在针对农村小学特定情境下的课堂导入策略创新,以及如何将理论研究转化为实际教学改进措施。 总结来说,这个立项申报书聚焦于提升...

    完成Excel导入mysql思路.pdf

    设计数据库的过程包括确定表中的列,每列的数据类型,以及它们之间的关系,比如主键和外键约束等。 2. 基础类创建 在Java的MVC架构中,基础类通常指的是POJO(Plain Old Java Objects,普通Java对象)类,它对应于...

    二级MS OFFICE教程

    - **数据排序与筛选**:根据一列或多列数据进行升序或降序排序,使用条件筛选。 - **图表制作**:柱状图、折线图、饼图等,以及如何自定义图表样式。 - **数据分析工具**:使用数据分析工具进行统计分析,如数据...

    级计算机理论一模试题.pdf

    15. **数据库管理**:在Access数据库中,数据表是重要对象,设计视图用于设计表结构,数据表视图用于显示数据,可以导入其他数据库的表。 16. **数据表操作**:在数据表视图下,冻结列后可以修改字段内容,但无法...

    学习项目10二级放大电路DXP印制电路板设计与制作.docx

    完成设计后,需要生成网络表(列出所有元件及其连接关系)、电气检查报告(验证电路的电气正确性)和材料清单(详列所有使用的元器件及其数量)。这些文件对后续的生产制造过程至关重要。 **5. PCB制作** 在HW-3232...

    用ASP.NET写的ACCESS数据库导入SqlServer方法

    ASP.NET是一种基于.NET框架的服务器端编程模型,用于构建动态Web应用程序。...这是一个涉及多个技术层面的过程,包括数据库设计、数据迁移策略以及ASP.NET编程技巧,都需要扎实的理论基础和实践经验。

    Spark+ClickHouse实战企业级数据仓库视频教程19章全

    课程会深入讲解ClickHouse的设计理念,如其列式存储、数据压缩和并行查询优化等特性,以及如何利用这些特性实现高速的数据查询。同时,还会教授如何配置和管理ClickHouse集群,确保数据仓库的稳定性和可扩展性。 在...

    S2 SQL高级数据库管理上机部分

    SQL是用于管理和处理关系型数据库的强大语言,它提供了丰富的功能来执行复杂的查询、数据更新、数据库结构修改以及数据导入导出等任务。在这个上机课程中,你将有机会实践这些高级技巧,提升数据库管理能力。 首先...

    教师资格证高级数学知识点教师资格证知识点总结.pdf

    5. **矩阵理论**:在高等数学中,矩阵的行空间和列空间是线性代数的重要概念。题目中提到,一个矩阵的行空间维数和列空间维数是相等的,这是由于矩阵的秩与其行空间和列空间的维数相同。 6. **“数学化”过程**:...

    计算机二级Python语言程序设计-模拟试卷2.pdf

    【计算机二级Python语言程序设计-模拟试卷2.pdf】 在计算机二级考试中,Python语言程序设计是重要的考试科目,涵盖了许多IT基础知识。以下是根据题目内容整理的一些关键知识点: 1. 数据库理论: - 实体与联系(E...

    简易计算器课程设计

    【简易计算器课程设计】是一个基于C语言编程和嵌入式技术的项目,旨在通过使用LPC2106 ARM芯片实现一个基本的计算器...通过这个项目,学生可以深入理解嵌入式系统的设计过程,以及如何将理论知识应用于实际工程问题中。

    .net4级考试 microsoft微软程序员.net4级开始题集之sql部分

    在准备.NET 4级考试的SQL部分时,考生需要通过实践来深化理论知识,并熟悉SQL Server Management Studio(SSMS)的使用。同时,理解.NET Framework如何通过ADO.NET库与SQL Server进行通信也是至关重要的,这涉及到...

    北京林业大学操作系统课程设计多用户文件系统(包含cpp和实验报告书)

    在模拟的磁盘驱动器中,利用文件系统的基础理论,管理记录在磁盘驱动器中的内容。 2.书写一个命令行形式的驱动器内容访问接口,即仿照cmd.exe的形式完成磁盘驱动器中内容的查看。 要求实现的命令包括:cd、dir、...

    二级MySQL数据库程序设计(三)

    - 设计方法:包括关系模型、ER模型、范式理论(1NF, 2NF, 3NF, BCNF等),用于优化数据存储和查询效率。 2. **MySQL简介**: - MySQL概述:开源、关系型数据库管理系统,广泛应用于Web应用开发。 - 特性:高可靠...

    全国计算机等级考试二级Access样题及答案.pdf

    全国计算机等级考试二级Access部分主要涉及数据库基础理论和Access数据库的实际操作。Access是Microsoft Office套件中的一个关系型数据库管理系统,适用于中小型企业或个人管理数据。以下是对考试内容的详细解释: ...

    自己动手设计数据库

    关系模型是数据库设计的核心,它由一组表构成,每个表包含列(字段)和行(记录)。表之间的关系可以通过外键(Foreign Key)来建立,确保数据的一致性和完整性。 三、需求分析 在设计数据库之前,首先要进行需求...

    hbase轻量级中间件simplehbase v0.1简介

    2. **simplehbase.pdf** - 另一份文档,格式可能是PDF,可能包含了更详细的理论背景、架构设计以及安装部署指南。 3. **simplehbasetest** - 这可能是一个测试目录,包含了单元测试、集成测试的代码,用于验证...

    PKPM结构设计软件应用教程

    8. **案例实战**:通过实际项目案例,详细演示从建模到设计完成的全过程,让学习者能够将理论知识应用于实际工作。 9. **常见问题与解决策略**:列出在使用过程中可能遇到的问题及其解决方案,帮助用户解决困扰,...

    全国计算机等级考试Python二级考试教案.rar

    1. **基础语法**:涵盖Python的基本数据类型(如整型、浮点型、字符串、布尔型)、变量、运算符、流程控制(条件语句、循环结构)、函数定义与调用、模块导入等。 2. **面向对象编程**:理解类与对象的概念,类的...

Global site tag (gtag.js) - Google Analytics