首页/文章/ 详情

国产工业软件算法专家系列之周培德(北京理工大学教授)

1月前浏览351



周培德教授作为我国计算几何算法界的权威专家,曾独立发明各类几何算法236个,解决相关问题200多个,并被世界著名几何专家罗密欧誉为“天才”数学家。

周培德教授,1941年生,湖北省武穴市人。1965年毕业于武汉大学数学系,任北京理工大学计算机系教授,主要研究方向为计算机算法分析与设计、计算几何。

  主要成果: 至2016年9月,个人独立发明计算机算法527个,(其中386个已编码,126个未编码),提出64个问题(其中37个已被作者研究,27个问题是计算几何领域的困难问题),发表学术论文70余篇,出版学术专著5部,授权专利4项,出版研究生教材2部,参与撰写《现代数学手册》,《计算机科学技术百科全书》(第三版),《百科自学大全》等。

  主要论著有《计算几何--算法分析与设计》、《算法设计与分析》、《计算中的基本理论与方法》。代表性论文有《求解K-中心问题的快速算法》、《平面散乱点线集三角剖分的算法》、《平面线段集三角剖分的算法》、《连接不相交线段成简单多边形的算法》等。


  此外,在30多年的教学工作中完成了大量的教学任务。退休以来,专心从事计算几何及其应用领域的研究工作,为6个课题组,公司设计了20来个算法,在多种期刊上发表学术论文20来篇,提出一批新问题及解。

  获得奖项:北京市科学技术奖一等奖(排名第一,2008年)、国家科技进步奖二等奖(排名第三,2011年)、机械工业部优秀教材一等奖(唯一,1996年)工业和信息化部离退休干部先进个人奖(2011年)、北京市教工委”学习之星”奖(2013年)



1.学术专著----《计算几何----算法设计与分析》

国内比较系统的介绍计算几何的图书周培德先生的《计算几何——算法设计与分析【M】,北京,清华大学出版社,2016年》。它“属于欧几里德的几何构造,即由算法和复杂性分析所组成。”(作者语)。“突出Shamos定义的计算几何中研究的几何问题的算法与复杂性理论,如欧几里德货郎担问题、最小生成树问题等”。该书较好提及算法在理论状态下的正确性。

周教授的研究成果结晶为一部厚厚的学术专著----《计算几何----算法设计与分析》(清华大学出版社)。第一版于2000年出版后,广获好评,2005、2008,2010,2016年先后出了第二版和第三版,第四版,第五版,并成为“中国计算机学会学术著作丛书”中有较大影响的一部专著。它至今也是国内唯一一部有关计算几何方面的著作。同国内大部分算法设计与分析的著作中主要介绍国外的算法不同,周教授的这部书中绝大部分算法是作者自己提出来的算法,这一点使这本书特别与众不同和引人注目。




基于周教授在算法领域的丰硕成果和影响,《程序员》杂志在2006年4月推出“算法的力量”专刊的时候,专访了两个专家,其一是大名鼎鼎的李开复,另一位就是周教授。

周教授的工作也得到了国外同行的肯定。周教授根据自己在计算几何领域几十年研究的经验和体会,经过深入思考,提出了该领域15个有待解决的问题(爱因斯坦曾经说过,提出问题比解决问题还重要!)。对此,美国史密斯学院计算机系主任、世界闻名的计算几何专家欧洛克(Joseph O’Rourke,他是权威的Computational Geometry in C 一书的作者)在发给周教授的电子邮件中说:“你列出的15个问题说明你是天才,有创造力”(Your list of open problems shows you are talented and creative.)。

  认识周教授的人都知道,他身体单薄,是一个典型的文弱书生。是什么力量推动周教授忘我地工作,并且有如此成效?主要有两个原因。一个是兴趣,周教授对计算机算法情有独钟,长期研究它,不仅不厌倦,反而产生了浓厚的兴趣,一天不研究算法就觉得浑身难受,一个月不出成果就感到十分惭愧,就要检查自己的创新能力是否减退了。另一个是责任心,周教授看到目前国内出版的算法书籍中,几乎无一例外都是介绍外国人发明的算法,难以见到中国人自己的创造,感到这同中国这样一个大国的地位不相称,“中国人不应该只在运动会上拿金牌,应该在科学技术方面同样对人类做出贡献。”

周教授说:“也许这就是付出吧,没有付出,哪有收获,所以要准备吃苦、吃大苦。在钻研紧张的时候我常常吃不下饭、睡不好觉,严重影响身体健康,甚至影响寿命。不过这是合算的,因为这些研究成果丰富了学科的内容,并为后人提供了较为有效的算法,同时本人也获得了成功之后的快乐,这种快乐与花钱买来的快乐是无法相比的。”

  周教授现在在业界已经出了名,登门拜访、请教的人不少,企业的技术人员,高校的教师、博士生…都纷至沓来,甚至科学院评选院士也请他审查材料。周教授对每一个来访者都热情接待,尽其所能的提供帮助(这些帮助常常是无偿的),并始终保持谦虚的态度。

同时期几何算法专家:上海交大教授何援军《计算机图形学算法与实践》



作为一种历史,从某种意义上来说,该书的另一成果是将当时国内在船舶、航空等行业大规模实施的关于“数学放样”及曲线、曲面“光顺性”理论的研究上升到计算几何的学科层面。而著作的内容本身则偏重于几何的创建(而且主要是曲线曲面)。

2.周培德访谈录



周培德,1941年生,北京理工大学退休教授,武汉大学数学系毕业。从1982年开始研究算法,雪独立发表学术论文七十余篇,并有两本专著及两本研究生教材,退休后仍然从事算法设计方面的工作,帮助很多国内企业解决实际生产问题。

一上来,周教授就为我们展示了如下这张图



这是周老师退休以后,一位对算法频有兴趣的皮鞋制造商专门请周老师设计的下科算法。随后,他便和记者开始佩佩而谈。

记者:现代计算机算法大致应当怎样分类?各个分支的主要情况是怎样的?

周培德:如果让我对11法发展方向作全面的介绍恐怕不合适。但是算法分类,我还是有一定的了解。算法按照基本操作分有两类,分别是数值算法与非数值算法。数值算法主要是以算术运算来进行的,大学的时候有一门课程是计算分析,后来叫做数值计算,这门课程当中介绍的基本上都属于数值算法:而非数值算法,也就是我所关注的这个部分,主要通过计算机的赋值,比较、重写或者逻辑运算等操作解决问题。自前我所关注的主要方面是在非数值算法,它主要解决如下的一些问题:排序、搜索、串匹配、图、组合学,几何学,数论等。

按执行顺序又分成串行算法与并行算法。自前我们常常看到的计算机,主要都是串行计算的机器,并行机当然也有,但是相比电行计算机,数量上要少得多。

此外还有确定性算法以及随机算法的区分。确定性算法在应用中占了很大的比例。大体上,一个计算序列中,上一步计算完毕以后,下一步的计算是确定的。那么随机算法或者叫概率算法,其上一部的计算与下一步的计算衔接是不确定的,更多的时候,它求得的解其正确性有一定机率,而不是确切的。比如是素数的判定等算法。

记者:有人说算法是软件的灵瑰,有人则认为现代软件开发中,算法的地位已经大大下降了,您怎么看?请您结合亲身经历该该对与算法重要性的认识。


周培德:算法是计算机科学的精髓更是软件的灵魂。上述的观点,我是非常认同的。我还要说,无论怎样强调算法的重要性,都是不过分的。这并不是说我个人是研究算法的。所以就王婆卖瓜,自卖自夸。而是算法本身就应该受到应有的重视。目前软件开发中算法的地位大大下降的趋势是不正常的,其结果必然极大影响软件产品的质量。这种趋势应尽快扭转,不研究算法势必带来软件开发水平停带不前的现状。与国外软件产业相比,必然处于落后的地位,根据我了解的情况,中国的软件开发水平相比印度要落后一大截,尤其是在软件开发的一些规范上做得不如他们好。国内的软件开发人员做软件都是一个人一个样。另外,他们对于算法的重视程度也比我们要高得多。因此我们应该更加重视这个问题,长此以往,对基础技术不重视将对国家经济、科技的发展将造成影响。

记者:现在主流的开发平台上都对主要的算法与数据结构进行了高效的封装,例如STL、JavaColection,压缩、加密解密等程序库也随处可用,一般开发者可以很容易地使用一些经典的算法。请问在这种情况下,还有必要把算法钻研得很深吗?

周培德:这是一个老问题,在上个世纪八十年代,就有人提出这个问题。但经过实践证明,这种“不研究算法也可以的观点是错误的。程序员使用现有的程序库也可以,这样能够避免重新造轮子针对一些公共的,基础的,通用的软件确实可以为提高生产力提供价值。但现有程序库往往都不能做到包罗万象,在实际工作中提出的问题是五花八门的,需要解决这些实际问题必须研究新的算法。程序库相当于人们挖了一口井,如果只喝到这一口并中的水,欣赏这一口并下的风景,势必会让人们的眼光过于狭隘,因此不能满足于井底之蛙的角色。

我们学校在90年代初期,有几个老师提出“数值分析”这门课应该停开,其原因正是因为该课程当中的很多算法都已经包含在许多标准的程序库中了。后来这门课就真的停了好几年,我当时去我系主任,我说我不讲这门课,但是我非常反对将这样一门宣要的课程停开。将来我们的学生毕业以后,只会用这些告定的程序,几个参数一套,就让程序跑起来。但是在实际工作中,如果涉及到一些条件变化。他们就不知道该怎么办了。再后来。这门课又重新开起来了。后来我有毕业出去的学生回来,谈起这件事情深有感触。他们说在大学读书。应该学习通过自学方式掌握难以学懂的知识,这种能让人产生启发的课程不能停开啊!

你比如我刚才给你看的那张按下料算法画出的图,这就是程序库中不具备的,需要你自己去设计,自己去开发。

记者:BrianKemighan和RobPBke在《程序设计实践》里说,常用的算法与数据结构是很少的,而真正要具各的是高超的洞察力和算法设计能力。您认为应当如何培养洞察力和算法的设计能力?

周培德:培养洞察力与算法的设计能力要做到以下三个方面:

1.雄厚的基础

包括数学、程序设计、算法设计方法、数据结构以及程序语言等。比如我有些学生做可视图,就是机器人在一个房间里面自由的走动和观察房间。这里面就涉及到一个问题,一些通过传感器获得的点到底是应该排列还是组合?这就涉及到数学基础了。

2.灵感

经过长时间的训练、积累与沉淀才能产生。这不是一朝一夕或者几个月的事情,算法是越学越熟。我现在帮忙带的两个博士就有差别,好学生能提出很多问题,因为我每次给他布置的问题都认真去解决,随后,他自己也能提出有价值的问题了。比如我最近一个课题,“可见光物体的边缘提取“。光照在物体上会产生影子,但是计算机没有办法去区别影子是否属于障碍物。如果是自动运行的汽车,看到这种影子怎么办?这些问题都需要用灵感去解决。

3.毅力

经得起失败与成功的考验,还要经得起时间和空间的考验。经得起失败这个很好理解,但是经得起成功是什么意思啊?我的书出版了应该是个值得高兴的事情,但是我的成果还需要时间的考验,因为这些成果都是在现今条件下取得的,那许多年以后会怎样?所以这些考验都是需要认真面对的。

谈到培养学生,我对他们的要求是很严格的。一个班里算法课程能上90分的一般也就一两个人,三分之一的人不及格,大部分都是60多分,80分以上的人都很少。原来在学校里面教书,很多教职工子弟在我班里上课,一些人成绩不理想,他们家里父母就找到我。他们说,你为什么把分数卡得那么紧?我认为学生要以学知识为主,如果没有掌握必学的知识,那么给再多分数又有何用?此外,我鼓励学生自主创新,对设计了新算法并有成效的学生,以加分的办法奖励。

记者:在解决实际问题时,往往要在算法上做出创新。请您结合自己在算法上的创新该谈这个问题。

周培德:比如说前面给你看的下料问题,这不仅是皮鞋的下料裁剪,它还涉及造船。服装、制造等等不同的行业,因此可以创造出很大的经济价值。之前我所研究的点集三角部分,它应用在地形图处理,人体表面表示等很多表面处理的方向上。另外还有有限元分析,最短路径、k中心问题等,这些算法已经在很多行业有了相当广泛的应用。比如三角部分就可以为在广大地区输电线布局提供良好的算法支持:而k中心问题则可以针对医学上的化疗,军事上的密集轰炸等多种方向解决问题。在原有基础上,我还自己专门设计了点线集三角剖分、线段集三角部分等等,这些问题都可以在《计算几何》(第二版)一书中找到。



综合起来,创新无非就是下面几个问题:

1.正确地理解和陈述问题:

2.考虑已有算法是否可用,是否需要修改:

3.如果没有现成的算法可用,就设计新的算法:考虑现有算法设计方法中哪种方法或哪几种方法可综合使用,并提出新思考,用计算机可执行的操作构成操作序列实现新思想,检验结果,再循环这个过程。

记者:数学在算法设计研究中有着点样的作用?程序员应当特别重视学习哪几门数学课程?

周培德:数学在位法设计中起基础作用,不了解必要的数学知识,设计新算法将是非常困难的。离散数学、组合数学都是非常重要的基础学科,此外数据结构、程序设计,高级语言等等则是专业课程中的基础,都应该好好学习。此外,还包括一些专门方向上的数学课程,比如小波分析,图像处理等等这些课程都需要结合自己工作的实际情况来学习。算法这门课程与一般课程不太一样,如果不是当时我抱着浓厚的兴趣,则很难坚持下来。现在的学生对子算法很不感兴趣可能是因为它太难,只有在此方面培养兴趣,才能很好地理解算法。我并不希望所有的学生都钻研算法,但是在一代程序员中总应该有一些程序员是精通算法的,这样才能形成国产软件的力。

记者:请给《程序员》读者提些建议。

周培德:如果你想成为一名优秀的程序员,建议你尽早学习,研究与你工作有关的各种算法。当然。并不是每一个人都需要在算法上有很深刻的造话,毕竟每一个程序员所选择的发展方向是不一样的。也许几年以后,有些程序员将从事项目管理,质量控制等相关的工作,在这些工作中就不必用到算法。



来源:山涧果子
通用航空船舶汽车电子理论材料控制曲面
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-15
最近编辑:1月前
山涧果子
大专 签名征集中
获赞 206粉丝 56文章 1452课程 0
点赞
收藏
作者推荐

KOMPAS-3D V20 中性格式: C3D 格式(如何加快读取大型 3D 模型的速度)

许多专家每天都在计算机辅助设计系统中使用 3D 建模的功能,但并不是每个设计师或设计师都会考虑在熟悉的界面命令屏幕背后隐藏着什么,这些命令为 3D 产品设计提供了如此宝贵的舒适性和便利性。通常,使用 CAD 的整体体验受处理大型装配体时的速度以及将 3D 模型加载到系统中的速度的影响。在工程界,几何内核负责这部分功能是完全正确的,并非没有道理。C3D Labs 是 ASCON 集团的子公司,也是 Skolkovo IT 集群的驻地,自 2012 年以来一直在开发商业核心 C3D Modeler。大多数 CAD 系统用户在处理大型复杂 3D 模型时都面临同样的问题 - 几何模型需要很长时间才能加载到系统中,因此您不可避免地需要等待一段时间才能继续进行产品设计。除此之外,每天早上在工作日开始之前需要重复该过程,现在我们得到了一个小而烦人的刺 激,随之而来的是软件应用程序用户的不满。在这种情况下,计算机辅助设计系统的开发人员努力以各种可能的方式改进负载指标。特别是,机械制造 CAD KOMPAS-3D 提供了多种从文件加载信息的选项:具有构造历史的模型、面模型和尺寸框。用户选择他需要的东西,从而在应用程序级别解决问题。另一方面,JT 格式的开发人员在文件架构级别提供了一次传输两种几何表示的能力:边界和多边形。这允许您在 3D 模型的初始加载时将其分面表示加载到应用程序中(可以立即传输以进行渲染),并在必要时并行加载更重的边界表示,大多数用户在其上进行操作CAD 进行。考虑到 JT 是一种开放格式,因此,它不仅可以应用于设计系统,还可以应用于各种 3D 模型查看器或更复杂的程序以处理元数据。从前两个示例中可以看出,文件优化是最终应用程序级别以及较低级别的一项必需任务。因此,在 C3D Labs,我们在使用 C3D 格式时处理了提高性能的问题,这是 C3D Modeler 几何核心的原生格式。因此,开发并实现了一种用于存储几何模型的扩展格式,它支持以任意顺序从文件中读取单个模型对象,并允许获取有关模型及其对象的结构的信息,而无需从文件中加载整个模型。文件。让我们更详细地考虑使用 C3D 格式。1.标准 C3D 格式使用标准 C3D 数据格式时,模型对象会按顺序写入一组文件空间集群(图 1),该集群具有单个记录点。当一个几何对象引用另一个对象时,内部对象被写入引用它的对象内部。在这种情况下,被其他几个对象引用的模型对象被写入第一个引用对象内,并在“注册对象”表中注册。引用此对象的所有后续对象都必须包含表中的索引。图 2. 以传统 C3D 格式存储几何模型对象这种经典方法的优点是编写和读取模型时的开销最小、文件紧凑、软件实现简单以及 API 的可用性。同时,这种处理数据的工作组织对 C3D 格式的使用施加了限制:只有在阅读整个模型后,才能获得有关模型结构或其单个对象的信息。以任意顺序加载模型对象和导入单个对象是不可能的,因为: a) 在 C3D 文件中没有关于对象存储位置的信息;b) 一个对象可以嵌套在另一个对象中,或者引用一个存储位置未知的对象。为了摆脱这些限制,开发了扩展的 C3D 格式。2.扩展的 C3D 格式C3D 格式更新要求 C3D 实验室团队详细说明新结构的主要要求。在某种程度上,它们已经在较早的时候制定了——这是提供对象的独立存储和选择性读取它们的能力,以及提供对几何模型对象信息的访问,而无需从文件中读取整个模型。在附加要求中,值得注意的是新接口的创建(用于读取和写入模型、读取单个模型对象等),并且重要的是支持与当前 C3D 格式的兼容性。已经在实施阶段,有必要决定在哪里写下对象的特征、它们的存储位置和有关构建层次结构的信息。因此,开发了一种用于在模型文件中创建和存储目录的机制。几何模型对象的独立存储提供如下:只有那些对象被写入该对象专门使用的对象内。在这种情况下,模型的每一层的对象都记录在一个单独的文件空间中,在文件记录过程中,您可以在不同的记录点之间切换(图2)。它在文件中的存储位置用作对象的引用。以扩展的 C3D 格式存储几何模型对象我们最终会得到什么?将模型及其目录写入文件时,实现了几何模型的一次性处理。在这种情况下,几何模型的对象树(模型的目录)是为 Items 类型的几何模型的所有对象创建的,并以节点的平面列表的形式写入文件,其中树的每个节点存储特定对象的数据:对象类型,对象名称,对象的大小和本地坐标系(如果有),文件中写入/读取对象的位置(簇索引和其中的偏移量),节点的直接后代列表,对象的属性信息。3.CAD 应用程序使用扩展的 C3D 格式时,在加载模型时,您可以确定需要读取哪些特定对象(按名称、类型、大小或属性)并在屏幕上显示(图 3)。开发的数据读取接口支持扩展和标准C3D格式,确保与早期版本的文件兼容。在 CAD 用户需要从文件中部分读取信息而不是整体加载整个模型的情况下,使用此功能将减少数据加载时间。扩展 C3D 格式的更新结构还将允许优化用于以 C3D 格式读取和写入多核架构数据的算法。4.3D PDF 和 eDrawings 有什么问题。我们如何替换应用程序中的 3D 模型查看器任何值得一提的 PLM 解决方案都包括 PDM(产品数据管理)机制/子系统。PDM 系统数据库存储在各种 CAD 系统中创建的文档和文件:3D 模型、图纸、规格和计算。为了让那些没有在工作场所安装相应 CAD 应用程序的用户可以使用这些文档的内容(而且它们可能非常昂贵),PDM 系统生成了“文档的二次演示”——一个副本以“中性”公共格式显示的文档。在“次视图”加载到系统后,您可以在此基础上直接在 PDM 系统的客户端界面中构建文档内容的预览;在与外部用户交换信息、审批流程以及使用注释和注释交换注释时用作媒介。在不同时期,VRML、eDrawings、3D PDF 在 LOTSMAN:PLM 中充当 3D 模型的“辅助表示”。我不会谈论 VRML - 我年轻时的错误......它不会发生在任何人身上。eDrawings 还不错,但开发适配器和支持服务的价格非常适中。此外,从 2014 年开始,eDrawings 仅在 x64 版本中可用。尽管我们有此愿望,但我们无法再将其作为 ActiveX 构建到我们的 32 位客户端 LOTSMAN:PLM 中。起初,3D PDF 似乎是一种免费的礼物,已经安装在每台第一台计算机上,这是我们银河系袖子中的事实上的标准,还有一个现成的适合嵌入的 ActiveX 库,但随着时间的推移,它的阴暗面开始显现向我们敞开心扉:我们有权在我们的发行版中分发 Acrobat Reader。事实证明,并非每台第一台计算机上都安装了 Acrobat Reader。有时安装了不兼容的 Acrobat Reader 版本,有时 - 一个完全不同的 PDF 查看器,与 Acrobat Reader 不兼容,同时,对用户来说非常珍贵。Acrobat Reader 开发的载体是不可预测的。每个版本都充满惊喜,并增加了我们的工具库,旨在自动关闭不必要的消息窗口、最小化烦人的面板并设置模糊记录的选项。Acrobat Reader 更新的发布是突然且不可避免的。我们从用户报告中了解到“辅助视图”已停止为我们工作。来自开发人员的反馈可能是可能的,但是,正如对悲伤论坛的定期审查所显示的那样,这是徒劳的。有时使用 ActiveX Acrobat Reader 会导致您的应用程序崩溃。我们最终在 Acrobat Reader 中使用了安全模式。在这种模式下,只有隐藏的 Acrobat Reader 子进程会定期崩溃,而我们的应用程序会继续运行。ActiveX Acrobat Reader 仅在 32 位版本中可用,没有选项。而最重要的是在处理大型模型(装配体)时表现不尽如人意:从 KOMPAS-3D 到 3D PDF 的导出速度较慢。也许部分责任在于 KOMPAS-3D,但它是什么 - 就是这样。大型 3D PDF 文件大小,这会增加文件系统和网络的负载并需要更多 RAM。从模型输出精度与文件大小的比率的角度寻找最佳设置并没有给出可接受的结果。大型 3D PDF 模型的加载速度缓慢。大文件的渲染速度/质量较差。C3D 查看器我们一直感兴趣地关注 C3D Labs(毕竟是 ASCON 的子公司,同事)的成功和创新。新 C3D 查看器的到来并没有引起人们的注意。在获得该产品的早期测试版之后,我们对功能和性能进行了比较研究。该研究的结果激励我们启动一个项目,该项目将导致将 C3D 查看器组件嵌入为查看器和注释工具,用于 LOTSMAN:PLM 中 3D 模型的二次表示。保存为 C3D 格式的速度比 PDF 快 - 快 6 到 18 倍!没有发现与模型大小和组件数量的相关性。C3D 文件比 PDF 小 - 2 到 39 倍!C3D 文件的下载速 度比 PDF 的下载速 度快 - 6x 到 264x。没有发现与模型大小和组件数量的相关性。在 C3D Viewer 中旋转时的显示质量和平滑度明显优于 Adobe Reader。由于某些未知原因,并非总是可以在 Adobe Reader 中测量 FPS。在计量尝试成功的情况下,FPS 不超过“5”。C3D 查看器在不同模型上以 30-100 ++ FPS 的速度“旋转”。对项目的兴趣是相互的,这对与开发人员的交互质量和解决各种问题的速度产生了最好的影响。应我们的要求,C3D Labs 团队开发了一种用于注释 3D 模型的功能,提供俄语本地化。C3D 查看器 API 的许多改进是由于在我们的应用程序中使用该组件的细节。因此,API 中出现了新的方法和事件,这使得可以实现自己的机制来指示模型加载的进度和紧急中断/取消加载。既然我提到了 eDrawings 的高成本,公平地说,我必须说 C3D Viewer 对我们来说也不是免费的,但它的使用条件要民主得多。来源:山涧果子

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈