當前位置:首頁 » 操作系統 » 頂點入度演算法

頂點入度演算法

發布時間: 2022-05-30 23:08:40

c語言數據結構圖求入度的演算法

//思路:先把鄰接表轉換成逆鄰接表,這樣問題簡單多了。
//數組out,保存各節點的入度
void countindegree(AdjList gin, AdjList gout)
{

//設有向圖有n個頂點,建逆鄰接表的頂點向量。
for (int i=1;i<=n;i++)
{
gin[i].vertex=gout[i].vertex;
gin.firstarc=null;
}

//鄰接表轉為逆鄰接表。
for (i=1;i<=n;i++)
{
p=gout[i].firstarc;//取指向鄰接表的指針。
while (p!=null)
{
j=p->adjvex;
s=(ArcNode *)malloc(sizeof(ArcNode));//申請結點空間。
s->adjvex=i;
s->next=gin[j].firstarc;
gin[j].firstarc=s;
p=p->next;//下一個鄰接點。
}//while
}//endof for

//統計各節點的入度
for (i=0; i<n; i++)
{
p = gin[i].firstarc;

while(p ! = null)
{
out[i]++;
p = p->next;
} //endof while
} //endof for

}//endof function

Ⅱ 離散數學:圖中頂點a的入度和出度分別是什麼

答:圖中頂點a的入度是1,出度是4。
具體原因:這張圖是有向圖,一個頂點的入度是以這個頂點為終點的有向邊的數量;一個頂點的出度是以這個頂點為起點的有向邊的數量。在圖中,以頂點a為終點的有向邊只有e1,所以a的入度是1;以頂點a為起點的有向邊有e1,e2,e3,e4,所以a的出度是4。
提醒:圖中e1是自環,e2、e3是重邊,它們都應當參與入度、出度的計算,不應該忽略。

Ⅲ 已知一個有向圖的鄰接矩陣表示,計算第j個頂點的入度的方法是

第j列元素之和

Ⅳ 有向圖求頂點出入度和最短路徑Dijksatra演算法。運行的出入度和求最短距離都有問題,請問出錯在哪裡

錯在2處,一個圖的初始化上,邊的初始值應該是無窮INF

G.edges[i][j]=0;改成G.edges[i][j]=INF;

另外一個是函數outG顯示鄰接矩陣里,如果是INF則顯示∞

Ⅳ 數據結構 求有向圖中每個頂點的出度和入度的演算法

正好在做,搜半天沒有解說,

入度:能夠進入當前頂點的個數

出度:當前頂點的最大長大。

Ⅵ 什麼是出度和入度是哪類演算法或數據結構中的

圖演算法。詳細的可以搜索。下面是摘自網路:

圖中的度:所謂頂點的度(degree),就是指和該頂點相關聯的邊數。

在有向圖中,度又分為入度和出度。

入度 (in-degree) :以某頂點為弧頭,終止於該頂點的弧的數目稱為該頂點的入度

出度 (out-degree) :以某頂點為弧尾,起始於該頂點的弧的數目稱為該頂點的出度

Ⅶ n個頂點e條邊的圖G用鄰接表存儲,則求每個頂點入度的時間復雜度為查了好幾個地方的答案,答案大部分

O(n+e)是對的,O(n*n)是用鄰接矩陣存儲時的時間復雜度。
演算法就是遍歷每一條邊,然後把每條邊的終點的入度+1.
在鄰接表中,就是要依次訪問每個頂點,然後在每個頂點中依次訪問每條邊,把這些邊的終點的入度+1。也就是每個頂點和每條邊依次要各訪問一遍,所以時間復雜度是O(n+e)。
在鄰接矩陣中,演算法需要遍歷鄰接矩陣的每一個點,而鄰接矩陣有n*n個點,所以時間復雜度是O(n*n)。
有什麼不懂的可以追問。

Ⅷ 編寫演算法,求有向圖中各定點的入度

先是根據鄰接表的頂點個數n,創建一個int型的數組a[n](用來存儲各頂點的入度),把a[n]中的每一項置為0。然後再鄰接表遍歷一下就行了,先是頂點遍歷,然後弧遍歷。
我大致寫一下演算法。
#define n 30;
struct diagraph
{
struct vertex * head;
struct Vertex ver;
struct Edge edg;
}
struct Vertex
{
int pos;
Vertex * nextVertex;
Edge * firstEdge;
};
struct Edge
{
int pos;
Edge * nextEdge;
Vertex * endPoint;//弧尾指向結點的指針
}
void main()
{
struct digraph a;
//先是鄰接表的建立,我就不寫了,建立完之後如下
int a[n];
int i,j;
struct Vertex * current = a.head;
struct Edge * eCurrent;
for(i=0;i<n;i++)
{
eCurrent=current->firstEdge;
while(eCurrent!=0)
{
a[eCurrent->pos]++;
eCurrent=eCurrent->nextEdge;
}
current = current->nextVertex;
}

}

我直接在知道上面寫的,只是個大概,能看懂的話就給個分吧

Ⅸ c語言怎麼統計一個圖每個頂點的度數

假設不帶權有向圖採用鄰接矩陣 g 存儲,設計實現以下功能的演算法:

(1) 求出圖中每個頂點的入度。

(2) 求出圖中每個頂點的出度。

(3) 求出圖中出度為0 的頂點數。

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

using namespace std;

#define INFINITY 65535

#define MAX_VERTEX_NUM 100

typedef char VertexType;

typedef struct {

VertexType vexs[MAX_VERTEX_NUM]; //頂點數組

int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //鄰接矩陣

int v, e; //圖頂點和邊的數量

} MGraph;

int num=0; 全局變數負責統計出度為0的頂點個數

void CreateMGraph(MGraph &G)

{

int i,j,k,w;

printf("輸入頂點數和邊數:\n");

scanf("%d%d",&G.v,&G.e);

//for(i=0;i<G.v;i++)

//scanf("%c",G.vexs[i]);

for(i=0;i<G.v;i++)

for(j=0;j<G.v;j++)

G.arcs[i][j]=INFINITY; //初始化鄰接矩陣

for(k=0;k<G.e;k++)

{

printf("輸入邊(i,j)上的下標i,j和權w\n");

scanf("%d%d%d",&i,&j,&w);

G.arcs[i][j]=w;

}

}

void in(MGraph G)

{

int n=0;

printf("入度:\n");

Ⅹ 數據結構 求圖中各頂點的入度 急!!!

for(int i=0;i<n;i++) degree[i]=0;
for(int i=0;i<n;i++) {
for(list *p=l[i];p!=NULL;p=p->next) degree[p->to]++;
}

熱點內容
jsp輸出腳本 發布:2024-10-29 07:19:49 瀏覽:507
ps存儲不了怎麼辦 發布:2024-10-29 07:15:47 瀏覽:356
對數減法運演算法則 發布:2024-10-29 06:59:11 瀏覽:50
五萬多帝豪什麼配置 發布:2024-10-29 06:57:04 瀏覽:527
工藝員編程 發布:2024-10-29 06:31:06 瀏覽:113
大嘴腳本是什麼 發布:2024-10-29 06:20:59 瀏覽:205
電腦批量壓縮圖片軟體 發布:2024-10-29 06:14:39 瀏覽:720
php郵件內容 發布:2024-10-29 06:14:33 瀏覽:836
偽裝者緩存 發布:2024-10-29 06:12:19 瀏覽:787
原神怎麼調低手機配置 發布:2024-10-29 06:12:01 瀏覽:1001