MIT6.024学习笔记(三)——图论(2)

这篇具有很好参考价值的文章主要介绍了MIT6.024学习笔记(三)——图论(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

科学是使人变得勇敢的最好途径。——布鲁诺

通信网络问题

在通信网络中,分为主机和路由器两部分,我们将主机分为输入端和输出端,则构成的图中有三部分:路由器、输入端、输出端,构成了一个有向图。那么,一个N*N规模的通信网络,应该怎么构成才能达到性能最佳呢(假设N总是2的整数次幂)?

二叉树型

二叉树是最容易想到的构建方法,示意图如下:
MIT6.024学习笔记(三)——图论(2)
其中,圆形表示路由器,I矩形表示输入端,O矩形表示输出端,从左到右分别是主机0~n的输入、输出端。箭头方向表示数据流向,没有箭头表示数据可以双向流动。
二叉树型网络的性能数据如下:
MIT6.024学习笔记(三)——图论(2)
logN即以2为底,N的对数。接下来我们对这些数据进行证明。

直径

定义:一个网络的直径是从任一个输入端到任一个输出端的最远路径。
不难从图中看出,只要是经过最上面的路由器的路径都是最远路径。一个完全二叉树,最远路径长为2(1+logN)。

路由器规模

定义:最多同时有几个IO流流经一个路由器的数量,就是路由器规模。
求一个网络的路由器规模,实际上就是看最多有多少链路经过了同一个路由器,不难看出,在上图中,第二层路由器经过的链路最多,经过了3条输入链路和3条输出链路,继续扩展输入端和输出端的数量,该规模也不会增大,因此规模为3*3.

路由器数量

定义:在一个网络中使用的路由器的数量。
在网络中的路由器数量就是20+21+22+…+2logN,化简后得2N-1.

拥挤程度

在说明这个概念之前,我们先明确一个观点:输入端和输入端是双射关系。然后我们给出拥挤程度的定义。
定义:在任意双射关系中,路径经过同一个路由器的数量上限称作这个网络的拥挤程度。
设输入端i所映射的输出端fi=n-1-i,那么每一个输入端的数据都会经过最顶端的路由器,此时拥挤程度最大,达到N,因为最多也就是N个主机。

二维数组型

二维数组的示意图如下:
MIT6.024学习笔记(三)——图论(2)

输入端从上到下分别对应主机0-3,输出端从左到右对应主机0-3。
二维数组型网络性能如下:
MIT6.024学习笔记(三)——图论(2)

直径

不难看出,最远路径是从I0到O3,长为2N。

路由器规模

在网络上中间的路由器规模最大,有两条输入链路和两条输出链路穿过,因此是2*2,当网络再扩展时,该规模不变。

路由器数量

路由器数量就是N2,没什么好解释的。

拥挤程度

列举任意输入端与输出端的映射,可以发现最多只有两条路径在同一个路由器上交汇。图中用蓝线画出的两条路径在第三行第三列的路由器交汇。所以拥挤程度为2;从另一个角度讲,一行只能有一个路径,而一列也只能用一个,一行一列定位一个路由器,所以当占据该路由器所在行和列的路径不同时,这个路由器的拥挤程度最高,为2.

蝴蝶型

蝴蝶型将二叉树和二维数组结合起来,实现了一定的性能提高。示意图如下:
MIT6.024学习笔记(三)——图论(2)
注意,在这个网络中,分别给行和列进行编号,其中列用二进制进行编号。这样,就可以方便的从看起来复杂的图中抽象出信息:

如果一个路由器的坐标是(b0,…,bl,…,blogN,l),那么这个路由器可以连接(b0,…,¬bl,…,blogN,l+1)和(b0,…,bl,…,blogN,l+1)。其中b0到blogN是列的各个二进制位。例如(1,0,0,0)可以连接到(0,0,0,1)和(1,0,0,1)。

蝴蝶型网络的性能数据如下:
MIT6.024学习笔记(三)——图论(2)

直径

该网络的所有路径长度都相同,都是2+logN。

路由器规模

对于图中1,2列的节点,有两条输入链路和两条输出链路,因此规模为2*2.

路由器数量

行列相乘即可,数量为N(1+logN)。

拥挤程度

该网络的拥挤程度证明较复杂,但可以证明当logN为偶数时,拥挤程度为N^1/2;当logN为奇数时,拥挤程度为(N/2) ^1/2。

benes型

将蝴蝶型稍加改进,即得到benes型网络:
MIT6.024学习笔记(三)——图论(2)
benes型网络的性能如下:
MIT6.024学习笔记(三)——图论(2)

直径

benes型网络的直径与蝴蝶型类似,为1+2logN。

路由器规模

和蝴蝶型网络相同,为2*2.

路由器数量

直接将行列相乘即可,为2NlogN。

拥挤

我们用归纳法证明benes型网络中任意一个路由器的拥挤程度为1,假设P(n):网络中包含n台主机时命题成立。

基础步骤:证明P(21)。n=2时,网络如下:
MIT6.024学习笔记(三)——图论(2)
不论怎样将输入端映射到输出端,四个路由器的拥挤程度都为1,因此P(2)=T。
归纳步骤:假设P(2i)=T。首先我们要弄清2i的网络如何扩展到2i+1的网络。注意我们的示例图:
MIT6.024学习笔记(三)——图论(2)
图中用蓝色框和黄色框框住的部分就是当主机数量为4时的路由器网络,因此从2i到2i+1就是将2个2i网络拼在一起,再将首尾各加一列路由器。由于我们假设P(2i)成立,因此绿色框中的路由器拥挤程度一定为1,而首尾两列路由器拥挤程度也为1,因此只需考虑第1列和第4列路由器。
为了让第1列拥挤程度为1,某些特定对的输入端不能将数据发送到同一个颜色的框中。例如,如果000输入端和100输入端都将数据送入蓝色框,那么他们一定会送到同一台路由器;同理,对于第4列来说,某些特定对的输出端的数据也不能来自同一个颜色的框,例如000号输出端和100号输出端不能都来自蓝框。有了这些特定数字主机之间的关系,我们可以构造一个图:
假设输入端与输出端之间的映射关系为:f0=1,f1=5,f2=4,f3=7,f4=3,f5=6,f6=0,f7=2,那么该图可以构造成:
MIT6.024学习笔记(三)——图论(2)
如果两个节点相邻,那么他们不能将数据发送到同一个框中;蓝色线说明他们的输入端可能链接同一个路由器,红色线说明他们的输出端可能链接同一个路由器。于是,这个问题演变成一个涂色问题。下面是一种解法:0,2,3,5涂蓝色,即他们将数据送入蓝色框内;1,4,6,7涂黄色,即他们将数据送入黄色框内。通过这种方式,可以发现第1列和第4列的所有路由器都只有一条路径经过,拥挤程度为1.□

MIT6.024学习笔记(三)——图论(2)
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!文章来源地址https://www.toymoban.com/news/detail-488415.html

到了这里,关于MIT6.024学习笔记(三)——图论(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MIT6.S081 - Lecture1: Introduction and Examples

    理解操作系统的设计和实现 通过 XV6 操作系统动手实验,可以扩展或改进操作系统 Abstraction: 对硬件进行抽象 Multiplex: 在多个应用程序之间共用硬件资源 Isolation: 隔离性,程序出现故障时,不同程序之间不能相互干扰 Sharing: 实现共享,如数据交互或协同完成任务 Securi

    2024年04月15日
    浏览(40)
  • MIT6.5830 Lab1-GoDB实验记录(四)

    标签:Golang 读写缓冲区我是一点思路都没有,所以得单独开篇文章记录。 实验补充 了解buffer、序列化与反序列化 这里的序列化,简单来说类似于把一个很长的字符串拆成一个个字符;反序列化就是把这一个个字符拼回成完整的字符串。此处我们需要根据所给的Tuple,转换为

    2024年02月06日
    浏览(37)
  • (MIT6.045)自动机、可计算性和复杂性-图灵机

    有穷自动机(FA)对有限存储量设备是比较好的模型,下推自动机对无限存储设备是较好的模型(但是其存储只能用后进先出的栈模式来使用。)这两个模型过于局限,不能作为通用模型。 和FA相似,但是图灵机有无限的存储。图灵机可以作实际计算机做的所有事情。但是也有图

    2024年02月08日
    浏览(27)
  • MIT6.S081 - Lecture3: OS Organization and System Calls

    使用操作系统的主要原因是为了实现 CPU 多进程分时复用以及内存隔离 如果没有操作系统,应用程序会直接与硬件进行交互,这时应用程序会直接使用 CPU,比如假设只有一个 CPU 核,一个应用程序在这个 CPU 核上运行,但是同时其他程序也需要运行,因为没有操作系统来帮助

    2024年04月22日
    浏览(28)
  • MIT6.S081 - Lab1: Xv6 and Unix utilities

    可以参考 user/echo.c , user/grep.c 和 user/rm.c 文件 如果用户忘记传递参数, sleep 应该打印一条错误消息 命令行参数传递时为字符串,可以使用 atoi 函数将字符串转为数字 使用系统调用 sleep ,有关实现 sleep 系统调用的内核代码参考 kernel/sysproc.c (查找 sys_sleep ),关于可以从用户程序

    2024年04月16日
    浏览(50)
  • MIT6.828/6.S081 Mac OS下搭建xv6和risc-v

    题外话: 其实我是一名非计算机专业的在校生,因为对软件开发和服务器开发很感兴趣,并且这方面的就业相对我来说资源比较充沛,所以就学习了mit6.828的实验 课程的学习直接跟着官网的schedule走就行,先看Lecture下提供的讲义和手册,然后完成相应的Lab,Lab共计10个,主要

    2024年03月09日
    浏览(27)
  • MIT 6.S081学习笔记(第〇章)

    本文涉及 xv6 《第零章 操作系统接口》相关,主要对涉及的进程、I/O、文件描述符、管道、文件等内容产生个人理解,不具有官方权威解释; 文章的目录与书中的目录没有严格的相关性; 文中会有问题 (Question) 字段,这来源于对 xv6 book 的扩展; 文中涉及的代码均能在macOS

    2024年02月09日
    浏览(33)
  • Spring Boot 笔记 024 登录页面

    1.1 登录接口 2.1 编写页面 2.2 绑定数据模型并校验 2.3 清空表单内的数据 2.4 调用登录接口 3.1 修改响应拦截器以及提示框

    2024年02月19日
    浏览(29)
  • 图论基础学习笔记

    这里主要是我自己的一些笔记,帮助我自己快速记忆所用,可能没有定义这么完美。 简单图:无环无平行边的图。下图: 左环右平行边 平凡图: G = ( 1 , 0 ) G=(1,0) G = ( 1 , 0 ) 零图: G = ( p , 0 ) G=(p,0) G = ( p , 0 ) 边数: e ≤ C n 2 eleq C_n^2 e ≤ C n 2 ​ 补图:对于 G = ( V , E ) G=(V,

    2024年02月09日
    浏览(27)
  • C++学习笔记——图论

    图是由 节点(v)和边(e) 组成的,把图记作二元组G=(v,e) 无向图                                                                    有向图 边是双向的,v1可以到v2,v2也能到v1                 边是单向的,v1可以到v2,但v2不能到v1 无权图               

    2024年04月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包