- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1在无向图形中
1.在無向圖形中,如果n個頂點中恰好擁有n*(n-1)/2條邊,可稱為(1)完美圖形(2)最佳圖形 (3)完整圖形 (4)合理圖形
解答: (3)
2. 請問以下哪些是圖形的應用(Application)?(1)工作排程 (2)遞迴程式 (3)電路分析(4)排序(5)最短路徑尋找(6)模擬 (7)副程式呼叫 (8)都市計劃
解答: (3),(5),(8)
3.下圖是否為雙連通圖形(Biconnected Graph)?有哪些連通單元(Connected Components)?試說明之。
ch08-52
解答:對於一個頂點V,如果將V上所連接的邊都去除所產生的G’,如果G’最少有兩個連通單元,則稱此頂點V為所謂的「連結點」(Articulation Point)。而一個沒有連結點的圖形,就是「雙連通圖形」(Biconnected Graph)。而這個有4個連結點C、E、F、H,因此並不是「雙連通圖形」。而此圖的連通單元,有下列五種:
ch08-53
4. 請各位自行參考佇列的寫法,並設計一:先廣後深搜尋法(BFS)的C++程式。
/*
[名稱]:ex06_01.cpp
[示範]:先廣後深搜尋法(BFS)
*/
#include iostream
#include cstdlib
#define MAXSIZE 10//定義佇列的最大容量
using namespace std;
int front=-1;//指向佇列的前端
int rear=-1;//指向佇列的後端
struct list//圖形頂點結構宣告
{
int x;//頂點資料
struct list *next;//指向下一個頂點的指標
};
typedef struct list node;
typedef node *link;
struct GraphLink
{
link first;
link last;
};
int run[9];//用來記錄各頂點是否走訪過
int queue[MAXSIZE];
struct GraphLink Head[9];
void print(struct GraphLink temp)
{
link current=temp.first;
while(current!=NULL)
{
cout[current-x];
current=current-next;
}
coutendl;
}
void insert(struct GraphLink *temp,int x)
{
link newNode;
newNode=new node;
newNode-x=x;
newNode-next=NULL;
if(temp-first==NULL)
{
temp-first=newNode;
temp-last=newNode;
}
else
{
temp-last-next=newNode;
temp-last=newNode;
}
}
//佇列資料的存入
void enqueue(int value)
{
if(rear=MAXSIZE) return;
rear++;
queue[rear]=value;
}
//佇列資料的取出
int dequeue()
{
if(front==rear) return -1;
front++;
return queue[front];
}
//廣度優先搜尋法
void bfs(int current)
{
link tempnode; //臨時的節點指標
enqueue(current); //將第一個頂點存入佇列
run[current]=1; //將走訪過的頂點設定為1
cout[current]; //印出該走訪過的頂點
while(front!=rear) { //判斷目前是否為空佇列
current=dequeue(); //將頂點從佇列中取出
tempnode=Head[current].first; //先記錄目前頂點的位置
while(tempnode!=NULL)
{
if(run[tempnode-x]==0)
{
enqueue(tempnode-x);
run[tempnode-x]=1; //記錄已走訪過
cout[tempnode-x];
文档评论(0)