《第7章 图结构》习题解答

《第7章  图结构》习题解答
《第7章  图结构》习题解答

第7章图结构

本章学习要点

◆熟悉图的定义、相关术语以及基本概念

◆熟练掌握图的4种存储结构,能根据实际问题选择合适的存储结构

◆熟练掌握图的两种遍历方法

◆理解并掌握最小生成树意义和两种算法

◆理解并掌握查找最短路径的有关算法

◆理解并掌握拓扑排序的有关算法

◆理解并掌握查找关键路径的有关算法

在计算机科学、工程以及其它许多学科中,常常需要研究数据对象之间的各种关系。比如,可以用线性表来表示数据对象之间的线性关系,用树结构来表示数据对象之间的某种层次关系。但是,还有许多问题(比如信息通信网络)中的数据对象是不能用以上两种关系来明确表示的,这就需要一种更为复杂的数据结构—图结构。图结构可以用来表示数据对象之间的任意关系,图中的每个结点都可以和其它任一结点相连接,即图中数据对象之间的对应关系是“多个对多个”的关系。

本章将详细介绍图的基本概念、各种存储结构、遍历方法,求图的连通分量、生成树、最短路径,最后介绍一些有关图的应用问题。

7.1图的定义和基本术语

7.1.1图的定义

图G(graph)是由两个集合V和V R组成,记为G=(V,V R)。V是顶点的有穷非空集合;V R 是定义在V上的所有关系(两个不同顶点之间的弧或边)的集合。V R可以是空集合,当V R 为空集时G表示集合类结构类型。如图7.1(a)、(b)所示的是一个有向图和一个无向图。

7.1.2图结构的基本术语

(1)顶点(Vertex)图中的数据元素。比如,图7.1中的顶点有:v1,v2,v3,v4,v5,v6。

(2)弧(Arc)设V R是图中所有顶点之间的关系集,若∈V R,则表示从顶点v

到顶点w 的一条弧。

例如,在图7.1(a)所示的图G 中的弧有:,,,,,,共8条弧。 (3)弧尾(Tail) 弧的起始点。

(4)弧头(Head) 弧的终端点。一条弧用有序对符号“<弧尾,弧头>”来表示。

(5)有向图(Digraph) 由顶点和弧组成的图称为有向图。比如,图7.1(a)表示一个有向图。 (6)边(Edge) 设V R 是图中所有顶点之间的关系集,若∈V R 必有∈V R ,则以无序对符号(v,w)或(w,v)来代替,表示顶点v 与顶点w 之间的一条边。

例如,在图7.1(b)所示的图G 中的边有:(v1,v2),(v1,v4),(v2,v3),(v2,v6),(v3,v5),(v4,v5)和(v5,v6)共7条边。 (7)无向图(Undigraph) 由顶点和边组成的图称为无向图。比如,图7.1(b)表示一个无向图。 (8)完全图(Completed graph) 用n 表示图中的顶点数,则具有n(n-1)/2条边的无向图称为无向完全图;具有n(n-1)条弧的有向图称为有向完全图。当图G 中边(或弧)的总数e 满足:

log e n n <时,称其为稀疏图(sparse graph);当e 满足:log e n n ≥时称其为稠密图(dense

graph)。显然,完全图是稠密图,反之不然。图7.2(a)所示为由4个顶点组成的无向完全图,而图7.2(b)则是由3个顶点组成的有向完全图。

(9)权(Weight) 与图的边或弧相关的数(比如长度)称为权。

(10)网(Network) 具有权值的图称为网,带权的有向图称为有向网,带权的无向图称为无向网。比如,图7.3(a)表示的是一个有向网,而图7.3(b)表示的是一个无向网。

(11)子图(Subgraph) 假设有两个图G=(V ,E)和G ’

=(V ’

,E ’

),若V ’?V 并且E ’?E ,则称G ’

是G 的子图。

例如,图7.4(a)为有向图及其部分子图,图7.4(b)为无向图及其部分子图。

(12)邻接点(Adjacent) 对于无向图G=(V ,V R ),若边(v,w)∈V R ,则称v 和w 互为邻接点,边(v,w)依附(Incident)于顶点v 和w ,或者说边(v,w)与顶点v 、w 相关联。对于有向图G=(V,V R ),若弧∈V R ,则称顶点v 邻接到顶点w ,顶点w 邻接自顶点v 。

(13)度(Degree) 在无向图中,顶点v 的度是指和v 相关联的边的数目,记为TD(v)。 (14)出度(Out degree)和入度(In degree) 在有向图中,顶点v 的出度是指以v 为弧尾的弧的数目,记为OD(v);顶点v 的入度是指以v 为弧头的弧的数目,记为ID(v);顶点v 的度是指v 的出度、入度的和,记为TD(v)。

一般地,如果顶点v i 的度记为TD(v i ),那么一个有n 个顶点e 条边(或弧)的图,必定满足关系如下:

11()2n

i i e TD v ==∑

(15)路径(Path) 在图中,从顶点v 到顶点w 的顶点序列称为路径。显然,有向图的路径是有向的。路径长度是指路径上的边或弧的数目。序列中顶点不重复出现的路径称为简单路径。

(16)回路或环(Cycle) 在路径的顶点序列中,第一个顶点和最后一个顶点相同的路径称为回路。除了第一个顶点和最后一个顶点外,其余顶点均不重复出现的回路称为简单回路或简单环。

例如,在图7.4(a)所示的有向图中,顶点序列(v 1,v 3,v 4,v 1,v 2)表示一条有向路径,由于其中存在重复点v 1所以不是简单路径,该路径的长度为4;顶点序列(v 1,v 3,v 4)表示一条有向路径,并且是长度为2的简单路径;顶点序列(v 1,v 3,v 4,v 1)表示一条有向路径并且是长度为3的简单回路(或环)。在图7.4(b)所示的无向图中,顶点序列(v 1,v 3,v 5,v 4,v 3,v 5,v 2)表示一条路径,由于其中存在重复点v 3、v 5所以不是简单路径;顶点序列(v 1,v 3,v 4,v 5,v 2,v 1)是长度为5的简单回路。 (17)连通图(Connected graph) 在无向图G=(V ,V R )中,如果从顶点v 到顶点w 有路径,则称v 与w 是连通的。如果对于任意两个顶点v,w ∈V 都是连通的则称G 是连通图。

(18)连通分量(Connected component) 无向图G 中的极大连通子图称为G 的连通分量。图7.5给出一个无向图和它的3个连通分量的示例。

(19)强连通图 在有向图G=(V ,V R )中,如果对于任意两个顶点v,w ∈V ,都存在一条v 到w

的路径,则称G是强连通图;如果对于任意两个顶点v,w∈V,都存在一个顶点序列:v=v0,v1,v2,…,v k=w满足∈V R,则称G是弱连通图。

例如,图7.1(a)为弱连通图,图7.2(b)为强连通图。

(20)强连通分量有向图G中的极大强连通子图称为G的强连通分量。图7.6给出一个有向图和它的2个强连通分量的示例。

说明:

在连通分量和强连通分量定义中的“极大”应理解为包含依附于该连通子图或强连通子图中顶点的所有边或弧。

(21)生成树一个无向连通图的生成树是一个极小连通子图,即它包含图中的所有(假设n个)顶点,但是只有足以构成一棵树的n-1条边。

说明:

1)一个无向连通图的生成树不是唯一的,所有生成树的顶点相同但是所包含的边可以不同。

2)一棵有n个顶点的连通图的生成树有且仅有n-1条边。但是有n个顶点和n-1条边的无向图不一定是生成树。

例如,图7.7给出一个连通图(图7.7(a))和它的3棵生成树(图7.7(b))的示例。

(22)生成森林如果一个有向图G恰有一个顶点的入度为0,其余顶点的入度均为1,则G是一棵有向树。一个有向图的生成森林由若干棵有向树组成,森林中含有图中全部顶点,但是只有足以构成若干棵不相交的有向树的弧。显然,一个有向图生成的有向树或生成森林都不是唯一的。

关于“顶点位置”的说明:

在图的基本操作定义中,其“顶点位置”和“邻接点位置”仅是一个相对的概念。从图的定义

可以看出,图中所有顶点的位置都是平等的,可以将任意一个顶点看成是第一个或最后一个顶点,也无法将其排列成一个线性序列或层次关系。在实际操作中,为了方便起见,需要将所有顶点按照某个任意选定的顺序排列起来(排列与图中顶点之间的关系无关)。所以,“顶点在图中的位置”是指该顶点在这个人为的随意排列中的位置(或序号)。同理,可以对某个顶点的所有邻接点按照某个任意选定的顺序进行排列。

7.1.3图的基本操作

对于图结构,常用的操作有以下几种:

(1)创建CreateGraph(&G,V,VR)根据顶点集V和关系(边或弧)集VR构造图G;

(2)查找LocateVex(G,u)函数功能是,如果图G中存在信息等于u的顶点则返回该顶点在G中的位置,否则返回0;

(3)提取GetVex(G,v) 函数功能是,返回图G中顶点v的信息;

(4)修改PutVex(&G,v,value)函数功能是,修改图G中顶点v的信息为value;

(5)邻接点FirstAdjVex(G,v)函数功能是,返回图G中顶点v的第一个邻接点在G中的位置,操作不成功时返回0;

(6)下一个邻接点NextAdjVex(G,v,w)函数中v,w是图G的顶点,且w是v的一个邻接点。函数功能是,返回顶点v相对于w的下一个邻接点所在的位置,如果w是v的最后一个邻接点则返回0;

(7)插入顶点InsertVex(&G,v)函数功能是,在图G中插入顶点v;

(8)删除顶点DeleteV ex(&G,v)函数功能是,在图G中删除顶点v以及相关的边或弧;

(9)插入弧InsertArc(&G,v,w)函数功能是,在图G中增加边(v,w)或弧

(10)删除弧DeleteArc(&G,v,w)函数功能是,在图G中删除边(v,w)或弧

(11)深度优先遍历DSFTraverse(G,v,Visit())函数功能是,从顶点v开始按深度优先遍历图G,其中Visit()是关于顶点的操作函数;

(12)广度优先遍历BSFTraverse(G,v,Visit())函数功能是,从顶点v开始按广度优先遍历图G,其中Visit()是关于顶点的操作函数。

7.2 图的存储表示与实现

图是一种复杂结构其存储方法也比较多,在实际应用中,一般需要根据具体的图形和要进行的操作来选取适当的存储结构。图的常用存储结构有:邻接矩阵表示法、邻接表表示法、十字链表表示法和多重链接表表示法。

7.2.1邻接矩阵表示法

邻接矩阵表示法是图的一种顺序存储表示法。用两个数组分别存储数据元素(顶点)的信息和元素之间所存在的关系(边或弧)的信息。该表示法既可用于表示无向图也可用于表示有向图。

1.邻接矩阵的定义

设G=(V,V R )是一个图,含有n 个顶点,那么G 的邻接矩阵是表示G 中顶点之间相邻关系的n 阶方阵A n×n ,下面分别根据有权图和无权图给出矩阵A 的定义。

如果G 是无权图,则A 的定义为:

1

(,),[][]0

i j R i j R

v v V v v V A i j ∈<>∈=??

?或其它情况

如果G 是有权图,则A 的定义为:

0(,),[][]ij

i j R i j R

ij w v v V v v V A i j ∞∈<>∈≠=??

?或权值其它情况(为操作统一此处用而非)

(w 0)

【例7.1】分别给出图7.1、图7.3中各图的邻接矩阵。

在图7.1(a)、图7.1(b)中,图的顶点顺序按123456,,,,,v v v v v v 排列时的邻接矩阵分别如图7.9(a)、图7.9(b)所示;在图7.3(a)、图7.3(b)中,图的顶点顺序分别按,,,A B C D 和,,,,A B C D E

排列时的邻接矩阵分别如图7.9(c)、图7.9(d)所示。

显然,图的邻接矩阵有以下特点:

(1) 当图中顶点的排列顺序确定后,该图的邻接矩阵是唯一确定的;

(2) 无向图的邻接矩阵是对称的,可以采用压缩存储的方法仅存入其下三角(或上三角)部分的元素即可;

(3) 在无向图中,顶点v i 的度是其邻接矩阵A 的第i 行元素的和,即:1

0()[][]n i j TD v A i j -==∑;

(4) 在有向图中,顶点v i 的出度是其邻接矩阵A 的第i 行元素的和,而入度是A 的第i 列元素的和,所以v i 的度可以表示为:1

1

()[][][][]n n i j j TD v A i j A j i --===+∑∑(n 为图中顶点的个数)。

2.邻接矩阵的存储表示与实现 (1)邻接矩阵的类型定义

typedef enum{DG,DN,UDG,UDN}GKind; //图的类型GKind{有向图,有向网,无向图,无向网}

typedef int VType; //为便于操作,定义顶点类型VType为int 型struct VNode{int flag;VType vex;}; //顶点与访问情况类型VNode{访问次数,顶点信息} struct MGraph{ //定义图的邻接矩阵类型MGraph VNode* vexs; //描述顶点的数组指针vexs

VType* arcs; //邻接矩阵的数组指针arcs

int vexnum,arcnum; //顶点数vexnum和边或弧数arcnum

GKind kind; //图的种类标志kind

};

(2)查找图中顶点位置的操作

函数的功能是,返回顶点u在图G中的位置,查找失败返回0值。

int LocateVex_MG(MGraph G,VType u)

{ int i;

for(i=0;i

if(G.vexs[i].vex==u) break;

if(i

else return(0);

}

(3)邻接矩阵的建立操作

函数的功能是,根据图G的种类标志kind建立图G的所有信息。

#include"iostream.h"

void CreateGraph_MG(MGraph& G,GKind kind)

{

int i,j,k;

VType u,v;

cout<<"输入顶点数vexnum和弧数arcnum:";

cin>>G.vexnum>>G.arcnum;

G.kind=kind;

G.vexs=new VNode[G.vexnum]; //为G.vexs分配存储空间

G.arcs=new VType[G.vexnum*G.vexnum]; //为G.arcs分配存储空间

cout<<"按某种顺序输入"<

for(i=0;i

{ G.vexs[i].flag=0; //flag=0表示该顶点未被访问

cin>>G.vexs[i].vex; //输入所有顶点的信息到G.vexs中}

for(i=0;i

G.arcs[i*G.vexnum+j]=0;

if(G.kind==DG||G.kind==UDG)

cout<<"输入图中"<

else

cout<<"输入图中"<

for(k=0;k

{ do{ cin>>u>>v; } //根据顶点信息找到所在位置

while(!((i=LocateVex_MG(G,u))&&(j=LocateVex_MG(G,v))));

i--,j--; //i,j从位置值转换为下标值

G.arcs[i*G.vexnum+j]=1;

if(G.kind==DN||G.kind==UDN)

cin>>G.arcs[i*G.vexnum+j]; //输入相应边或弧的权重w

if(G.kind==UDG||G.kind==UDN) //无向图的邻接矩阵是对称的

G.arcs[j*G.vexnum+i]=G.arcs[i*G.vexnum+j];

}

}

(4)显示输出邻接矩阵的操作

函数功能是,显示输出图G的邻接矩阵G.arcs。

void DisplyMG(MGraph G)

{ int i,j;

for(i=0;i

{ for(j=0;j

cout<

cout<

}

}

(5)演示程序主函数

程序中分别建立有向图G1、无向图G2、有向网G3和无向网G4的邻接矩阵,并显示输出每个邻接矩阵的数据信息。

void main()

{ MGraph G1,G2,G3,G4;

GKind gk1=DG,gk2=UDG,gk3=DN,gk4=UDN;

cout<<"建立一个有向图的邻接矩阵G1:\n";

CreateGraph_MG(G1,gk1);

cout<<"建立一个无向图的邻接矩阵G2:\n";

CreateGraph_MG(G2,gk2);

cout<<"有向图G1的邻接矩阵为:\n";

DisplyMG(G1);

cout<<"无向图G2的邻接矩阵为:\n";

DisplyMG(G2);

cout<<"***************************************\n";

cout<<"建立一个有向网的邻接矩阵G3:\n";

CreateGraph_MG(G3,gk3);

cout<<"建立一个无向网的邻接矩阵G4:\n";

CreateGraph_MG(G4,gk4);

cout<<"有向网G3的邻接矩阵为:\n";

DisplyMG(G3);

cout<<"无向网G4的邻接矩阵为:\n";

DisplyMG(G4);

}程序运行演示结果为:

建立一个有向图的邻接矩阵G1:

输入顶点数vexnum和弧数arcnum:6 8↙按某种顺序输入6个顶点的值:

1 2 3 4 5 6↙

输入图中8条边(弧)的信息u v:

1 2 1 4 3 1 3 6 4 3 5 4 6 1 6 5↙建立一个无向图的邻接矩阵G2:

输入顶点数vexnum和弧数arcnum:6 7↙按某种顺序输入6个顶点的值:

1 2 3 4 5 6↙

输入图中7条边(弧)的信息u v:

1 2 1 4 2 3 2 6 5 3 5 6 5 4↙

有向图G1的邻接矩阵为:

0 1 0 1 0 0

0 0 0 0 0 0

1 0 0 0 0 1

0 0 1 0 0 0

0 0 0 1 0 0

1 0 0 0 1 0

无向图G2的邻接矩阵为:

0 1 0 1 0 0

1 0 1 0 0 1

0 1 0 0 1 0

1 0 0 0 1 0

0 0 1 1 0 1 0 1 0 0 1 0

*************************************** 建立一个有向网的邻接矩阵G3:

输入顶点数vexnum和弧数arcnum:4 4↙

按某种顺序输入4个顶点的值:

1 2 3 4↙

输入图中4条边(弧)和权的信息u v w:

1 2 7 1 3 1 3 4 5 4 1 9↙

建立一个无向网的邻接矩阵G4:

输入顶点数vexnum和弧数arcnum:5 5↙

按某种顺序输入5个顶点的值:

1 2 3 4 5↙

输入图中5条边(弧)和权的信息u v w:

1 2 9 4 1 8 4 2 3 4 5 1 3 5 12↙

有向网G3的邻接矩阵为:

0 7 1 0

0 0 0 0

0 0 0 5

9 0 0 0

无向网G4的邻接矩阵为:

0 9 0 8 0

9 0 0 3 0

0 0 0 0 12

8 3 0 0 1

0 0 12 1 0

说明:

(1)程序演示中建立的是图7.1、图7.3中4个图的邻接矩阵:G1.arcs、G2.arcs、G3.arcs、G4.arcs。从运行结果可以看出与图7.9的形式一致。

(2)在图的邻接矩阵存储结构上也容易实现其它基本操作,比如,对于无向图G中返回顶点v的第一个邻接点位置的基本操作函数:int FirstAdjVex_MG(MGraph G,VType v)。

算法的实现过程是:

1) 根据顶点信息v,通过调用函数int LocateVex_MG(MGraph G,VType v)找到v在G中的位置i;

2) 在G的邻接矩阵中寻找第i行中第一个非零元素所在的列号j;

3) 如果j存在函数返回j+1,否则返回0值。

类似地可以给出函数:int NextAdjVex_MG(MGraph G,VType v,VType w)的算法实现代码。(3)用邻接矩阵表示有n个顶点的图G时,查找边(或弧)的时间复杂度为O(n2)。由于邻接矩阵的存储空间仅与顶点数n有关,而与边无关,因此,当图G的顶点较多而边数又很少时,其边的查找效率会很低。为此,下面给出图的另一种存储结构,即图的邻接表表示法。

7.2.2邻接表表示法

图的邻接表表示是把图的每个顶点的邻接顶点用一个链表来表示。一般地,用顺序存储的方式来表示图中n个顶点的信息,另外,对图中每个顶点v建立一个单链表,用于表示与v 相邻接的所有顶点的位置(下标)。链表中每个结点有两个域值:一个是顶点位置(下标)域,用于表示该邻接点的序号;另一个是指针域,用于指向下一个邻接点。

1.邻接表的定义

(1) 表结点在邻接表中,对图中的每个顶点建立一个单链表,顶点v所对应的单链表中的结点(表示依附于该顶点的边或以v为尾的弧)称为表结点。图的表结点中包含有顶点位置域(adjvex)、指向下一条边(弧)的指针域(nextarc);而网的表结点中还要有表示相应权值的域(weight)。

(2) 头结点在邻接表中每个单链表上附设一个结点,称为头结点。每个头结点由3个域组成:结点信息域(data)、结点访问次数域(flag)和指向链表中第一个结点的指针域(nextarc)。图中的所有头结点以顺序结构存储。

在图7.10中分别给出邻接表表结点的结构示图(a)和头结点的结构示图(b)。

例如,图7.11分别给出有向图G1和无向图G2的一种邻接表表示结构。

由于图中顶点的排列次序可以不同,每个顶点的邻接点的排列顺序也可以不同,所以,一个图的邻接表表示不唯一。

用邻接表表示具有n个顶点和e条边的无向图时,需要一个由n个元素组成的顺序表(表头结点表)和由2e个结点组成的n个单链表。而表示n个顶点和e条弧的有向图时,需要一个由n个元素组成的顺序表和由e个结点组成的n个单链表。当图中边(或弧)的数目远远少于图的顶点数目时,邻接表所需的存储空间要比邻接矩阵所需的少。

2.逆邻接表

在图G的邻接表中,顶点v的相邻元素可以通过遍历该顶点对应的单链表求得,设该链表中结点的个数为k那么,G为无向图时k表示v的度,G为有向图时k表示v的出度。如果求顶点v的入度,则需要遍历邻接表中的所有单链表,统计与v的序号相同的结点个数。这样处理很不方便,为此,仿照邻接表,建立一个逆邻接表,即对每个顶点v建立一个单链表,把所有邻接于v的顶点链接在一起,此时该单链表的长度即为v的入度。

例如,图7.11(a)所示的有向图可用逆邻接表表示为图7.12。

3.邻接表的存储表示与实现

(1)邻接表存储结构的类型定义

定义单链表结点类型ArcNode:

struct ArcNode{ int adjvex,weight;ArcNode* nextarc;};

定义链表头结点结构类型VexNode:

struct VexNode{VType data;int flag;ArcNode* nextarc;};

定义邻接表存储结构的类型ALGraph:

struct ALGraph{

VexNode* vertices; //定义头结点数组指针vertices

int vexnum,arcnum; //顶点数vexnum和边或弧数arcnum

GKind kind; //图的种类标志kind

};

(2)查找图中顶点位置的操作

函数的功能是,返回顶点u在图G中的位置,查找失败返回0值。

int LocateVex_AL(ALGraph G,VType u)

{ int i;

for(i=0;i

if(G.vertices[i].data==u) break;

if(i

else return(0);

}

(3)邻接表的建立操作

函数的功能是,根据图G的种类标志kind建立G的邻接表表示的存储结构。

#include"iostream.h"

void CreateGraph_AL(ALGraph& G,GKind kind)

{ int i,j,k;

VType u,v;

ArcNode* pr,*pr1;

G.kind=kind;

cout<<"输入顶点数和边(弧)数vexnum arcnum:";

cin>>G.vexnum>>G.arcnum;

G.vertices=new VexNode[G.vexnum]; //为顶点数组分配内存空间

cout<<"按某种顺序输入"<

for(i=0;i

{ G.vertices[i].flag=0; //flag=0表示该顶点未被访问cin>>G.vertices[i].data; //输入所有顶点的信息到vex中

G.vertices[i].nextarc=NULL; //设定初始的单链表为空

}

if(G.kind==DG||G.kind==UDG)

cout<<"输入图中"<

else

cout<<"输入图中"<

for(k=0;k

{

do{ cin>>u>>v;}

while(!((i=LocateVex_AL(G,u))&&(j=LocateVex_AL(G,v))));

i--,j--; //i,j从位置值转换为下标值

pr=new ArcNode; //动态分配单链表结点pr

pr->adjvex=j; pr->weight=0;

if(G.kind==DN||G.kind==UDN)cin>>pr->weight; //输入对应边(弧)的权值

pr->nextarc=G.vertices[i].nextarc; //将结点pr插入到第i个链表的首部

G.vertices[i].nextarc=pr;

if(G.kind==UDG||G.kind==UDN) //对于无向图(或网)将结点pr1插入到第j个链表的首部

{

pr1=new ArcNode; //动态分配单链表结点pr1

pr1->adjvex=i;

pr1->weight=pr->weight;

pr1->nextarc=G.vertices[j].nextarc;

G.vertices[j].nextarc=pr1; //将结点pr1插入到第j个链表的首部

}//end switch

}//end for

}

(4)显示输出邻接矩阵的操作

函数功能是,显示输出图G的邻接链表中的所有信息。

void DisplyAL(ALGraph G)//显示邻接矩阵G

{ int i;

ArcNode* p;

for(i=0;i

{ p=G.vertices[i].nextarc;

cout<

while(p)

{ if(G.kind==DG||G.kind==UDG) //对于图仅输出顶点的下标值

cout<<'['<adjvex<<"] ";

else //对于网要输出下标与对应的权的值

cout<<'['<adjvex<<','<weight<<"] ";

p=p->nextarc;

}

cout<

}//end for

}

(5)演示程序主函数

程序中分别建立有向图G1、无向图G2、有向网G3和无向网G4的邻接表,并显示输出所建立的每个邻接表的数据信息。

void main()

{ ALGraph G1,G2,G3,G4;

GKind gk1=DG,gk2=UDG,gk3=DN,gk4=UDN;

cout<<"建立一个有向图的邻接表G1:\n";

CreateGraph_AL(G1,gk1);

cout<<"建立一个无向图的邻接表G2:\n";

CreateGraph_AL(G2,gk2);

cout<<"有向图G1的邻接表为:\n";

DisplyAL(G1);

cout<<"无向图G2的邻接表为:\n";

DisplyAL(G2);

cout<<"***************************************\n";

cout<<"建立一个有向网的邻接表G3:\n";

CreateGraph_AL(G3,gk3);

cout<<"建立一个无向网的邻接表G4:\n";

CreateGraph_AL(G4,gk4);

cout<<"有向网G3的邻接表为:\n";

DisplyAL(G3);

cout<<"无向网G4的邻接表为:\n";

DisplyAL(G4);

}

程序运行演示结果为:

建立一个有向图的邻接表G1: 输入顶点数和边(弧)数vexnum arcnum:6 8↙

第7章 图结构

按某种顺序输入6个顶点的值: 1 2 3 4 5 6↙

输入图中8条边(弧)的信息u v:

1 2 1 4 3 1 3 6 4 3 5 4 6 1 6 5↙ 建立一个无向图的邻接表G2:

输入顶点数和边(弧)数vexnum arcnum:6 7↙ 按某种顺序输入6个顶点的值: 1 2 3 4 5 6↙

输入图中7条边(弧)的信息u v:

1 2 1 4 2 3 2 6 5 3 5 6 5 4↙ 有向图G1的邻接表为: 0 (1): [3] [1] 1 (2):

2 (3): [5] [0]

3 (4): [2]

4 (5): [3]

5 (6): [4] [0]

无向图G2的邻接表为: 0 (1): [3] [1] 1 (2): [5] [2] [0] 2 (3): [4] [1] 3 (4): [4] [0] 4 (5): [3] [5] [2] 5 (6): [4] [1]

*************************************** 建立一个有向网的邻接表G3:

输入顶点数和边(弧)数vexnum arcnum:4 4↙ 按某种顺序输入4个顶点的值: 1 2 3 4↙

输入图中4条边(弧)和权的信息u v w: 1 2 7 1 3 1 3 4 5 4 1 9↙ 建立一个无向网的邻接表G4:

输入顶点数和边(弧)数vexnum arcnum:5 5↙ 按某种顺序输入5个顶点的值: 1 2 3 4 5↙

输入图中5条边(弧)和权的信息u v w: 1 2 9 4 1 8 4 2 3 4 5 1 3 5 12↙ 有向网G3的邻接表为: 0 (1): [2,1] [1,7] 1 (2):

2 (3): [3,5]

3 (4): [0,9]

无向网G4的邻接表为: 0 (1): [3,8] [1,9] 1 (2): [3,3] [0,9] 2 (3): [4,12]

3 (4): [4,1] [1,3] [0,8]

4 (5): [2,12] [3,1]

说明: (1)程序演示中建立的是图7.1、图7.3中4个图的一种邻接表表示:G1.vertices 、G2.vertices 、G3.vertices 和G4.vertices 。

(2)在程序显示的结果中,第一列为顶点的下标,第二列为图中所有顶点的值。对于图,单链表中的每一项表示该顶点的邻接点的下标;对于网,单链表中的每一项表示该顶点的邻接点的下标值和相应边(弧)的权值。

(3)在建立邻接表时,由于输入的是顶点信息,所以要先通过查找求得该顶点在图中的位置,再将相应结点插入到对应单链表的首部,所以,该操作的时间复杂度为O(n*e)。

7.2.3有向图的十字链表表示法

十字链表是有向图的另一种链式存储结构,该方法是将有向图的邻接表和逆邻接表结合起来得到的一种链表。

1.十字链表的定义

类似邻接表,在十字链表中包含链表的头结点和弧结点两种类型的结点,图7.13给出十字链结点结构的示图。

其中,头结点包含顶点信息域(data)、指向以该顶点为弧头的第一个弧结点的指针域(firstin)、指向以该顶点为弧尾的第一个弧结点的指针域(firstout),表的所有头结点以顺序存储。弧结点包含表示弧尾顶点下标的尾域(tailvex)、表示弧头顶点下标的头域(headvex)、指向弧头相同的下一条弧的指针域(hlink)、指向弧尾相同的下一条弧的指针域(tlink)、弧的信息(如权

值)域(info)。

例如,图7.14给出有向图的一种十字链表表示。

如果将有向图的邻接矩阵看成是稀疏矩阵的话,则十字链表也可以看成是邻接矩阵的十字链表存储结构。在有向图的十字链表表示中,链表的头结点之间是顺序存储结构,弧结点所在的链表是非循环链表,结点之间的相对位置自然形成,不一定按顶点序列号有序。由此可见,有向图的十字链表表示方式是不唯一的。

2.十字链表的存储表示与实现

(1)十字链表存储结构的类型定义

下面分别给出十字链弧结点(ArcBox)、顶点结点(OLVexNode)、十字链表(OLGraph)的类型定义。

struct ArcBox{ //弧结点的结构定义

int tailvex,headvex; //定义弧尾和弧头顶点的位置

ArcBox *hlink,*tlink; //弧头相同、弧尾相同的弧的链域

int weight; //定义有向网中弧的权值

};

struct OLVexNode{ //顶点结点结构定义

VType data; //顶点信息

ArcBox *firstin,*firstout; //分别指向顶点的第一条入弧和出弧};

struct OLGraph{ //定义十字链表类型

OLVexNode *xlist; //链表头结点数组指针

int vexnum,arcnum; //有向图的顶点数和弧数

GKind kind;

};

(2)十字链表的查找操作

函数int LocateVex_OLG(OLGraph G,VType u) 返回顶点u在图G中的位置,如果查找失败则返回0值。

int LocateVex_OLG(OLGraph G,VType u)

{ int i;

for(i=0;i

if(i

else return(0);

}

(3)建立十字链表的算法实现

函数void CreateGraph_OLG(OLGraph& G,GKind kind)根据图的类型kind建立一个有向图或有向网的十字链表G。

void CreateGraph_OLG(OLGraph& G,GKind kind)

{ int i,j,k;

VType u,v;

ArcBox* pr;

G.kind=kind;

cout<<"输入顶点数和边(弧)数vexnum arcnum:";

cin>>G.vexnum>>G.arcnum;

G.xlist=new OLVexNode[G.vexnum]; //为顶点数组分配内存空间

cout<<"按某种顺序输入"<

for(i=0;i

{ cin>>G.xlist[i].data; //输入所有顶点的信息到data中

G.xlist[i].firstin=G.xlist[i].firstout=NULL; //设定初始的单链表为空

}

if(G.kind==DG)cout<<"输入图中"<

else cout<<"输入图中"<

for(k=0;k

{ do{ cin>>u>>v; }

while(!((i=LocateVex_OLG(G,u))&&(j=LocateVex_OLG(G,v))));

pr=new ArcBox; //动态分配弧存储空间

pr->tailvex=--i; //i从位置值转换为下标值

pr->headvex=--j; //j从位置值转换为下标值

if(G.kind==DN)cin>>pr->weight;

pr->hlink=G.xlist[j].firstin; //将输入的弧插入到相应链表的首部

G.xlist[j].firstin=pr;

pr->tlink=G.xlist[i].firstout;

G.xlist[i].firstout=pr;

}//end for

}

(4)显示十字链表信息的操作

函数void DisplyOLG(OLGraph G)分别按邻接表和逆邻接表方式显示当前十字链表G的信息。

void DisplyOLG(OLGraph G)

{ int i;

ArcBox* p;

cout<<"按邻接表显示结果为:\n";

for(i=0;i

{ p=G.xlist[i].firstout;

cout<

while(p)

{ cout<<'['<tailvex<<' '<headvex;

if(G.kind==DN)cout<<' '<weight;

cout<<"] ";

p=p->tlink;

}

cout<

}//end for

cout<<"按逆邻接表显示结果为:\n";

for(i=0;i

{ p=G.xlist[i].firstin;

cout<

while(p)

{ cout<<'['<tailvex<<' '<headvex;

if(G.kind==DN)cout<<' '<weight;

cout<<"] ";

p=p->hlink;

}

cout<

}//end for

}

(5)程序演示主程序代码

程序中分别建立一个有向图G1和一个有向网G2的十字链表,并按邻接表和逆邻接表两种形式显示所建立的的十字链表的内容。

void main()

{ OLGraph G1,G2;

GKind gk1=DG,gk2=DN;

cout<<"建立一个有向图的十字链表G1:\n";

CreateGraph_OLG(G1,gk1);

cout<<"建立一个有向网的十字链表G2:\n";

CreateGraph_OLG(G2,gk2);

cout<<"有向图G1的信息为:\n";

DisplyOLG(G1);

cout<<"有向网G2的信息为:\n";

DisplyOLG(G2);

}程序运行演示结构为:

第7章 图结构

建立一个有向图的十字链表G1:

输入顶点数和边(弧)数vexnum arcnum:4 7↙ 按某种顺序输入4个顶点的值: 1 2 3 4↙

输入图中7条弧的信息u v:

1 2 1 3 3 1 3 4 4 1 4 2 4 3↙ 建立一个有向网的十字链表G2:

输入顶点数和边(弧)数vexnum arcnum:4 7↙ 按某种顺序输入4个顶点的值: 1 2 3 4↙

输入图中7条弧和权的信息u v w:

1 2 8 1 3 5 3 1 2 3 4 4 4 1 6 4 2 7 4 3 3↙

有向图G1的信息为: 按邻接表显示结果为: 0 (1): [0 2] [0 1] 1 (2):

2 (3): [2 3] [2 0]

3 (4): [3 2] [3 1] [3 0]

按逆邻接表显示结果为: 0 (1): [3 0] [2 0] 1 (2): [3 1] [0 1] 2 (3): [3 2] [0 2] 3 (4): [2 3]

有向网G2的信息为: 按邻接表显示结果为: 0 (1): [0 2 5] [0 1 8] 1 (2):

2 (3): [2

3 4] [2 0 2]

3 (4): [3 2 3] [3 1 7] [3 0 6] 按逆邻接表显示结果为: 0 (1): [3 0 6] [2 0 2] 1 (2): [3 1 7] [0 1 8] 2 (3): [3 2 3] [0 2 5] 3 (4): [2 3 4]

说明:

(1)在程序显示的结果中,第一列、第二列分别为顶点位置的下标和顶点的值。对于图,单链表中的每一项表示该顶点及其邻接点的下标;对于网,还要显示相应弧的权值。 (2)程序演示中所建立的是图7.15

中有向图(a)和有向网(b)的十字链表的一种表示。

(3)从存储结构可以看出,在十字链表中很容易算出一个顶点的出度和入度,并且建立十字链表的时间复杂度与建立邻接表的时间复杂度相同,均为O(n*e)。所以在有向图的应用中,十字链表是一个很有用的工具。

7.2.4无向图的邻接多重表表示法

在无向图的邻接表表示中,每一条边(v,w)均出现两次,即在顶点v 的单链表中有顶点v 、w 构成的边结点,同时在顶点w 的单链表中有顶点w 、v 构成的边结点。这样,在对边进行搜索的有关问题中,同一条边出现两次显然会带来一些不便;同时,当图中的边数较大时明显增加了内存空间的占用量。为此,下面给出无向图的邻接多重链表表示法。

1.邻接多重表的定义

在邻接多重表中包含链表的头结点和链表中的边结点两种类型的结点,图7.16给出邻接多重表中头结点和边结点结构的结构示图。

其中,头结点包含顶点信息域(data)、指向依附于该顶点的第一条边结点的指针域

(firstedge)。边结点包含判断该边是否被扫描过的标志域(mark)、该边依附的第一个顶点位置域(ivex)、边依附的第二个顶点位置域(jvex)、指向下一条依附于ivex的边的指针域(ilink)、指向下一条依附于jvex的边的指针域(jlink)、边的信息(比如权值)域(info)。

例如,图7.17给出无向图的一种邻接多重表表示。

在邻接多重表中,所有依附于同一顶点的边链接在一个链表中,由于一条边依附于两个顶点,所以每个边结点同时出现在两个链表中。所以,无向图的邻接多重表中边结点的个数是其邻接表表示中边结点个数的一半。邻接多重链表中,表的头结点之间是顺序存储结构,边结点所在的链表是非循环链表,结点之间的相对位置也是自然形成的,不一定按顶点序列号有序。所以,无向图的邻接多重表表示方式是不唯一的。

2.邻接多重表的存储表示与实现

(1)邻接多重表存储结构的类型定义

下面分别给出边结点(EBox)、顶点结点(V exBox)、邻接多重链表(AMLGraph)的类型定义。

struct EBox{ //边结点的结构定义

int mark; //访问标志域

int ivex,jvex; //边依附的两个顶点的位置

EBox *ilink,*jlink; //指向依附两个顶点的下一条边的指针域

int info; //边的相关信息(如权值)域};

struct VexBox{ //顶点结点结构定义

VType data; //顶点信息

EBox *firsedge; //指向第一条依附该顶点的边};

struct AMLGraph{ //定义邻接多重链表类型

VexBox* xlist; //链表头结点数组指针

int vexnum,edgenum; //无向图的顶点数和边数

GKind kind;

};

(2)邻接多重链表的查找操作

函数int LocateVex_AMLG(AMLGraph G,VType u)返回顶点u在图G中的位置,如果查找失败则返回0值。

int LocateVex_AMLG(AMLGraph G,VType u)

{

int i;

for(i=0;i

if(i

else return(0);

}

(3)建立邻接多重链表的算法实现

函数void CreateGraph_AMLG(AMLGraph& G,GKind kind)根据图的类型(kind)建立一个无向图或无向网的邻接多重链表(G)。

void CreateGraph_AMLG(AMLGraph& G,GKind kind)

{ int i,j,k;

VType u,v;

EBox* pr;

G.kind=kind;

cout<<"输入顶点数和边数vexnum edgenum:";

cin>>G.vexnum>>G.edgenum;

G.xlist=new VexBox[G.vexnum]; //为顶点数组分配内存空间

cout<<"按某种顺序输入"<

for(i=0;i

{ cin>>G.xlist[i].data; //输入所有顶点的信息到data中

G.xlist[i].firsedge=NULL; //设定初始的单链表为空

}

if(G.kind==DG) cout<<"输入图中"<

else cout<<"输入图中"<

for(k=0;k

{ do{ cin>>u>>v; }

while(!((i=LocateVex_AMLG(G,u))&&(j=LocateVex_AMLG(G,v))));

pr=new EBox; //动态分配边的存储空间

pr->ivex=--i; //i从位置值转换为下标值

pr->jvex=--j; //j从位置值转换为下标值

if(G.kind==DN)cin>>pr->info;

pr->ilink=G.xlist[i].firsedge; //将输入的边插入到相应链表的首部

G.xlist[i].firsedge=pr;

pr->jlink=G.xlist[j].firsedge;

G.xlist[j].firsedge=pr;

}//end for

}

(4)按邻接表方式显示当前邻接多重链表的信息

运筹学试题及答案

运筹学A卷) 一、单项选择题(从下列各题四个备选答案中选出一个正确答案,答案选错或未选者,该题不得分。每小题1分,共10分) 1.线性规划具有唯一最优解就是指 A.最优表中存在常数项为零 B.最优表中非基变量检验数全部非零 C.最优表中存在非基变量的检验数为零 D.可行解集合有界 2.设线性规划的约束条件为 则基本可行解为 A.(0, 0, 4, 3) B.(3, 4, 0, 0) C.(2, 0, 1, 0) D.(3, 0, 4, 0) 3.则 A.无可行解 B.有唯一最优解medn C.有多重最优解 D.有无界解 4.互为对偶的两个线性规划, 对任意可行解X 与Y,存在关系 A.Z > W B.Z = W C.Z≥W D.Z≤W 5.有6 个产地4个销地的平衡运输问题模型具有特征 A.有10个变量24个约束

B.有24个变量10个约束 C.有24个变量9个约束 D.有9个基变量10个非基变量 6、下例错误的说法就是 A.标准型的目标函数就是求最大值 B.标准型的目标函数就是求最小值 C.标准型的常数项非正 D.标准型的变量一定要非负 7、m+n-1个变量构成一组基变量的充要条件就是 A.m+n-1个变量恰好构成一个闭回路 B.m+n-1个变量不包含任何闭回路 C.m+n-1个变量中部分变量构成一个闭回路 D.m+n-1个变量对应的系数列向量线性相关 8.互为对偶的两个线性规划问题的解存在关系 A.原问题无可行解,对偶问题也无可行解 B.对偶问题有可行解,原问题可能无可行解 C.若最优解存在,则最优解相同 D.一个问题无可行解,则另一个问题具有无界解 9、有m个产地n个销地的平衡运输问题模型具有特征 A.有mn个变量m+n个约束…m+n-1个基变量 B.有m+n个变量mn个约束 C.有mn个变量m+n-1约束 D.有m+n-1个基变量,mn-m-n-1个非基变量 10.要求不超过第一目标值、恰好完成第二目标值,目标函数就是

行程问题典型例题及答案详解

行程问题典型例题及答案详解 行程问题是小学奥数中的重点和难点,也是西安小升初考试中的热点题型,纵观近几年试题,基本行程问题、相遇追及、多次相遇、火车、流水、钟表、平均速度、发车间隔、环形跑道、猎狗追兔等题型比比皆是,以下是一些上述类型经典例题(附答案详解)的汇总整理,有疑问可以直接联系我。 例1:一辆汽车往返于甲乙两地,去时用了4个小时,回来时速度提高了1/7,问:回来用了多少时间? 分析与解答:在行程问题中,路程一定,时间与速度成反比,也就是说速度越快,时间越短。设汽车去时的速度为v千米/时,全程为s千米,则:去时,有s÷v=s/v=4,则 回来时的时间为:,即回来时用了3.5小时。评注:利用路程、时间、速度的关系解题,其中任一项固定,另外两项都有一定的比例关系(正比或反比)。 例2:A、B两城相距240千米,一辆汽车计划用6小时从A城开到B城,汽车行驶了一半路程,因故障在中途停留了30分钟,如果按原计划到达B城,汽车在后半段路程时速度应加快多少? 分析:对于求速度的题,首先一定是考虑用相应的路程和时间相除得到。 解答:后半段路程长:240÷2=120(千米),后半段用时为:6÷2-0.5=2.5(小时),后半段行驶速度应为:120÷2.5=48(千米/时),原计划速度为:240÷6=40(千米/时),汽车在后半段加快了:48-40=8(千米/时)。 答:汽车在后半段路程时速度加快8千米/时。 例3:两码头相距231千米,轮船顺水行驶这段路程需要11小时,逆水每小时少行10千米,问行驶这段路程逆水比顺水需要多用几小时? 分析:求时间的问题,先找相应的路程和速度。 解答:轮船顺水速度为231÷11=21(千米/时),轮船逆水速度为21-10=11(千米/时),逆水比顺水多需要的时间为:21-11=10(小时) 答:行驶这段路程逆水比顺水需要多用10小时。

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验报告 课程名称操作系统原理实验名称虚拟页式管理 姓名学号专业班级网络 实验日期成绩指导教师赵安科 (①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果与分析⑦问题建议) 实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页

中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令?? ? 0 1非存指令存指令,若d 为-1则结束,否则进 入流程控制过程,得P 1和d ,查表在主存时,绝对地址=P 1×1024+d ③ 假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主 依次执行上述指令调试你所设计的程序(仅模拟指令的执行,不考虑序列中具体操作的执行)。

计量经济学题库及答案

计量经济学题库 一、单项选择题(每小题1分) 1.计量经济学是下列哪门学科的分支学科(C)。 A.统计学 B.数学 C.经济学 D.数理统计学 2.计量经济学成为一门独立学科的标志是(B)。 A.1930年世界计量经济学会成立B.1933年《计量经济学》会刊出版 C.1969年诺贝尔经济学奖设立 D.1926年计量经济学(Economics)一词构造出来 3.外生变量和滞后变量统称为(D)。 A.控制变量 B.解释变量 C.被解释变量 D.前定变量4.横截面数据是指(A)。 A.同一时点上不同统计单位相同统计指标组成的数据B.同一时点上相同统计单位相同统计指标组成的数据 C.同一时点上相同统计单位不同统计指标组成的数据D.同一时点上不同统计单位不同统计指标组成的数据 5.同一统计指标,同一统计单位按时间顺序记录形成的数据列是(C)。 A.时期数据 B.混合数据 C.时间序列数据 D.横截面数据6.在计量经济模型中,由模型系统内部因素决定,表现为具有一定的概率分布的随机变量,其数值受模型中其他变量影响的变量是( A )。 A.内生变量 B.外生变量 C.滞后变量 D.前定变量7.描述微观主体经济活动中的变量关系的计量经济模型是( A )。 A.微观计量经济模型 B.宏观计量经济模型 C.理论计量经济模型 D.应用计量经济模型 8.经济计量模型的被解释变量一定是( C )。 A.控制变量 B.政策变量 C.内生变量 D.外生变量9.下面属于横截面数据的是( D )。 A.1991-2003年各年某地区20个乡镇企业的平均工业产值 B.1991-2003年各年某地区20个乡镇企业各镇的工业产值 C.某年某地区20个乡镇工业产值的合计数 D.某年某地区20个乡镇各镇的工业产值 10.经济计量分析工作的基本步骤是( A )。 A.设定理论模型→收集样本资料→估计模型参数→检验模型B.设定模型→估计参数→检验模型→应用

运筹学典型考试试题及答案

二、计算题(60分) 1、已知线性规划(20分) MaxZ=3X1+4X2 X1+X2≤5 2X1+4X2≤12 3X1+2X2≤8 X1,X2≥0 其最优解为: 基变量X1X2X3X4X5 X33/2 0 0 1 -1/8 -1/4 X25/2 0 1 0 3/8 -1/4 X1 1 1 0 0 -1/4 1/2 σj 0 0 0 -3/4 -1/2 1)写出该线性规划的对偶问题。 2)若C2从4变成5,最优解是否会发生改变,为什么? 3)若b2的量从12上升到15,最优解是否会发生变化,为什么? 4)如果增加一种产品X6,其P6=(2,3,1)T,C6=4该产品是否应该投产?为什么?解: 1)对偶问题为 Minw=5y1+12y2+8y3 y1+2y2+3y3≥3 y1+4y2+2y3≥4 y1,y2≥0 2)当C2从4变成5时, σ4=-9/8 σ5=-1/4 由于非基变量的检验数仍然都是小于0的,所以最优解不变。 3)当若b2的量从12上升到15 X=9/8 29/8 1/4 由于基变量的值仍然都是大于0的,所以最优解的基变量不会发生变化。 4)如果增加一种新的产品,则 P6’=(11/8,7/8,-1/4)T σ6=3/8>0 所以对最优解有影响,该种产品应该生产 2、已知运输问题的调运和运价表如下,求最优调运方案和最小总费用。(共15分)。 B1B2B3产量销地 产地 A1 5 9 2 15 A2 3 1 7 11 A3 6 2 8 20 销量18 12 16 解:初始解为

计算检验数 由于存在非基变量的检验数小于0,所以不是最优解,需调整 调整为: 重新计算检验数 所有的检验数都大于等于0,所以得到最优解 3、某公司要把4个有关能源工程项目承包给4个互不相关的外商投标者,规定每个承包商只能且必须承包一个项目,试在总费用最小的条件下确定各个项目的承包者,总费用为多少?各承包商对工程的报价如表2所示: (15分) 项目 投标者 A B C D 甲 15 18 21 24 乙 19 23 22 18 丙 26 17 16 19 丁 19 21 23 17 答最优解为: X= 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 总费用为50 4. 考虑如下线性规划问题(24分) B 1 B 2 B 3 产量/t A 1 15 15 A 2 11 11 A 3 18 1 1 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 5 13 0 15 A 2 -2 0 0 11 A 3 0 0 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 15 15 A 2 11 11 A 3 7 12 1 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 5 13 0 15 A 2 0 2 2 11 A 3 0 0 0 20 销量/t 18 12 16

五年级行程问题经典例题

行程问题(一) 专题简析: 行程应用题是专门讲物体运动的速度、时间、路程三者关系的应用题。行程问题的主要数量关系是:路程=速度×时间。知道三个量中的两个量,就能求出第三个量。 例1 甲、乙两车同时从东、西两地相向开出,甲车每小时行56千米,乙车每小时行48千米。两车在距中点32千米处相遇,东、西两地相距多少千米 分析与解答从图中可以看出,两车相遇时,甲车比乙车多行了32×2=64(千米)。两车同时出发,为什么甲车会比乙车多行64千米呢因为甲车每小时比乙车多行56-48=8(千米)。64里包含8个8,所以此时两车各行了8小时,东、西两地的路程只要用(56+48)×8就能得出。 32×2÷(56-48)=8(小时) (56+48)×8=832(千米) 答:东、西两地相距832千米。 练习一 》 1,小玲每分钟行100米,小平每分钟行80米,两人同时从学校和少年宫出发,相向而行,并在离中点120米处相遇。学校到少年宫有多少米 2,一辆汽车和一辆摩托车同时从甲、乙两地相对开出,汽车每小时行40千米,摩托车每小时行65千米,当摩托车行到两地中点处时,与汽车还相距75千米。甲、乙两地相距多少千米

例2 快车和慢车同时从甲、乙两地相向开出,快车每小时行40千米,经过3小时,快车已驶过中点25千米,这时快车与慢车还相距7千米。慢车每小时行多少千米 分析与解答快车3小时行驶40×3=120(千米),这时快车已驶过中点25千米,说明甲、乙两地间路程的一半是120-25=95(千米)。此时,慢车行了95-25-7=63(千米),因此慢车每小时行63÷3=21(千米)。 [ (40×3-25×2-7)÷3=21(千米) 答:慢车每小时行21千米。 练习二 1,兄弟二人同时从学校和家中出发,相向而行。哥哥每分钟行120米,5分钟后哥哥已超过中点50米,这时兄弟二人还相距30米。弟弟每分钟行多少米 2,汽车从甲地开往乙地,每小时行32千米。4小时后,剩下的路比全程的一半少8千米,如果改用每小时56千米的速度行驶,再行几小时到达乙地 & 例3 甲、乙二人上午8时同时从东村骑车到西村去,甲每小时比乙快6千米。中午12时甲到西村后立即返回东村,在距西村15千米处遇到乙。求东、西两村相距多少千米 分析与解答二人相遇时,甲比乙多行15×2=30(千米),说明二人已行30÷6=5(小时),上午8时至中午12时是4小时,所以甲的速度是15÷(5-4)=15(千米/小时)。 因此,东西两村的距离是15×(5-1)=60(千米)

计量经济学习题与解答

第五章经典单方程计量经济学模型:专门问题 一、内容提要 本章主要讨论了经典单方程回归模型的几个专门题。 第一个专题是虚拟解释变量问题。虚拟变量将经济现象中的一些定性因素引入到可以进行定量分析的回归模型,拓展了回归模型的功能。本专题的重点是如何引入不同类型的虚拟变量来解决相关的定性因素影响的分析问题,主要介绍了引入虚拟变量的加法方式、乘法方式以及二者的组合方式。在引入虚拟变量时有两点需要注意,一是明确虚拟变量的对比基准,二是避免出现“虚拟变量陷阱”。 第二个专题是滞后变量问题。滞后变量包括滞后解释变量与滞后被解释变量,根据模型中所包含滞后变量的类别又可将模型划分为自回归分布滞后模型与分布滞后模型、自回归模型等三类。本专题重点阐述了产生滞后效应的原因、分布滞后模型估计时遇到的主要困难、分布滞后模型的修正估计方法以及自回归模型的估计方法。如对分布滞后模型可采用经验加权法、Almon多项式法、Koyck方法来减少滞项的数目以使估计变得更为可行。而对自回归模型,则根据作为解释变量的滞后被解释变量与模型随机扰动项的相关性的不同,采用工具变量法或OLS法进行估计。由于滞后变量的引入,回归模型可将静态分析动态化,因此,可通过模型参数来分析解释变量对被解释变量影响的短期乘数和长期乘数。 第三个专题是模型设定偏误问题。主要讨论当放宽“模型的设定是正确的”这一基本假定后所产生的问题及如何解决这些问题。模型设定偏误的类型包括解释变量选取偏误与模型函数形式选取取偏误两种类型,前者又可分为漏选相关变量与多选无关变量两种情况。在漏选相关变量的情况下,OLS估计量在小样本下有偏,在大样本下非一致;当多选了无关变量时,OLS估计量是无偏且一致的,但却是无效的;而当函数形式选取有问题时,OLS估计量的偏误是全方位的,不仅有偏、非一致、无效率,而且参数的经济含义也发生了改变。在模型设定的检验方面,检验是否含有无关变量,可用传统的t检验与F检验进行;检验是否遗漏了相关变量或函数模型选取有错误,则通常用一般性设定偏误检验(RESET检验)进行。本专题最后介绍了一个关于选取线性模型还是双对数线性模型的一个实用方法。 第四个专题是关于建模一般方法论的问题。重点讨论了传统建模理论的缺陷以及为避免这种缺陷而由Hendry提出的“从一般到简单”的建模理论。传统建模方法对变量选取的

运筹学试题及答案汇总

3)若问题中 x2 列的系数变为(3,2)T,问最优解是否有变化; 4)c2 由 1 变为 2,是否影响最优解,如有影响,将新的解求出。 Cj CB 0 0 Cj-Zj 0 4 Cj-Zj 3 4 Cj-Zj 最优解为 X1=1/3,X3=7/5,Z=33/5 2对偶问题为Minw=9y1+8y2 6y1+3y2≥3 3y1+4y2≥1 5y1+5y2≥4 y1,y2≥0 对偶问题最优解为 y1=1/5,y2=3/5 3 若问题中 x2 列的系数变为(3,2)T 则P2’=(1/3,1/5σ2=-4/5<0 所以对最优解没有影响 4)c2 由 1 变为2 σ2=-1<0 所以对最优解没有影响 7. 求如图所示的网络的最大流和最小截集(割集,每弧旁的数字是(cij , fij )。(10 分) V1 (9,5 (4,4 V3 (6,3 T 3 XB X4 X5 b 9 8 X1 6 3 3 X4 X3 1 8/5 3 3/5 3/5 X1 X3 1/3 7/5 1 0 0 1 X2 3 4 1 -1 4/5 -11/5 -1/3 1 - 2 4 X 3 5 5 4 0 1 0 0 1 0 0 X4 1 0 0 1 0 0 1/3 -1/ 5 -1/5 0 X5 0 1 0 -1 1/5 -4/5 -1/3 2/5 -3/5 VS (3,1 (3,0 (4,1 Vt (5,3 V2 解: (5,4 (7,5 V4 V1 (9,7 (4,4 V3 (6,4 (3,2 Vs (5,4 (4,0 Vt (7,7 6/9 V2 最大流=11 (5,5 V4 8. 某厂Ⅰ、Ⅱ、Ⅲ三种产品分别经过 A、B、C 三种设备加工。已知生产单位各种产品所需的设备台时,设备的现有加工能力及每件产品的预期利润见表:ⅠⅡⅢ设备能力(台.h A 1 1 1 100 B 10 4 5 600 C 2 2 6 300 单

七年级行程问题经典例题

第十讲:行程问题分类例析 主讲:何老师 行程问题有相遇问题,追及问题,顺流、逆流问题,上坡、下坡问题等.在运动形式上分直线运动及曲线运用(如环形跑道). 相遇问题是相向而行.相遇距离为两运动物体的距离和.追及问题是同向而行,分慢的在快的前面或慢的先行若干时间,快的再追及,追及距离慢快S S S +=.顺逆流、顺风逆风、上下坡应注意运动方向,去时顺流, 回时则为逆流. 一、相遇问题 例1:两地间的路程为360km ,甲车从A 地出发开往B 地,每小时行72km ;甲车出发25分钟后,乙车从B 地出发开往A 地,每小时行使48km ,两车相遇后,各自按原来速度继续行使,那么相遇以后,两车相距100km 时,甲车从出发开始共行驶了多少小时? 分析:利用相遇问题的关系式(相遇距离为两运动物体的距离和)建立方程. 解答:设 甲车共 行使了 xh ,则乙车行使了h x )(60 25-.(如图1) 依题意,有72x+48)(60 25-x =360+100,

解得x=4. 因此,甲车共行使了4h. 说明:本题两车相向而行,相遇后继续行使100km ,仍属相遇问题中的距离,望读者仔细体会. 例2:一架战斗机的贮油量最多够它在空中飞行 4.6h,飞机出航时顺风飞行,在静风中的速度是575km/h,风速25 km/h,这架飞机最多能飞出多少千米就应返回? 分析:列方程求解行程问题中的顺风逆风问题. 顺风中的速度=静风中速度+风速 逆风中的速度=静风中速度-风速 解答:解法一:设这架飞机最远飞出xkm 就应返回. 依题意,有6425 57525575.=-++x x 解得:x=1320. 答:这架飞机最远飞出1320km 就应返回. 解法二: 设飞机顺风飞行时间为th. 依题意,有(575+25)t=(575-25)(4.6-t), 解得:t=2.2.

五年级行程问题典型练习题

行程问题(一) 【知识分析】 相遇是行程问题的基本类型,在相遇问题中可以这样求全程:速度和×时间=路程,今天,我们学校这类问题。 【例题解读】 例1客车和货车同时分别从两地相向而行,货车每小时行85千米,客车每小时行90千米,两车相遇时距全程中点8千米, 两地相距多少千米? 【分析】根据题意,两车相遇时货车行了全程的一半-8千米,客车行了全程的一半+8千米,也就是说客车比货车多行了8×2=16千米,客车每小时比货车多行90-85=5千米。那么我们先求客车和货车两车经过多少小时在途中相遇,然后再求出总路程。 (1)两车经过几小时相遇?8×2÷(90-85)=3.2小时 (2)两地相距多少千米?(90+85)×3.2=560(千米) 例2小明和小丽两个分别从两地同时相向而行,8小时可以相遇,如果两人每小时多少行1.5千米,那么10小时相遇,两地 相距多少千米? 【分析】两人每小时多少行1.5千米,那么10小时相遇,如果以这样的速度行8小时,这时两个人要比原来少行1.5×2×8=24(千米)这24千米两人还需行10-8=2(小时),那么减速后的速度和是24÷2=12(千米)容易求出两地的距离 1.5×2×8÷(10-8)×=120千米 【经典题型练习】

1、客车和货车分别从两地同时相向而行,2.5小时相遇,如果两车 每小时都比原来多行10千米,则2小时就相遇,求两地的距离? 2、在一圆形的跑道上,甲从a点,乙从b点同时反方向而行,8 分钟后两人相遇,再过6分钟甲到b点,又过10分钟两人再次相遇,则甲环形一周需多少分钟?

【知识分析】 两车从两地同时出发相向而行,第一次相遇合起来走一个全程,第二次相遇走了几个全程呢?今天,我们学习这类问题 【例题解读】 例 a、b两车同时从甲乙两地相对开出,第一次在离甲地95千米处相遇,相遇后两车继续以原速行驶,分别到达对方站点后立即返回,在离乙地55千米处第二次相遇,求甲乙两地之间的距离是多少千米? 【分析】a、b两车从出发到第一次相遇合走了一个全程,当两年合走了一个全程时,a车行了95千米 从出发到第二次相遇,两车一共行了三个全程,a车应该行了95×3=285(千米)通过观察,可以知道a车行了一个全程还多55千米,用285千米减去55千米就是甲乙两地相距的距离 95×3—55=230千米 【经典题型练习】 1、甲乙两车同时从ab两地相对开出,第一次在离a地75千米相 遇,相遇后两辆车继续前进,到达目的地后立即返回,第二次相遇在离b地45千米处,求a、b两地的距离 2、客车和货车同时从甲、乙两站相对开出,第一次相遇在距乙站 80千米的地方,相遇后两车仍以原速前进,在到达对方站点后立即沿原路返回,两车又在距乙站82千米处第二次相遇,甲乙两站相距多少千米?

页式虚拟存储管理中地址转换和缺页中断实验参考2

页式虚拟存储管理中地址转换和缺页中断 一.实验目的 (1)深入了解存储管理如何实现地址转换。 (2)进一步认识页式虚拟存储管理中如何处理缺页中断。 二.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 三.实验原理 页式存储管理把内存分割成大小相等位置固定的若干区域,叫内存页面,内存的分配以“页”为单位,一个程序可以占用不连续的页面,逻辑页面的大小和内存页面的大小相同,内外存的交换也以页为单位进行,页面交换时,先查询快表,若快表中找不到所需页面再去查询页表,若页表中仍未找到说明发生了缺页中断,需先将所需页面调入内存再进行存取。 四.实验部分源程序 #define size 1024//定义块的大小,本次模拟设为1024个字节。 #include "stdio.h" #include "string.h" #include struct plist { int number; //页号 int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。 int block; //主存块号,表示该页在主存中的位置。 int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0 int location; //在磁盘上的位置 }; //模拟之前初始化一个页表。 struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6, 0,-1,0,125}}; //命令结构,包括操作符,页号,页内偏移地址。 struct ilist { char operation[10]; int pagenumber; int address; }; //在模拟之前初始化一个命令表,通过程序可以让其顺序执行。 struct ilist p2[12]={{"+",0,72},{"5+",1,50},{"*",2,15},{"save",3,26},

计量经济学习题及参考答案解析详细版

计量经济学(第四版)习题参考答案 潘省初

第一章 绪论 试列出计量经济分析的主要步骤。 一般说来,计量经济分析按照以下步骤进行: (1)陈述理论(或假说) (2)建立计量经济模型 (3)收集数据 (4)估计参数 (5)假设检验 (6)预测和政策分析 计量经济模型中为何要包括扰动项? 为了使模型更现实,我们有必要在模型中引进扰动项u 来代表所有影响因变量的其它因素,这些因素包括相对而言不重要因而未被引入模型的变量,以及纯粹的随机因素。 什么是时间序列和横截面数据? 试举例说明二者的区别。 时间序列数据是按时间周期(即按固定的时间间隔)收集的数据,如年度或季度的国民生产总值、就业、货币供给、财政赤字或某人一生中每年的收入都是时间序列的例子。 横截面数据是在同一时点收集的不同个体(如个人、公司、国家等)的数据。如人口普查数据、世界各国2000年国民生产总值、全班学生计量经济学成绩等都是横截面数据的例子。 估计量和估计值有何区别? 估计量是指一个公式或方法,它告诉人们怎样用手中样本所提供的信息去估计总体参数。在一项应用中,依据估计量算出的一个具体的数值,称为估计值。如Y 就是一个估计量,1 n i i Y Y n == ∑。现有一样本,共4个数,100,104,96,130,则 根据这个样本的数据运用均值估计量得出的均值估计值为 5.1074 130 96104100=+++。 第二章 计量经济分析的统计学基础 略,参考教材。

请用例中的数据求北京男生平均身高的99%置信区间 N S S x = = 4 5= 用 =,N-1=15个自由度查表得005.0t =,故99%置信限为 x S t X 005.0± =174±×=174± 也就是说,根据样本,我们有99%的把握说,北京男高中生的平均身高在至厘米之间。 25个雇员的随机样本的平均周薪为130元,试问此样本是否取自一个均值为120元、标准差为10元的正态总体? 原假设 120:0=μH 备择假设 120:1≠μH 检验统计量 () 10/2510/25 X X μσ-Z == == 查表96.1025.0=Z 因为Z= 5 >96.1025.0=Z ,故拒绝原假设, 即 此样本不是取自一个均值为120元、标准差为10元的正态总体。 某月对零售商店的调查结果表明,市郊食品店的月平均销售额为2500元,在下一个月份中,取出16个这种食品店的一个样本,其月平均销售额为2600元,销售额的标准差为480元。试问能否得出结论,从上次调查以来,平均月销售额已经发生了变化? 原假设 : 2500:0=μH 备择假设 : 2500:1≠μH ()100/1200.83?480/16 X X t μσ-= === 查表得 131.2)116(025.0=-t 因为t = < 131.2=c t , 故接受原假 设,即从上次调查以来,平均月销售额没有发生变化。

运筹学例题解析

(一)线性规划建模与求解 B.样题:活力公司准备在5小时内生产甲、乙两种产品。甲、乙两种产品每生产1 单位分别消耗2小时、1小时。又根据市场需求信息,乙产品的产量应该至少是甲产品产量的3倍。已知甲、乙两种产品每销售1单位的利润分别为3百元和1百元。请问:在5小时内,甲、乙两种产品各生产多少单位,才能够使得总销售利润最大 要求:1、建立该问题的线性规划模型。 2、用图解法求出最优解和最大销售利润值,并写出解的判断依据。如果不存在最优解,也请说明理由。 解:1、(1)设定决策变量: 设甲、乙两种产品分别生产x 1 、x 2 单位 。 (2)目标函数: max z=2 x 1+x 2 (3)约束条件如下:1221 12 25..3,0+≤??≥??≥?x x s t x x x x 2、该问题中约束条件、目标函数、可行域和顶点见图1所示,其中可行域用阴影部分标记,不等式约束条件及变量约束要标出成立的方向,目标函数只须画出其中一条等值线, 结论:本题解的情形是: 无穷多最优解 ,理由: 目标函数等值线 z=2 x 1+x 2与约 束条件2 x 1+x 2≤5的边界平行 。甲、乙两种产品的最优产量分别为 (5,0)或(1,3)单位;最大销售利润值等于 5 百元。 (二)图论问题的建模与求解样题 A.正考样题(最短路问题的建模与求解,清华运筹学教材编写组第三版267-268页例 13)某企业使用一台设备,每年年初,企业都要做出决定,如果继续使用旧的,要付维修费;若购买一台新设备,要付购买费。但是变卖旧设备可以获得残值收入,连续使用1年、2年、3年、4年以上卖掉的设备残值分别为8万元、6万元、3万元和0万元。试制定一个5年的更新计划,使总支出最少。已知设备在各年的购买费与维修费如表2所示。要求:(1)建立某种图论模型;(2)求出最少总支出金额。

行程问题经典例题

8.如图3-1,甲和乙两人分别从一圆形场地的直径两端点同时开始以匀速按相反的方向绕此 圆形路线运动,当乙走了100米以后,他们第一次相遇,在甲走完一周前60米处又第二次 相遇.求此圆形场地的周长. 【分析与解】 注意观察图形,当甲、乙第一次相遇时,甲乙共走完 12圈的路程,当甲、乙第二次相遇时,甲乙共走完1+12=32 圈的路程. 所以从开始到第一、二次相遇所需的时间比为1:3,因而第二次相遇时乙行走的总路 程为第一次相遇时行走的总路程的3倍,即100×3=300米. 有甲、乙第二次相遇时,共行走(1圈-60)+300,为 32 圈,所以此圆形场地的周长为480米. 行程问题分类例析 欧阳庆红 行程问题有相遇问题,追及问题,顺流、逆流问题,上坡、下坡问题等.在运动形式上 分直线运动及曲线运用(如环形跑道). 相遇问题是相向而行.相遇距离为两运动物体的距离 和.追及问题是同向而行,分慢的在快的前面或慢的先行若干时间,快的再追 及,追及距离慢快S S S +=.顺逆流、顺风逆风、上下坡应注意运动方向,去时顺流,回时则为逆流. 一、相遇问题 例1:两地间的路程为360km ,甲车从A 地出发开往B 地,每小时行72km ;甲车出发25 分钟后,乙车从B 地出发开往A 地,每小时行使48km ,两车相遇后,各自按原来速度继续 行使,那么相遇以后,两车相距100km 时,甲车从出发开始共行驶了多少小时? 分析:利用相遇问题的关系式(相遇距离为两运动物体的距离和)建立方程.

解答:设甲车共行使了xh,则乙车行使了h x) ( 60 25 -.(如图1) 依题意,有72x+48) ( 60 25 - x=360+100, 解得x=4. 因此,甲车共行使了4h. 说明:本题两车相向而行,相遇后继续行使100km,仍属相遇问题中的距离,望读者仔细体会. 例2:一架战斗机的贮油量最多够它在空中飞行 4.6h,飞机出航时顺风飞行,在静风中的速度是575km/h,风速25 km/h,这架飞机最多能飞出多少千米就应返回? 分析:列方程求解行程问题中的顺风逆风问题. 顺风中的速度=静风中速度+风速 逆风中的速度=静风中速度-风速 解答:解法一:设这架飞机最远飞出xkm就应返回. 依题意,有6 4 25 575 25 575 . = - + + x x 解得:x=1320. 答:这架飞机最远飞出1320km就应返回. 解法二:设飞机顺风飞行时间为th. 依题意,有(575+25)t=(575-25)(4.6-t), 解得:t=2.2. (575+25)t=600×2.2=1320. 答:这架飞机最远飞出1320km就应返回. 说明:飞机顺风与逆风的平均速度是575km/h,则有6 4 575 2 . = x ,解得x=1322.5.错误原因在于飞机平均速度不是575km/h,而是) / (h km v v v v v x v x x 574 550 600 550 600 2 2 2 ≈ + ? ? = + ? = +逆 顺 逆 顺 逆 顺 例3:甲、乙两人在一环城公路上骑自行车,环形公路长为42km,甲、乙两人的速度分别为21 km/h、14 km/h. (1)如果两人从公路的同一地点同时反向出发,那么经几小时后,两人首次相遇? (2)如果两人从公路的同一地点同时同向出发,那么出发后经几小时两人第二次相遇? 分析:这是环形跑道的行程问题. 解答:(1)设经过xh两人首次相遇. 依题意,得(21+14)x=42, 解得:x=1.2. 因此,经过1.2小时两人首次相遇. (3)设经过xh两人第二次相遇. 依题意,得21x-14x=42×2, 图1

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K:=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT调出的页号”和“IN要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下:

计量经济学练习题答案完整

1、已知一模型的最小二乘的回归结果如下: i i ?Y =101.4-4.78X (45.2)(1.53) n=30 R 2=0.31 其中,Y :政府债券价格(百美元),X :利率(%)。 回答以下问题: (1)系数的符号是否正确,并说明理由;(2)为什么左边是i ?Y 而不是i Y ; (3)在此模型中是否漏了误差项i u ;(4)该模型参数的经济意义是什么。 答:(1)系数的符号是正确的,政府债券的价格与利率是负相关关系,利率的上升会引起政府债券价格的下降。 (2)i Y 代表的是样本值,而i ?Y 代表的是给定i X 的条件下i Y 的期望值,即?(/)i i i Y E Y X 。此模型是根据样本数据得出的回归结果,左边应当是i Y 的期望值,因此是i ?Y 而不是i Y 。 (3)没有遗漏,因为这是根据样本做出的回归结果,并不是理论模型。 (4)截距项101.4表示在X 取0时Y 的水平,本例中它没有实际意义;斜率项-4.78表明利率X 每上升一个百分点,引起政府债券价格Y 降低478美元。 2、有10户家庭的收入(X ,元)和消费(Y ,百元)数据如下表: 10户家庭的收入(X )与消费(Y )的资料 X 20 30 33 40 15 13 26 38 35 43 Y 7 9 8 11 5 4 8 10 9 10 若建立的消费Y 对收入X 的回归直线的Eviews 输出结果如下: Dependent Variable: Y

Variable Coefficient Std. Error X 0.202298 0.023273 C 2.172664 0.720217 R-squared 0.904259 S.D. dependent var 2.233582 Adjusted R-squared 0.892292 F-statistic 75.55898 Durbin-Watson stat 2.077648 Prob(F-statistic) 0.000024 (1)说明回归直线的代表性及解释能力。 (2)在95%的置信度下检验参数的显著性。(0.025(10) 2.2281t =,0.05(10) 1.8125t =,0.025(8) 2.3060t =,0.05(8) 1.8595t =) (3)在95%的置信度下,预测当X =45(百元)时,消费(Y )的置信区间。(其中29.3x =,2()992.1x x -=∑) 答:(1)回归模型的R 2=0.9042,表明在消费Y 的总变差中,由回归直线解释的部分占到90%以上,回归直线的代表性及解释能力较好。 (2)对于斜率项,11 ? 0.20238.6824?0.0233 ()b t s b ===>0.05(8) 1.8595t =,即表明斜率项 显著不为0,家庭收入对消费有显著影响。对于截距项, 00? 2.1727 3.0167?0.7202 ()b t s b ===>0.05(8) 1.8595t =, 即表明截距项也显著不为0,通过了显著性检验。 (3)Y f =2.17+0.2023×45=11.2735 0.025(8) 1.8595 2.2336 4.823t ?=?= 95%置信区间为(11.2735-4.823,11.2735+4.823),即(6.4505,16.0965)。

运筹学例题及解答

运筹学例题及解答 一、市场对I、II两种产品的需求量为:产品I在1-4月每月需10000件,5-9月每月需30000件,10-12月每月需100000件;产品II在3-9月每月需15000件,其它月份每月需50000件。某厂生产这两种产品成本为:产品I在1-5月内生产每件5元,6-12月内生产每件4.50元;产品II在1-5月内生产每件8元,6-12月内生产每件7元。该厂每月生产两种产品能力总和应不超过120000件。产品I容积每件0.2立方米,产品II容积每件0.4立方米,而该厂仓库容积为15000立方米,要求:(a)说明上述问题无可行解;(b)若该厂仓库不足时,可从外厂借。若占用本厂每月每平方米库容需1元,而租用外厂仓库时上述费用增加为1.5元,试问在满足市场需求情况下,该厂应如何安排生产,使总的生产加库存费用为最少。 解:(a) 10-12月份需求总计:100000X3+50000X3=450000件,这三个月最多生产120000X3=360000件,所以10月初需要(450000-360000=90000件)的库存,超过该厂最大库存容量,所以无解。 ? ?(b)考虑到生产成本,库存费用和生产费用和生产能力,该厂10-12月份需求的不足只需在7-9月份生产出来库存就行, 则设xi第i个月生产的产品1的数量,yi第i个月生产的产品2 的数量,zi,wi分别为第i个月末1,2的库存数s1i,s2i分别

为用于第i+1个月库存的原有及租借的仓库容量m3,可建立模型: Lingo 程序为 MODEL: sets: row/1..16/:; !这里n 为控制参数; col/1..7/:; AZ(row,col):b,x; endsets 1211 127777778 7887898998910910109101110111110111211min (4.57)( 1.5) 30000150003000015000300001500030000150003000015000.i i i i i i z x y s s x z y w x z z y w w x z z y w w x z z y w w x z z y w w st x z ===+++-=→-=+-=→+-=+-=→+-=+-=→+-=+-=→+-=+∑∑1211121100005000 120000(712)0.20.415000(712)0i i i i i i i y w x z i z w s s s i ?????????=→+=??+≤≤≤?+=+??≤≤≤???变量都大于等于

数学行程问题公式大全及经典习题答案

路程=速度×时间; 路程÷时间=速度; 路程÷速度=时间 关键问题 确定行程过程中的位置路程 相遇路程÷速度和=相遇时间相遇路程÷相遇时间= 速度和 相遇问题(直线) 甲的路程+乙的路程=总路程 相遇问题(环形) 甲的路程 +乙的路程=环形周长 追及问题 追及时间=路程差÷速度差 速度差=路程差÷追及时间 路程差=追及时间×速度差 追及问题(直线) 距离差=追者路程-被追者路程=速度差X追及时间 追及问题(环形) 快的路程-慢的路程=曲线的周长 流水问题 顺水行程=(船速+水速)×顺水时间 逆水行程=(船速-水速)×逆水时间 顺水速度=船速+水速 逆水速度=船速-水速 静水速度=(顺水速度+逆水速度)÷2 水速:(顺水速度-逆水速度)÷2 解题关键 船在江河里航行时,除了本身的前进速度外,还受到流水的推送或顶逆,在这种情况下计算船只的航行速度、时间和所行的路程,叫做流水行船问题。 流水行船问题,是行程问题中的一种,因此行程问题中三个量(速度、时间、路程)的关系在这里将要反复用到.此外,流水行船问题还有以下两个基本公式: 顺水速度=船速+水速,(1)

逆水速度=船速-水速.(2) 这里,船速是指船本身的速度,也就是在静水中单位时间里所走过的路程.水速,是指水在单位时间里流过的路程.顺水速度和逆水速度分别指顺流航行时和逆流航行时船在单位时间里所行的路程。 根据加减法互为逆运算的关系,由公式(l)可以得到: 水速=顺水速度-船速, 船速=顺水速度-水速。 由公式(2)可以得到: 水速=船速-逆水速度, 船速=逆水速度+水速。 这就是说,只要知道了船在静水中的速度,船的实际速度和水速这三个量中的任意两个,就可以求出第三个量。 另外,已知船的逆水速度和顺水速度,根据公式(1)和公式(2),相加和相减就可以得到: 船速=(顺水速度+逆水速度)÷2, 水速=(顺水速度-逆水速度)÷2。 例:设后面一人速度为x,前面得为y,开始距离为s,经时间t后相差a米。那么 (x-y)t=s-a 解得t=s-a/x-y. 追及路程除以速度差(快速-慢速)=追及时间 v1t+s=v2t (v1+v2)t=s t=s/(v1+v2) (一)相遇问题 两个运动物体作相向运动或在环形跑道上作背向运动,随着时间的发展,必然面对面地相遇,这类问题叫做相遇问题。它的特点是两个运动物体共同走完整个路程。 小学数学教材中的行程问题,一般是指相遇问题。 相遇问题根据数量关系可分成三种类型:求路程,求相遇时间,求速度。 它们的基本关系式如下: 总路程=(甲速+乙速)×相遇时间 相遇时间=总路程÷(甲速+乙速) 另一个速度=甲乙速度和-已知的一个速度 (二)追及问题 追及问题的地点可以相同(如环形跑道上的追及问题),也可以不同,但方向一般是相同的。由于速度不同,就发生快的追及慢的问题。 根据速度差、距离差和追及时间三者之间的关系,罕用下面的公式: 距离差=速度差×追及时间 追及时间=距离差÷速度差 速度差=距离差÷追及时间

相关文档
最新文档