实验二-路由选择算法模拟实验报告

实验二-路由选择算法模拟实验报告
实验二-路由选择算法模拟实验报告

网络技术与应用

随堂实验报告

实验二路由选择算法模拟实验

学院计算机与电子信息学院

专业班级

姓名学号

指导教师左敬龙

实验报告评分:_______

实验二路由选择算法模拟实验

一、实验目的

1.理解路由选择算法实现原理,加深对网络层功能的理解;

2.掌握距离向量路由选择算法中路由表形成过程及其对路由选择的影响;

二、实验内容

1.熟悉模拟软件的运行环境及操作方法;

2.调整参数,分析路由表变化情况,理解路由算法。

三、实验原理

1.距离向量路由选择算法基本原理如下:

(1)初始化,对于每节点G,对所有它直接连接的目的地N,路由表中的项用三

元组(N,G,0)表示,即从节点G到目的节点N无需经过转发。

(2)节点G定期发送它的路由表给相邻节点,更新信息中对应着每一个目的地N,

用一个三元组来表示(N,V,D),即到目的地N的路由上的下一节点为V,G

到N的距离为D。

(3)节点G收到G’送来的路由信息,对于更新信息中给出的每个目的地,在G

的路由表中查找相对应的表项,设它为(N,V,D),而更新信息中的三元组为

(N,V’,D’),C为节点G和G’之间的距离。如果找不到相应的表项,则在

G的路由表中增加一项(N,G’,D’+C);

(4)如果V=G’,则G中路由表对应的表项更新为(N,G’,D’+C);

否则,比较D’+C和D:

如果D’+C

否则G中表项保持原状,仍为(N,V,D)。

2.网络拓扑结构图

3.信息格式:

目的IP地址`目的端口号`源IP地址`源端口号`控制`数据

控制:"M"-数据帧;

"GetR"-请求邻居路由器回送距离表,无数据域;

"R"-数据内容为距离表。

四、实验仪器

计算机45台、集线器4台、网卡45块、网线条、软盘若干。

五、实验步骤

1.将模拟软件拷贝到计算机硬盘,熟悉模拟软件的运行环境及界面,察看

帮助文件。

2.运行配置好的模拟环境,分析路由表情况,并与算法相比较,得出结论。

3.调整距离值,重新计算路由表,分析路由表情况,得出结论。

六、实验数据与分析

第一轮数据分析

初始状态:

设置好路径:

1)、选取模拟路由器0,计算其与相邻路由的(N,V,D)

分析:路由0到其本身的距离为0,到5的距离分别是3,由于除了路由器0与路由器5之间建立了通信外,其他路由都为没连接的。仿真结果与计算结果相符合。

2)、选取模拟路由器1,计算其与相邻路由的(N,V,D)

分析:路由1到其本身的距离为0,到0、2、5的距离分别是3、5、4,由于除了路由器1与路由器0、2、5之间建立了通信外,其他路由都为没连接的。仿真结果与计算结果相符合。

3)、选取模拟路由器2,计算其与相邻路由的(N,V,D)

第二轮数据分析:

1)、选取模拟路由器2,计算其与相邻路由的(N,V,D)

第一次计算结果:

第二次计算结果:

分析:从第二次计算的结果来看,路由2到其本身的距离为0,到0、1、3、4、5的距离分别是5、4、2、4、8,与路由器0、1、3、4、5之间都建立了通信。但是与第一次计算的结果相比较,路由器2到路由器4的距离发生了变化,延时由6变为4,说明路由的路线是路由器2→由器3→由器4。遵循最短路线原则。

2)、选取模拟路由器3,计算其与相邻路由的(N,V,D)

3)第一次计算结果:

第二次计算结果:

分析:第一次与第二次计算的结果没有变化,第一次路由3到其本身的距离为0,到2、4的距离分别是2、5,第二次路由3到其本身的距离为0,与路由器0、1、2、4、5之间都建立了通信,距离分别为10,7,2,2,11。,根据最短路线原则,说明路由的路线已经是最佳的路由线路。

第三轮数据分析:

初始化阶段各个模拟路由器的(N,G,0)的值跟第一轮设置的一样。

计算后的结果如下:

路由器0:

路由器1:

路由器2:

路由器3:

路由器4:

路由器5:

七、实验总结

在这次实验中,我掌握了有关路由表的计算方法,简单的掌握了目标,延时,下一站的含义,也中单了路由器的转发会自动的选择最短的距离转发。自动计算最短距离。他们说有转发失败的情况,我修改过初始的距离就已经不会

转发失败了。

路由算法分类

路由算法及分类 路由算法及分类: 1、非自适应算法,静态路由算法 不能根据网络流量和拓扑结构的变化更新路由表,使用静态路由表,也称为固定式路由选择算法。 特点:简单,开销少;灵活性差。 2、自适应算法,动态路由算法 可根据网络流量和拓扑结构的变化更新路由表。 特点:开销大;健壮性和灵活性好。 3、最优化原则(optimality principle) 如果路由器J 在路由器I 到K 的最优路由上,那么从J 到K 的最优路由会落在同一路由上。 4、汇集树(sink tree) 从所有的源结点到一个给定的目的结点的最优路由的集合形成了一个以目的结点为根的树,称为汇集树; 路由算法的目的是找出并使用汇集树。 几种典型的路由选择算法: 1、最短路径路由算法(Shortest Path Routing) 1)基本思想 构建子网的拓扑图,图中的每个结点代表一个路由器,每条弧代表一条通信线路。为了选择两个路由器间的路由,算法在图中找出最短路径。

2)测量路径长度的方法 结点数量 地理距离 传输延迟 距离、信道带宽等参数的加权函数 3)Dijkstra算法 每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注; 初始时,所有结点都为临时性标注,标注为无穷大; 将源结点标注为0,且为永久性标注,并令其为工作结点; 检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点; 在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点; 重复第四、五步,直到目的结点成为工作结点; 2、洪泛及选择洪泛算法 1)洪泛算法(Flooding) 属于静态路由算法 a)基本思想 把收到的每一个包,向除了该包到来的线路外的所有输出线路发送。

算法设计与分析实验报告贪心算法

算法设计与分析实验报告 贪心算法 班级:2013156 学号:201315614 姓名:张春阳哈夫曼编码 代码 #include float small1,small2; int flag1,flag2,count; typedefstructHuffmanTree { float weight; intlchild,rchild,parent; }huffman; huffmanhuffmantree[100]; void CreatHuffmanTree(intn,int m) { inti; void select(); printf("请输入%d个节点的权值:",n); for(i=0;i

printf("\n"); for(i=0;i

算法实验报告

华北电力大学 实验报告| | 实验名称算法设计与分析综合实验 课程名称算法设计与分析 | | 专业班级软件12 学生姓名: 学号:成绩: 指导教师:胡朝举实验日期:

实验一分治策略—归并排序 一、实验要求 (1)编写一个模板函数:template ,MergeSort(T *a, int n); 以及相应的一系列函数,采用分治策略,对任意具有:bool operator<(const T&x,const T&y);比较运算符的类型进行排序。 (2)与STL库中的函数std::sort(..)进行运行时间上的比较,给出比较结果,如:动态生成100万个随机生成的附点数序列的排序列问题, 给出所用的时间比较。 二、实验代码 #include <> #include <> #include <> #include <> #define MAX 50 typedef struct { int arr[MAX+1]; int length; }SortArr; SortArr *CreateSortArr() { int i = 0; char buf[4*MAX] = ""; char *ptr = NULL; SortArr *sortArr = (SortArr *)malloc(sizeof(SortArr)); memset(sortArr, 0, sizeof(SortArr)); printf("请输入待排序数据,以逗号分隔,以分号结束\n" "input:"); scanf("%s", buf); ptr = buf; sortArr->arr[i] = 0; i = 1; while(*ptr != ';') { sortArr->arr[i] = atoi(ptr); i++; ptr = strstr(ptr, ","); if(!ptr) { break; } ptr++; } sortArr->length = (i - 1); return sortArr; } int merge(int arr[], int p, int q, int r) { int i = 0; int j = 0; int k = 0; int n1 = 0; int n2 = 0; int *leftArr = NULL; int *rightArr = NULL; n1 = q - p + 1; n2 = r - q;

基于蚁群算法路由选择可视化动态模拟

基于蚁群算法路由选择可视化动态模拟 路由选择是一种基于网络层的协议,而所有流行的网络层路由选择协议都是基于以下两种典型的分布式算法之一:距离向量路由算法和链路状态路由算法。组合优化问题是人们在工程技术、科学研究和经济管理等众多领域经常遇到的问题,其中许多问题如旅行商问题、0-1背包问题、图着色问题、装箱问题等,都被证明为NP-困难问题。用确定性的优化算法求NP完全问题的最优解,其计算时间使人难以忍受或因问题的高难度而使其计算时间随问题规模的增加以指数速度延长。用近似算法如启发式算法求解得到的近似解不能保证其可行性和最优性,甚至无法知道所得解同最优解的近似程度。因而在求解大规模组合优化问题时,传统的优化算法就显得无能为力了。在过去的10多年,蚁群算法(ACO)的研究和应用取得了很大的进展,大量结果证明了算法的有效性和在某些领域的优势。蚁群算法是一种新型的模拟进化算法, 研究表明该算法具有并行性, 鲁棒性等优良性质。本文阐述了蚁群算法的原理,详细的说明了蚂蚁算法中各个功能模块,并介绍了该算法在理论和实际问题中的应用, 并对其前景进行了展望。

目录 前言 (1) 第1章绪论 (2) 1.1 路由选择的意义 (2) 1.1.1 路由选择技术的组成 (2) 1.1.2 路由算法设计目标 (3) 1.1.3 路由算法的分类 (4) 1.1.4 路由算法衡量的标准 (4) 1.2.目前常用的路由算法 (5) 1.2.1 最短路径算法 (5) 第2章蚁群算法的基本原理 (7) 2.1蚂蚁算法的产生 (7) 2.2 蚂蚁算法的算法思想 (7) 2.3蚁群算法原理 (8) 2.4 蚁群算法的应用 (12) 2.4.1蚂蚁算法在电信网动态路由优化中的应用 (12) 2.4.2蚂蚁算法在组合优化中的应用 (12) 2.5 蚂蚁算法的未来发展 (12) 2.5.1 MMAS ( Max2Min ant system) 最大最小蚁群算法 (12) 2.5.2 具有变异特征的蚁群算法 (12) 2.5.3 自适应蚁群算法 (13) 2.5.4大规模集成电路综合布线 (13) 2.5.5电信网络路由 (13) 第3章开发工具 (14) 3.1软件环境 (14) 3.2其他资料 (14) 3.3 Java 的简单介绍 (14) 3.3.1 网络时代的需要 (14) 3.3.2 Internet的普及 (14) 3.3.3 跨平台可移植性的要求 (14) 3.4 Java 的主要特点 (15) 3.4.1 简单性 (15) 3.4.2 安全性 (15) 3.4.3 面向对象性 (15) 3.4.4 可靠性 (16) 第4章具体的功能结构 (17) 4.1 系统的结构总框图 (17) 4.2 蚂蚁算法的主要步骤 (18) 第5章系统的实现 (25) 5.1蚁群算法的实现结果 (25) 第6章算法的不足和改进 (29) 6.1 算法的不足 (29)

算法设计实验报告一(简单算法设计)

实验报告一 课程C++ 实验名称简单算法设计第 1 页专业_数学与应用数学_ __ 班级__ 双师一班学号105012011056 姓名陈萌 实验日期:2013 年 3 月9 日报告退发(订正、重做) 一、实验目的 1. 理解算法设计与分析的基本概念,理解解决问题的算法设计与实现过程; 2. 掌握简单问题的算法设计与分析,能设计比较高效的算法; 3. 熟悉C/C++语言等的集成开发环境,掌握简单程序设计与实现的能力。 二、实验内容 (一)相等元素问题 1.问题描述 元素唯一性问题:给出一个整数集合,假定这些整数存储在数组A[1…n]中,确定它们中是否存在两个相等的元素。请设计出一个有效算法来解决这个问题,你的算法的时间复杂性是多少? 2. 具体要求(若在ACM平台上提交程序,必须按此要求)――平台上1767题 输入:输入的第一行是一个正整数m,表示测试例个数。接下来几行是m个测试例的数据,每个测试例的数据由两行组成,其中第一行为一个正整数n (n<=500),表示整数序列的长度,第二行给出整数序列,整数之间用一个空格隔开。 输出:对于每个测试例输出一行,若该组测试例中存在两个相等的元素则输出”Yes”,否则,输出”No”。每个测试例的输出数据用一行表示。 3. 测试数据 输入:3 10 9 71 25 64 38 52 5 31 19 45 16 26 35 17 92 53 24 6 57 21 12 34 2 17 86 75 33 20 15 87 32 7 84 35 26 45 78 96 52 22 37 65 9 43 21 3 33 91 输出:No Yes No (二) 整数集合分解 1.问题描述 设计算法把一个n个元素的整数集合(n为偶数)分成两个子集S1和S2,使得:每个新的集合中含有n/2个元素,且S1中的所有元素的和与S2中的所有元素的和的差最大。 2. 具体要求(若在ACM平台上提交程序,必须按此要求)――平台上1768题 输入的第一行是一个正整数m,表示测试例个数。接下来几行是m个测试例的数据,每个测试例的数据由两行组成,其中第一行为一个正整数n (n为偶数,且n<=500),表示原整数集合的长度,第二行给出这n个整数序列,整数之间用一个空格隔开。 输出:对于每个测试例输出两行,分别表示新生成的整数集合。其中,第一行是元素和比较小的整数集合,第二行是元素和比较大的整数集合,整数之间用一个空格隔开。两个测

算法设计与分析实验报告

本科实验报告 课程名称:算法设计与分析 实验项目:递归与分治算法 实验地点:计算机系实验楼110 专业班级:物联网1601 学号:2016002105 学生姓名:俞梦真 指导教师:郝晓丽

2018年05月04 日 实验一递归与分治算法 1.1 实验目的与要求 1.进一步熟悉C/C++语言的集成开发环境; 2.通过本实验加深对递归与分治策略的理解和运用。 1.2 实验课时 2学时 1.3 实验原理 分治(Divide-and-Conquer)的思想:一个规模为n的复杂问题的求解,可以划分成若干个规模小于n的子问题,再将子问题的解合并成原问题的解。 需要注意的是,分治法使用递归的思想。划分后的每一个子问题与原问题的性质相同,可用相同的求解方法。最后,当子问题规模足够小时,可以直接求解,然后逆求原问题的解。 1.4 实验题目 1.上机题目:格雷码构造问题 Gray码是一个长度为2n的序列。序列无相同元素,每个元素都是长度为n的串,相邻元素恰好只有一位不同。试设计一个算法对任意n构造相应的Gray码(分治、减治、变治皆可)。 对于给定的正整数n,格雷码为满足如下条件的一个编码序列。 (1)序列由2n个编码组成,每个编码都是长度为n的二进制位串。 (2)序列中无相同的编码。 (3)序列中位置相邻的两个编码恰有一位不同。 2.设计思想:

根据格雷码的性质,找到他的规律,可发现,1位是0 1。两位是00 01 11 10。三位是000 001 011 010 110 111 101 100。n位是前n-1位的2倍个。N-1个位前面加0,N-2为倒转再前面再加1。 3.代码设计:

算法实验报告

贵州大学计算机科学与技术学院 计算机科学与技术系上机实验报告 课程名称:算法设计与分析班级:软件101 实验日期:2012-10-23 姓名:学号:指导教师: 实验序号:一实验成绩: 一、实验名称 分治算法实验- 棋盘覆盖问题 二、实验目的及要求 1、熟悉递归算法编写; 2、理解分治算法的特点; 3、掌握分治算法的基本结构。 三、实验环境 Visual C++ 四、实验内容 根据教材上分析的棋盘覆盖问题的求解思路,进行验证性实验; 要求完成棋盘覆盖问题的输入、分治求解、输出。有余力的同学尝试消去递归求解。 五、算法描述及实验步骤 分治算法原理: 分治算法将大的分解成形状结构相同的子问题,并且不断递归地分解,直到子问题规模小到可以直接求解。 棋盘覆盖问题描述: 在一个2k x 2k个方格组成的棋盘中恰有一个方格与其他的不同称为特殊方格,想要求利用四种L型骨牌(每个骨牌可覆盖三个方格)不相互重叠覆盖的将除了特殊方格外的其他方格覆盖。

实验步骤: 1、定义用于输入和输出的数据结构; 2、完成分治算法的编写; 3、测试记录结构; 4、有余力的同学尝试不改变输入输出结构,将递归消除,并说明能否不用栈,直接消除递归,为什么? 六、调试过程及实验结果 详细记录程序在调试过程中出现的问题及解决方法。 记录程序执行的结果。

七、总结 对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。 通过对本实验的学习,对分治算法有了进一步的认识,对棋盘覆盖问题和其他分治问题进行了对比。 八、附录 源程序(核心代码)清单或使用说明书,可另附纸 ① #include #include using namespace std; int board[100][100],tile=1; void chessboard(int tr,int tc,int dr,int dc,int size)//tr 棋盘左上角方格的行号,tc棋盘左上角方格的列号。dr特殊方格所在的行号。dc特殊方格所在的列号。size棋盘的大小2^k. { int s; if(size==1) return ; int t=tile++; s=size/2; //覆盖左上角棋盘 if(dr=tc+s) chessboard(tr,tc+s,dr,dc,s); else { board[tr+s-1][tc+s]=t; chessboard(tr,tc+s,tr+s-1,tc+s,s); } ② //覆盖左下角子棋盘 if(dr>=tr+s&&dc=tr+s&&dc>=tc+s) chessboard(tr+s,tc+s,dr,dc,s); else { board[tr+s][tc+s]=t; chessboard(tr+s,tc+s,tr+s,tc+s,s); } } int main() { int k,tr,tc,size,i,j; cin>>k>>tr>>tc; size=pow(2,k); chessboard(0,0,tr,tc,size); for(i=0;i

算法设计实验报告

《算法设计》实习报告 班级 XXXX 名 XX 学号 XXXXXXX 1.给出Dijkstra算法的思想,并用C或C++实现,并分析该算法的复杂度。对下 图所示的有向网,试利用Dijkstra算法求出从源点1到其他顶点的最短路径。 实习报告的内容: <一>解决问题和算法思想 这个问题即为单源最短路问题。解决单源最短路径的基本思想是把图中所有结点分为两组,每一个结点对应一个距离值。设置两个结点的集合S和T,集合S中存放已找到最短路径的结点,集合T存放当前还未找到最短路径的结点。初始状态时,集合S只包含源点,设为V0,然后不断从集合T中选择到源点V0路径长度最短的结点u加入到集合S中,集合S每加入一个新的结点u都要修改从源点V0到集合T中剩余结点的当前最短路径长度值,集合T中各结点的新的当前路径最短路径,为原来的最短路径与从源点过结点u到达该结点的路径长度中的较小者。此过程不断重复,直到集合T中的结点全部加入到集合S中为止。 <二>调试通过的源程序 (1)顺序表打包文件:seqlist.h typedef struct { datatype list[maxsize]; int size; }seqlist; void listinitiate(seqlist *l) { l->size=0; } int listlength(seqlist l) { return l.size; } int listinsert(seqlist *l,int i,datatype x) { int j; if(l->size>=maxsize)

{ printf("it is too full!\n"); return 0; } else if(i<0||i>l->size) { printf("error!\n"); return 0; } else { for(j=l->size;j>i;j--) l->list[j]=l->list[j-1]; l->list[i]=x; l->size++; return 1; } } int listdelete(seqlist *l,int i,datatype *x) { int j; if(l->size<=0) { printf("it is empty!\n"); return 0; } else if(i<0||i>l->size-1) { printf("error!\n"); return 0; } else { *x=l->list[i]; for(j=i+1;j<=l->size-1;j++) l->list[j-1]=l->list[j]; l->size--; return 1; } } int listget(seqlist l,int i,datatype *x) { if(i<0||i>=l.size-1) { printf("error!\n"); return 0; } else { *x=l.list[i]; return 1; } } (2)邻接矩阵打包文件:adjmgraph.h

算法程序设计实验报告

程序设计》课程设计 姓名:王 学号:20100034 班级:软件工程00 班 指导教师:王会青 成绩: 2010年 6 月 实验一.构造可以使n 个城市连接的最小生成树 专业:__软件工程___ 班级:__软件姓名:_王___ 学号:_20100034 完成日期:_2010/6/26 ________ 一、【问题描述】给定一个地区的n 个城市间的距离网,用Prim 算法或Kruskal 算法建立最小生成树,并计算得到的最小生成树的代价。 1 城市间的道路网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道

路,则将相应边的权值设为自己定义的无穷大值。 2 显示出城市间道路网的邻接矩阵。 3 最小生成树中包括的边及其权值,并显示得到的最小生成树的总代价。 4 输入城市数、道路数→输入城市名→输入道路信息→执行Kruskal 算法→执行Prim 算法→输出最小生成树 二、【问题分析】 1. 抽象数据类型结构体数组的定义: #ifnd ef ADJACENCYMATRIXED// 防止该头文件被重复引用 #define ADJACENCYMATRIXED // 而引起的数据重复定义 #define INFINITY 32767 // 最大值∞ #define MAX_VERTEX_NUM 20 // 最大顶点个数 typedef int VRType; // 权值,即边的值 typedef char InfoType; // 附加信息的类型,后面使用时会定义成一个指针 typedef char VertexType[MAX_VERTEX_NUM]; // 顶点类型 typedef enum {DG=1, DN, UDG, UDN} GraphKind; //{ 有向图,有向网,无向图,无向网} typedef struct ArcCell { VRType adj; //VRType 是顶点关系类型。对无权图,用1 或0 表示相邻否;对带权图,则为权值类型。 InfoType*info; // 该弧关系信息的指针

基于DV算法的路由器模拟设计与实现实验报告

基于DV算法的路由器设计与实现 实验报告 学院: 姓名: 日期:

一.实验目的 1.深入理解分布式路由选择算法,以最简单的DV算法来增强对路由算法的认识 2.理解、掌握和利用距离向量算法 3.所实现的路由器模拟Internet上的IP路由器。它能确定网络的最短路由,并在这些利用上传输分组 二.DV算法描述 距离矢量算法,也称为Bellman-Ford shortest path algorithm,每个路由器都定期或拓扑结构突发变化时与其相邻的所有路由器交换路由表,据此更新它们自己的路由表。 DV算法工作方式:每个路由器维护一路由表,表中分为三个表项:目的地址,列出了当前可达的目的网络地址;到达目的地址下一跳,列出了下一跳的IP地址;到达目的地址的代价,以距离或跳数为表征。 路由表更新规则: 1.发现了一条到达某目的的新路由,而该路由在原来的路由表中不存在(即发现了一条新路由),则在路由表中增加该路由。 2.发现了一条到达某目的的、距离更短的新路由,则用该路由替换原有的路由。 3.到达某目的的一条路由,其后继结点到达该目的地的距离发生了变化,则需要更新该路由的距离。 在此实验当中,为了实现和模拟的方便,刚开始初始化生成一个网络连接图的二维数组(见mainManager/RoutersInit.java,初始化的二维数组是entity/NetMap.java);每个路由器类包括了路由器ID,端口,routerTable对象,还有两个HashMap(一个存储为每一个相邻路由器的计时器,一个存储每一个相邻路由器的上一次交流时间);路由表采用了两个数组来实现,一个数组存储到各个网络的下一跳,一个数组存储到各个网络的跳数,如下结构,以路由器一为例,(路由表的默认数组和两个真是数组的显示信息,其中下一跳是0表示不可达的下一跳,不是0如2004表示下一跳是2004,在距离数组里,如果是16表示不可达,如果是0,表示到本身路由,不是0或16表示可达且跳数为该数值),如下图路由表左边方框中的信息所示:

Romberg龙贝格算法实验报告.

Romberg龙贝格算法实验报告 2017-08-09 课程实验报告 课程名称: 专业班级: CS1306班学号: U201314967 姓名:段沛云指导教师:报 告日期: 计算机科学与技术学院 目录 1 实验目的 (1) 2 实验原理 (1) 3 算法设计与流程框图 (2) 4 源程序 (4) 5 程序运行 (7) 6 结果分析 (7) 7 实验体会 (7) 1 实验目的 掌握Romberg公式的用法,适用范围及精度,熟悉Romberg算法的流程,并能够设计算法计算积分 31 得到结果并输出。 1x 2 实验原理 2.1 取k=0,h=b-a,求T0= 数)。 2.2 求梯形值T0( b-a

),即按递推公式(4.1)计算T0。 k 2 h [f(a)+f(b)],令1→k,(k记区间[a,b]的二分次2 2.3 求加速值,按公式(4.12)逐个求出T表的第k行其余各元素Tj(k-j) (j=1,2,….k)。 2.4 若|Tk+1-Tk| n-1 11T2n=[Tn+hn∑f(xi+)] 22i=0 1 Sn=T2n+(T2n-Tn) 31 Cn=S2n+(S2n-Sn) 151 Rn=C2n+(C2n-Cn) 63 3 算法设计与流程框图 算法设计:(先假定所求积分二分最大次数次数为20) 3.1 先求T[k][0] 3.2 再由公式T (k)m 4m(k+1)1)=mTm-1-mTm(k-1(k=1,2,) 求T[i][j] 4-14-1 3.3 在求出的同时比较T[k][k]与T[k-1][k-1]的大小,如果二者之差的绝对 值小于1e-5,就停止求T[k][k];此时的k就是所求的二分次数,而此时的T[k][k]就是最终的结果 3.4 打印出所有的T[i][j];程序流程图

计算机网络复习提纲-第五章

第5章网络层 5.1网络层概述 网络层负责数据包经过多条链路、由信源到信宿传递过程,并保证每个数据包能够成功和有效率地从出发点到达目的地。为实现端到端的传递,网络层提供了两种服务:线路交换和路由选择。线路交换是在物理链路之间建立临时的连接,每个数据包都通过这个临时链路进行传输;路由选择是选择数据包传输的最佳路径,在这种情况下,每个数据包都可以通过不同的路由到达目的地,然后再在目的地重新按照原始顺序组装起来。 网络层是通信子网的最高层,对上层用户屏蔽了子网通信的细节,如子网类型、拓扑结构、子网数目,向上层提供一致的服务、统一的地址。 5.1.1网络层功能 (1)为传输层提供建立、维持和释放网络连接的手段,完成路由选择、拥塞控制、网络 互联等功能。 (2)根据传输层的要求选择网络服务质量。服务质量的参数主要包括:残留差错率、服 务可用性、可靠性、吞吐量、传输延迟等。 (3)对数据传输过程实现流量控制、差错控制以及顺序控制。 (4)提高资源子网主机节点与通信子网的接口,向传输层提供虚电路服务和数据报服务。 网络层的主要功能是完成网络中主机间的报文传输,其关键问题之一是使用数据链路层服务将每个报文从源端传输到目的端。 基本功能:实现端到端的网络连接,屏蔽不同子网技术的差异,向上层提供一致的服务。 主要功能: 路由选择和转发 通过网络连接在主机之间提供分组交换功能 分组的分段与成块,差错控制、顺序化、流量控制

5.1.2网络层服务的特点 网络层的服务有如下特点: (1)最重要的特点是无连接 (2)服务是不可靠的,传送过程中可能延迟、不按顺序到达或者丢失等 (3)服务是尽力而为的。 网络层实现这种无连接服务的分组传送机制称为网际协议,通称IP协议。 网络层服务应遵循以下三个原则: (1)服务应与通信子网技术无关。 (2)通信子网的数量、类型和拓扑结构对传输层是隐蔽的。 (3)传输层能获得的网络地址应采用统一的编号形式,即使跨越多个LAN和WAN。 5.2路由算法 路由算法是网络层软件的一部分,它负责确定一个进来的分组应该被传送到哪条输出线路上。 5.2.1路由算法选择的参考标准 路由算法选择有以下参考标准: (1)正确性:沿着路由表所指引的路由,分组一定能够传输到最终到达的目的网络和目 的主机。 (2)最优化:指路由算法选择最佳路径的能力。 (3)简洁性:算法设计简洁,利用最少的软件和开销,提供最有效的功能。 (4)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操作 失误时,都能正确运行。 (5)快速收敛:收敛是在最佳路径的判断上所有路由器到达一致的过程。收敛慢的路由 算法会造成路径循环或网络中断。 (6)灵活性:路由算法可以快速、准确地适应各种网络环境。

《算法设计与分析》实验报告

算法设计与分析课程实验项目目录 学生:学号: *实验项目类型:演示性、验证性、综合性、设计性实验。 *此表由学生按顺序填写。

本科实验报告专用纸 课程名称算法设计与分析成绩评定 实验项目名称蛮力法指导教师 实验项目编号实验项目类型设计实验地点机房 学生学号 学院信息科学技术学院数学系信息与计算科学专业级 实验时间2012年3月1 日~6月30日温度24℃ 1.实验目的和要求: 熟悉蛮力法的设计思想。 2.实验原理和主要容: 实验原理:蛮力法常直接基于问题的描述和所涉及的概念解决问题。 实验容:以下题目任选其一 1).为蛮力字符串匹配写一段可视化程序。 2).写一个程序,实现凸包问题的蛮力算法。 3).最著名的算式谜题是由大名鼎鼎的英国谜人 H.E.Dudeney(1857-1930)给出的: S END +MORE MONEY . 这里有两个前提假设: 第一,字母和十进制数字之间一一对应,也就是每个字母只代表一个数字,而且不同的字母代表不同的数字;第二,数字0不出现在任何数的最左边。求解一个字母算术意味着找到每个字母代表的是哪个数字。请注意,解可能并不是唯一的,不同人的解可能并不相同。3.实验结果及分析: (将程序和实验结果粘贴,程序能够注释清楚更好。)

该算法程序代码如下: #include "stdafx.h" #include "time.h" int main(int argc, char* argv[]) { int x[100],y[100]; int a,b,c,i,j,k,l,m,n=0,p,t1[100],num; int xsat[100],ysat[100]; printf("请输入点的个数:\n"); scanf("%d",&num); getchar(); clock_t start,end; start=clock(); printf("请输入各点坐标:\n"); for(l=0;l

贪心算法解汽车加油问题实验报告

计算机算法与分析 设计报告 班级:信管一班信管二班 姓名(学号):赵立贺(060340219) 赵艳(060340114)刘辉(060340125)王勇(060340116)万玉琪(060340213)刘旺(060340205)指导教师:赵晓峰姚天祥 设计地点:信息系统实验室 信息管理系 2008年12月13日

一、实验名称: 用贪心算法、回溯算法、动态规划等解决汽车加油次数最少问题。 二、实验目的: 课程设计是《计算机算法与设计》课程不可缺少的重要实践性环节。通过实践教学,要达到以下目的: (1)使学生掌握线性表、栈、队列、串、树、二叉树、图、集合等各种典型抽象数据类型的数学模型及其所支持基本运算的实现方法; (2)使学生掌握以抽象数据类型为模块的面向对象程序设计方法; (3)使学生提高对实际问题的分析、设计和实现能力; (4)为学生后续课程的学习及课程设计打下坚实的实践基础。 三、使用的策略: 贪心算法、回溯算法等。 四、实验内容: (一)问题描述 一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。 (二)问题分析(前提行驶前车里加满油) 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为a[i];i=0,1,2,3……n 1.始点到终点的距离小于N,则加油次数k=0; 2.始点到终点的距离大于N, A 加油站间的距离相等,即a[i]=a[j]=L=N,则加油次数最少k=n; B 加油站间的距离相等,即a[i]=a[j]=L>N,则不可能到达终点; C 加油站间的距离相等,即a[i]=a[j]=L

路由算法分类比较

路由算法是路由协议必须高效地提供其功能,尽量减少软件和应用的开销。 路由器使用路由算法来找到到达目的地的最佳路由。 关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由,有两种主要的路由算法:总体式路由算法和分散式路由算法。采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法。采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。 收敛是在最佳路径的判断上所有路由器达到一致的过程。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径。收敛慢的路由算法会造成路径循环或网络中断。 路由算法的核心是路由选择算法,设计路由算法时要考虑的技术要素有: 1、选择最短路由还是最佳路由; 2、通信子网是采用虚电路操作方式还是采用数据报的操作方式; 3、采用分布式路由算法还是采用集中式路由算法; 4、考虑关于网络拓扑、流量和延迟等网络信息的来源; 5、确定采用静态路由还是动态路由。 各路由算法的区别点包括:静态与动态、单路径与多路径、平坦与分层、主机智能与路由器智能、域内与域间、链接状态与距离向量。 链接状态算法(也叫做短路径优先算法)把路由信息散布到网络的每个节点,不过每个路由器只发送路由表中描述其自己链接状态的部分。 距离向量算法(也叫做 Bellman-Ford算法)中每个路由器发送路由表的全部或部分,但只发给其邻居。 也就是说,链接状态算法到处发送较少的更新信息,而距离向量算法只向相邻的路由器发送较多的更新信息。 metric是路由算法用以确定到达目的地的最佳路径的计量标准,如路径长度。

算法设计与分析实验报告

算法设计与分析实验报告 教师: 学号: 姓名:

实验一:串匹配问题 实验目的:(1) 深刻理解并掌握蛮力法的设计思想; (2) 提高应用蛮力法设计算法的技能; (3) 理解这样一个观点: 用蛮力法设计的算法, 一般来说, 经过适度的努力后, 都可以对算法的第一个版本进行一定程度的改良, 改进其时间性能。 三、实验要求:( 1) 实现BF 算法; (2 ) 实现BF 算法的改进算法: KMP 算法和BM 算法; (3 ) 对上述 3 个算法进行时间复杂性分析, 并设计实验程序验证 分析结果。 #include "stdio.h" #include "conio.h" #include //BF算法 int BF(char s[],char t[]) { int i; int a; int b; int m,n; m=strlen(s); //主串长度 n=strlen(t); //子串长度 printf("\n*****BF*****算法\n"); for(i=0;i

银行家算法_实验报告

课程设计报告课程设计名称共享资源分配与银行家算法 系(部) 专业班级 姓名 学号 指导教师 年月日

目录 一、课程设计目的和意义 (3) 二、方案设计及开发过程 (3) 1.课题设计背景 (3) 2.算法描述 (3) 3.数据结构 (4) 4.主要函数说明 (4) 5.算法流程图 (5) 三、调试记录与分析 四、运行结果及说明 (6) 1.执行结果 (6) 2.结果分析 (7) 五、课程设计总结 (8)

一、程设计目的和意义 计算机科学与技术专业学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,其目的在于加深催操作系统基础理论和基本知识的理解,加强学生的动手能力.银行家算法是避免死锁的一种重要方法。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法 二、方案设计及开发过程 1.课题设计背景 银行家算法又称“资源分配拒绝”法,其基本思想是,系统中的所有进程放入进程集合,在安全状态下系统受到进程的请求后试探性的把资源分配给他,现在系统将剩下的资源和进程集合中其他进程还需要的资源数做比较,找出剩余资源能满足最大需求量的进程,从而保证进程运行完成后还回全部资源。这时系统将该进程从进程集合中将其清除。此时系统中的资源就更多了。反复执行上面的步骤,最后检查进程的集合为空时就表明本次申请可行,系统处于安全状态,可以实施本次分配,否则,只要进程集合非空,系统便处于不安全状态,本次不能分配给他。请进程等待 2.算法描述 1)如果Request[i] 是进程Pi的请求向量,如果Request[i,j]=K,表示进程Pi 需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查: 如果Requesti[j]<= Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 2)如果Requesti[j]<=Available[j],便转向步骤3,否则,表示尚无足够资源,进程Pi须等待。 3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值: Available[j]:=Available[j]-Requesti[j]; Allocation[i,j]:=Allocation[i,j]+Requesti[j]; Need[i,j]:=Need[i,j]-Requesti[j];

计算机网络GBN和路由算法实验报告

计算机网络实验报告 ----GBN 和路由算法 学号:13410801 教师:尹辉 GBh 模拟实验 1. 实验目的 运用java 编程语言实现基于 Go-Back-N 的可靠数据传输软件。 2. 实验意义 通过本实验,使学生能够对可靠数据传输原理有进一步的理 解和掌握。 3. 实验背景 Go-Back- N 的有限状态机模型表示如下图所示: rdt_send(data) if (nexteeqnum < base 十N) t compute chksum m ake_p kt(snd pktfnextseq num)),n extseqn umxJ ota ;ch ksu m ) u di_se nd(s nd pkt(nextseq numj) if (base == nextseqnum) start 」inn 的 nextseqnum - nextseqnurm + 1 1 etse start_timer udtjen d( sn dp kt (base)) udt_se n d(sn dp kt (base+)) udt_se n d(sn dp kt (nex tseq num-1]) (a) 姓名:房皓 timeout

rdt_rcv(rcvpkt) && notcorru pt( rcvpkt)故& h a sseq num( rcvpkt ,expectedseq num^) extra ct( rcvpkt r d ata ) d e live L_data (data) m a ke_pkt (snd pkt ? ACK ,expec tedsBq 仃 um) ud j t_send(sndpld) (b ) 图为Go-Back-N 的有限状态机模型(a )发送端(b )接受端 4. 实验步骤 (1) 选择java 编程语言编程实现基于Go-Back-N 的可靠数据 传输软件。 (2) 在实际网络环境或模拟不可靠网络环境中测试和验证 自己的可靠数据传输软件。 5. 实验环境 (1) 实验语言:JAVA (2) 实验平台:Eclipse (3) 引用库函数:随机(Random )库、计时库(Timer ) 6. 类概览与描述 (1) Sender 类:继承于Thread (线程)类,模拟发送方的 一切功 能,主要功能函数有: A. Public void run () - 启动函数,标识开始发送数 据包 B. Sender ()――构造函数,分配并初始化窗口值 C. Public void getack ( in tack ) A CK 接收函数,接 收接收方返回的ACK 并进行验证是否为期待的 ACK 值(若不是,则重发) default udt_send(sndpkt>

相关文档
最新文档