itgle.com
更多“拓扑序列是有向无环图中所有顶点的一个线性序列,若有向图中存在弧或存在从顶点v到w的路径,则在该 ”相关问题
  • 第1题:

    无向图中一个顶点的度是指图中(41)。

    A.通过该顶点的简单路径数

    B.通过该顶点的回路数

    C.与该顶点相邻接的顶点数

    D.与该顶点连通的顶点数


    正确答案:C
    解析:图中顶点的度定义为与该顶点相关联的边的数目。在无向图中就是与该顶点相邻接的顶点数。而与该顶点连通的顶点数可能就非常多了。

  • 第2题:

    阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

    【说明】

    对有向图进行拓扑排序的方法是:

    (1)初始时拓扑序列为空;

    (2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧;

    (3)重复(2),直到不存在入度为0的顶点为止(若所有顶点都进入拓扑序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。

    函数int*TopSort(LinkedDigraph G)的功能是对有向图G中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序,则返回空指针。其中,图G中的顶点从1开始依次编号,顶点序列为vl,v2,…,vn,图G采用邻接表表示,其数据类型定义如下:

    define MAXVNUM 50 /*最大顶点数*/

    typedef struct ArcNode| /*表结点类型*/

    int adjvex; /*邻接顶点编号*/

    struct ArcNode*nextarc; /*指示下一个邻接顶点*/

    {ArcNode;

    typedef struct AdjList{ /*头结点类型*/

    char vdata; /*顶点的数据信息*/

    ArcNode*firstarc; /*指向邻接表的第一个表结点*/

    }AdjList;

    typedef struct LinkedDigraph /*图的类型*/

    int n: /*图中顶点个数*/

    AdjList Vhead[MAXVNUM]; /*所有顶点的头结点数组*/

    }LinkedDigraph;

    例如,某有向图G如图4-1所示,其邻接表如图4-2所示。

    函数TopSort中用到了队列结构(Queue的定义省略),实现队列基本操作的函数原型如下表所示:

    【C代码】

    int*TopSort(LinkedDigraph G){

    ArcNode*P; /*临时指针,指示表结点*/

    Queue Q; /*临时队列,保存入度为0的顸点编号*/

    int k=0; /*临时变量,用作数组元素的下标*/

    int j=0,w=0; /*临时变量,用作顶点编号*/

    int*topOrder,*inDegree;

    topOrder=(int*)malloc((G.n+1)*sizeof(int));/*存储拓扑序列中的顶点编号*/

    inDegree=(int*)malloc((G.n+1)*sizeof(int));/*存储图G中各顶点的入度*/

    if(!inDegree||!topOrder) return NULL;

    (1); /*构造一个空队列*/

    for(j=1;j<=Gn;j++){ /*初始化*/

    topOrder[j]=0;inDegree[j]=0;

    }

    for(j=1;j<=Gn;j++) /*求图G中各顶点的入度*/

    for(p=G.Vhead[j].firstarc;p;p=p->nextarc)

    inDegree[P->adjvex]+=1;

    for(j=i;j<=G.n;J++) /*将图G中入度为0的顶点保存在队列中*/

    if(0==inDegree[j]) EnQueue(&Q,j);

    while(! IsEmpty(Q)){

    (2); /*队头顶点出队列并用w保存该顶点的编号*/

    topOrder[k++]=w; /*将顶点W的所有邻接顶点的入度减l(模拟删除顶点w及该顶点出发的弧的操作)*/

    for(p=G.Vhead[w].firstarc;p;p=p->nextarc){

    (3)-=1;

    if(0== (4) ) EnQueue(&Q,P->adjvex);

    }/*for*/

    }/ * while*/

    free(inDegree);

    if( (5) )

    return NULL;

    return topOrder;

    }/*TopSort*/

    根据以上说明和C代码,填充C代码中的空(1)


    正确答案:(1)InitQueue(&Q) (2)DeQueue(&Q&w) (3)inDegree[p->adjvex] (4)inDegree[p->adjvexj (5)k!=G.N
    (1)InitQueue(&Q) (2)DeQueue(&Q,&w) (3)inDegree[p->adjvex] (4)inDegree[p->adjvexj (5)k!=G.N 解析:根据空(1)的后面注释是构造一个空队列,程序的开始已经定义了一个队列Q,那么此处只需初始化这个队列即可,所以空(1)应填InitQueue(&Q)。
    根据空(2)后面的解释,如果队列不空,那么就将队列的元素依次出队列,所以空(2)应为DeQueue(&Q,&w)。
    空(3)、(4)上下端的功能是将顶点w的所有邻接顶点的入度减l,数组inDegree中存放各个顶点的入度,所以空(3)应为inDegree[p->adjvex],并判断与顶点w相邻的顶点有没有入度为零的顶点,如果有,就把这个顶点入队列,所以空(4)也填inDegree[p->adjvex]。
    最后,最外层循环结束,如果拓扑序列中元素的个数k不等于定点数n,那么就说明有向图中存在环,返回NULL上,所以空(5)填k!=G.n。

  • 第3题:

    拓扑序列是无环有向图中所有顶点的一个线性序列,图中任意路径中的各个顶点在该图的拓扑序列中保持先后关系。对于图中的有向图, ( ) 不是其的一个拓扑序列。

    A.1526374
    B.1526734
    C.5123764
    D.5126374

    答案:C
    解析:
    拓扑序列是将有向图中所有顶点排成一个线性序列,并且该序列满足:若在图中存在从顶点Vi到Vj的路径,则在该线性序列中,顶点i必然在顶点Vj之前。对有向图进行拓扑排序的方法如下:① 在有向图中选择一个入度为零(没有前驱)的顶点且输出之:② 从有向图中删除该顶点及从该顶点出发的所有弧;③ 重复上述两步,直至图中不存在入度为0的顶点为止。对于图3-4所示的有向图,进行拓扑排序的顶点序列有:5126374、5126734、1526374和1526734。而选项C的"5123764"不是其中的一个拓扑序列。

  • 第4题:

    在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧。


    正确答案:错误

  • 第5题:

    已知n个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他顶点),则该图中最少有多少条有向边()

    • A、n
    • B、n+1
    • C、n-1
    • D、n*(n-1)

    正确答案:A

  • 第6题:

    如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。


    正确答案:回路

  • 第7题:

    在无向图中定义顶点vi与vj之间的路径为从vi到vj的一个()。

    • A、顶点序列
    • B、边序列
    • C、权值总和
    • D、边的条数

    正确答案:A

  • 第8题:

    无向图中一个顶点的度是指图中()

    • A、通过该顶点的简单路径数
    • B、通过该顶点的回路数
    • C、与该顶点相邻的顶点数
    • D、与该顶点连通的顶点数

    正确答案:C

  • 第9题:

    单选题
    在无向图中定义顶点vi与vj之间的路径为从vi到vj的一个()。
    A

    顶点序列

    B

    边序列

    C

    权值总和

    D

    边的条数


    正确答案: D
    解析: 暂无解析

  • 第10题:

    填空题
    在一个有向图中,若存在弧,则在其拓扑序列中,顶点vi,vj,vk的相对次序为()。

    正确答案: vi,vj,vk
    解析: 暂无解析

  • 第11题:

    单选题
    已知n个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他顶点),则该图中最少有多少条有向边()
    A

    n

    B

    n+1

    C

    n-1

    D

    n*(n-1)


    正确答案: C
    解析: 暂无解析

  • 第12题:

    单选题
    在无向图中定义顶点Vi域Vj之间的路径为从Vi到达Vj的一个()。
    A

    顶点序列

    B

    边序列

    C

    权值总和

    D

    边的条数


    正确答案: B
    解析: 暂无解析

  • 第13题:

    无向图中一个顶点的度是指图中()

    A、通过该顶点的简单路径数

    B、与该顶点相邻接的顶点数

    C、通过该顶点的回路数

    D、与该顶点连通的顶点数


    参考答案:D

  • 第14题:

    在一个有向图G的拓扑序列中,顶点Vi排列在Vj之前,说明图G中(59)。A.一定存在弧B.

    在一个有向图G的拓扑序列中,顶点Vi排列在Vj之前,说明图G中(59)。

    A.一定存在弧<vi,vj>

    B.一定存在弧<vj,vi>

    C.可能存在vi到vj的路径,而不可能存在vj到vi的路径

    D.可能存在vj到vi的路径,而不可能存在vi到vj的路径


    正确答案:C
    拓扑序列是拓扑排序的产出物。对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。由此可见,如果Vi排列在Vj之前,说明可能存在vi到vj的路径,而不可能存在vj到vi的路径。

  • 第15题:

    拓扑序列是有向无环图中所有顶点的一个线性序列,若有向图中存在弧或存在从顶点v到w的路径,则在该有向图的任一拓扑序列中,v一定在w之前。下面有向图的拓扑序列是( )。

    A.41235
    B.43125
    C.42135
    D.41325

    答案:A
    解析:
    拓扑排序通俗一点来讲,其实就是依次遍历没有前驱结点的结点。而某一时刻没有前驱结点的结点有可能存在多个,所以一个图的拓扑排序可能有多个。
    4号结点没有前戏,所以拓扑排序的第一个元素是4。当4访问完了就可以访问1,1号访问完了就可以访问2,2号访问完了就可以访问3或5。所以拓扑排序结果为:412(35)。


  • 第16题:

    在一个有向图中,若存在弧,则在其拓扑序列中,顶点vi,vj,vk的相对次序为()。


    正确答案:vi,vj,vk

  • 第17题:

    在无向图中定义顶点Vi域Vj之间的路径为从Vi到达Vj的一个()。

    • A、顶点序列
    • B、边序列
    • C、权值总和
    • D、边的条数

    正确答案:A

  • 第18题:

    可从任意有向图中得到关于所有顶点的拓扑次序。


    正确答案:错误

  • 第19题:

    用深度优先遍历方法遍历一个有向无环图,并在深度优先遍历算法中按退栈次序打印出相应的顶点,则输出的顶点序列是()。

    • A、逆拓扑有序
    • B、拓扑有序
    • C、无序
    • D、深度优先遍历序列

    正确答案:A

  • 第20题:

    单选题
    用深度优先遍历方法遍历一个有向无环图,并在深度优先遍历算法中按退栈次序打印出相应的顶点,则输出的顶点序列是()。
    A

    逆拓扑有序

    B

    拓扑有序

    C

    无序

    D

    深度优先遍历序列


    正确答案: B
    解析: 暂无解析

  • 第21题:

    单选题
    无向图中一个顶点的度是指图中()
    A

    通过该顶点的简单路径数

    B

    通过该顶点的回路数

    C

    与该顶点相邻的顶点数

    D

    与该顶点连通的顶点数


    正确答案: C
    解析: 暂无解析

  • 第22题:

    判断题
    在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第23题:

    判断题
    在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧。
    A

    B


    正确答案:
    解析: