zoukankan      html  css  js  c++  java
  • 离散数学的应用

    http://www.360doc.com/content/14/0808/15/17799864_400345159.shtml

    1、平面图和印刷电路板的设计
          有时候,实际问题要求我们把图画在平面上,使得不是节点的地方不能有边交叉,这在图论中就是判断一个图是否是平面图的问题。
          像印刷电路板(Printed Circuit Board,PCB)(单层印刷电路板,多层印刷电路板)几乎会出现在每一种电子设备中。PCB的主要功能是提供上头各项零件的相互电气连接。随着电子设备越来越复杂,需要的元件越来越多,PCB上头的导线与元件也越来越密集了。
          板子本身的基板是由绝缘隔热、不易弯曲的材料制作而成。在表面可以看到的细小线路材料是铜箔,原本铜箔是覆盖在整个板子上的,而在制造过程中部份被蚀刻处理掉,留下来的部份就变成网状的细小线路了。这些线路被称作导线或布线,并用来提供PCB上元件的电路连接。
          因此在设计和制造印刷电路板时,首先要解决的问题是判定一个给定的电路图是否能印刷在同一层板上而使民线不发生短路?若可以,怎样给出具体的布线方案?
          将要印刷的电路图看成是一个无向简单连通图G,其中顶点代表电子元件,边代表导线,于是上述问题归结为判定G是否是平面图?若G是平面图,由怎样给出它的一个平面表示来?
          平面图的判断问题,在数学上已由波兰数学家库拉托夫斯基(Kuratowski) 于1930年解决。库拉托夫斯基定理给出的充要条件看似简单,但实现起来很难。但是许多研究拓扑图论的数学家提出了比较有效的图的平面性判定的准则,如DMP方法以就是其中的一个有代表性方法。

          2、图的着色和四色问题
          图的着色起源于“四色问题”。四色问题又称四色猜想,是世界近代三大数学难题之一。
          四色问题是说画在纸上的每张地图只需要用4种颜色就能使具有共同边界的国家不会有相同的颜色。用数学语言表示,就是将平面任意地细分为不相重迭的区域,每一个区域总可以用1,2,3,4这四个数字之一来标记,而不会使相邻的两个区域得到相同的数字。
          这里所指的相邻区域,是指有一整段边界是公共的。如果两个区域只相遇于一点或有限多点,就不叫相邻的。因为用相同的颜色给它们着色不会引起混淆。
          四色猜想的提出来自英国。1852年,毕业于伦敦大学的格思里(F.Guthrie)来到一家科研单位搞地图着色工作时,发现了一种有趣的现象:“看来,每幅地图都可以用四种颜色着色,使得有共同边界的国家都着上不同的颜色。”这个现象能不能从数学上加以严格证明呢?他和在大学读书的弟弟格里斯决心试一试。兄弟二人为证明这一问题而使用的稿纸已经堆了一大叠,可是研究工作没有进展。
          1852年10月23日,他的弟弟就这个问题的证明请教了他的老师、著名数学家德?摩尔根(De Morgan),摩尔根也没有能找到解决这个问题的途径,于是写信向自己的好友、著名数学家汉密尔顿爵士(W.R. Hamilton)请教。汉密尔顿接到摩尔根的信后,对四色问题进行论证。但直到1865年汉密尔顿逝世为止,问题也没有能够解决。
          起初,这个问题并没有引起数学家们的注意,认为这是一个不证即明的事实。但经过一些尝试之后,发现并不是那么回事。1878年,英国当时最著名的数学家凯利(A. Cayley)正式向伦敦数学学会提出了这个问题,于是四色猜想成了世界数学界关注的问题。世界上许多一流的数学家都纷纷参加了证明四色猜想的大会战。
          1878~1880年两年间,著名的律师兼数学家肯普(Kempe)和泰勒(Taylor)两人分别提交了证明四色猜想的论文,宣布证明了四色定理,大家都认为四色猜想从此也就解决了。
          但是后来人们发现他们都错了。后来,越来越多的数学家虽然对此绞尽脑汁,但一无所获。于是,人们开始认识到,这个貌似容易的题目,其实是一个可与费马大定理相媲美的难题。
          不过肯普的证明虽然失败了,但它在证明中提供的思想和方法仍然是后来许多数学家冲击四色问题的基础。美国数学家富兰克林于1939年证明了22国以下的地图都可以用四色着色。1950年,有人从22国推进到35国。1960年,有人又证明了39国以下的地图可以只用四种颜色着色;随后又推进到了50国。但是这种推进仍然十分缓慢。
          电子计算机问世以后,由于演算速度迅速提高,加之人机对话的出现,大大加快了对四色猜想证明的进程。1976年6月,美国伊利诺大学的阿佩尔(Appel)、哈肯(Haken)和柯齐(Koch)三人合作编制了一个程序,在美国伊利诺斯大学的两台不同的电子计算机上,用了1260个小时,作了100多亿次逻辑判断,给出了四色猜想证明,轰动了世界。
          这是一百多年来吸引许多数学家与数学爱好者的大事,当两位数学家将他们的研究成果发表的时候,当地的邮局在当天发出的所有邮件上都加盖了“四色足够”的特制邮戳,以庆祝这一难题获得解决。
          “四色问题”的被证明不仅解决了一个历时100多年的难题,而且成为数学史上一系列新思维的起点。在“四色问题”的研究过程中,不少新的数学理论随之产生,也发展了很多数学计算技巧。如将地图的着色问题化为图论问题,丰富了图论的内容。不仅如此,“四色问题”在有效地设计航空班机日程表、设计计算机的编码程序上都起到了推动作用。
          不过不少数学家并不满足于计算机取得的成就,他们认为应该有一种简捷明快的书面证明方法。直到现在,仍由不少数学家和数学爱好者在寻找更简洁的证明方法。

          3、运输网络
          自从克希霍夫运用图论从事电路网络的结构分析以来,网络理论的研究和应用就越来越广泛。特别是近几十年来,电路网络、运输网络、通讯网络等与工程和应用密切相关的课题受到了高度的重视。
          无自回路的有向赋权图称为网络(Network)。在一个网络中,有向边上的权称为容量(Capacity)。网络中入度为0的结点称为源(Source),用字母s表示;出度为0的结点称为汇(Trap),用字母t表示。
          在某些问题,只考虑有单一源和单一汇的网络(即运输网络),而在另一些问题中(如通讯网络),根本就不考虑源和汇。
          运输网络的实际意义可以用公路网、铁路网、和供水系统、电网等来说明,也就是“货物从产地s,通过若干中转站,到达目的地t”这类情形的一般模型。这里将源和汇分别看成是货物的产地和目的地,其他结点是中转站,有向边是连接两站的道路(公路、铁路、水管或电线等),容量则是某一段道路允许的通行能力的上限。
          在运输网络中要考虑的是从源到汇的实际流通量,显然它与每条有向边的容量有关,也和每个结点的转运能力有关。对运输货物来讲,除了容量之外,每条边还被赋予一个非负实数,这一组数若满足以下条件:单位时间内通过每条道路运送的货物总量不能超过道路的容量;每一个中转站的流入量等于流出量;源的流出量等于汇的总流入量(即网络的流量(Discharge))。则称这组数为该运输网络的一个流(Flow)。
          一个运输网络中具有可能的最大值的流称为最大流。在一个运输网络中,可能不止一个最大流,即可能有几个不同的流,都具有最大值。
          给定运输网络求其最大流的问题,就是怎样使给定网络在单位时间运输量最大的问题,并且确定当网络的流量最大时的流。
          最大流问题的解决显然在现实生活中有很重大的应用价值。

          4、通讯网络
          网络应用的另一重要方面是通讯网络,如电话网络、计算机网络、管理信息系统、医疗数据网络、银行数据网络、开关网络等等。这些网络的基本要求是网络中各用户能够快速安全地传递信息,不产生差错和故障,同时使建造和维护网络所需费用低。
          通讯网络中最重要的整体问题是网络的拓扑结构。根据用途和性能指标的不同要求,通讯网络有不同的拓扑结构,如环形网络、树形网络、星形网络、分布式网络、网状网络及混合型网络等等。通讯网络是一个强连通的有向图。
          除了网络的拓扑结构之外,通讯网络还要考虑流量和控制问题、网络的可靠性等问题。图论中的连通度在通讯网络中有着重要的应用,是大规模互连容错网络可靠性的有效性分析的基础。当然网络的可靠性涉及的因素很多,但是从通讯网络作为一个强连通的有向图来说,一个具有最佳连通性的网络就不易出现阻碍问题。

          5、二元树的应用----前缀码(哈夫曼编码)
          在通讯系统中,常用二进制来表示字符。但由于字符出现的频率不一样以及为了保密的原因,能否用不等长的二进制数表示不同的字符,使传输的信息所用的总码元尽可能少呢?
          但是不等长的编码方案给编码和译码带来了困难。为了解决这个问题,我们引入了前缀码(哈夫曼编码)。
          设ab…cd为一个长为n的字符串,则a,ab,…,ab…c分别为它的长为1,2,…,n-1的前缀(Prefix)。
          设A是一个字符串集,若其中的任一字符串都不是其它字符串的前缀,则称A为一个前缀码(哈夫曼编码)(Prefixed Code)。若组成A的字符串的只有字符0和1,则称A为二元前缀码(Binary Prefixed Code)。如{000,001,01,10,110,111}是一个二元前缀码,而{000,001,01,10,11,111}不是一个二元前缀码。
          那么如何构造一个二元前缀码并用它进行编码和译码呢?
          我们利用二元树来产生一个二元前缀码:
          1) 构造一棵二元树,树根的左侧用0标记,右侧用1标记;
          2)分支点v的左侧(右侧)的标记就是标记v的二进制数最右端加上0(1);
          3)任一片树叶的标记串不是其它树叶的标记串的前缀;
          4)将所有树叶的标记串取来就可构成一个二元前缀码。
    然后对要发送的信息中的每个字符分别用这个二元前缀码中的字符串代表,当然应该用越长的字符串代表出现频率越最低的字符串。
          当接收方接到发送方发过去的信息(实际上是二进制位组成的一个序列),他也将按照那棵标记过的二元树来进行译码,还原出真正的信息。过程如下:
          接收方一边接收一边译码,从第一个接收的二进制位开始,按接收到的是0还是1,分别从当前结点的左子树和右子树往下走。如果遇到一片树叶,说明已得到一个字符的码元。从下一个接收的位开始又从根结点起重复上述过程。
          如我们由一棵二元树得到一个二元前缀码{010(确),011(实),11(爱),10(我),00(你)}对应的二元树,现将下列二进制串“101100100100111100”译码。译码的结果是:10,11,00,10,010,011,11,00。翻译成中文就是“我爱你,我确实爱你。”

  • 相关阅读:
    .NET题目(收集来自网络)
    c#反射
    c#泛型
    asp.net core 下载文件,上传excel文件
    remote: HTTP Basic: Access denied fatal: Authentication failed for'https'
    获取jwt(json web token)中存储的用户信息
    System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止
    代码热更新
    左手坐标系 vs 右手坐标系
    GPU相关临时笔记
  • 原文地址:https://www.cnblogs.com/hjlweilong/p/14040304.html
Copyright © 2011-2022 走看看