สมมติว่าเรามีรายการของจุดยอด และให้องศาของจุดนั้น เราต้องสร้างกราฟแบบไม่บอกทิศทางหนึ่งกราฟจากลำดับระดับนั้น จะไม่รวมห่วงหรือหลายขอบ ดังนั้นหากลำดับดีกรีเท่ากับ [2, 2, 1, 1] กราฟก็จะเป็นแบบ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนด adjacency matrix adj เพื่อเก็บกราฟ
-
สำหรับแต่ละจุดยอด i ทำ
-
สำหรับแต่ละจุดยอด j ที่ถูกต้องและถัดจาก i
-
ถ้าดีกรีของจุดยอด i และ j มากกว่าศูนย์ ให้เชื่อมต่อเข้าด้วยกัน
-
-
-
แสดงเมทริกซ์
ตัวอย่าง
#include <iostream>
#include <iomanip>
using namespace std;
void generateGraph(int vert_degree[], int n) {
int adj_mat[n][n];
for(int i = 0; i<n; i++){
for(int j = 0; j < n; j++){
adj_mat[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (vert_degree[i] > 0 && vert_degree[j] > 0) {
vert_degree[i]--; vert_degree[j]--;
adj_mat[i][j] = adj_mat[j][i] = 1;
}
}
}
cout << endl << setw(3) << " ";
for (int i = 0; i < n; i++)
cout << setw(3) << "(" << i << ")";
cout << endl << endl;
for (int i = 0; i < n; i++) {
cout << setw(4) << "(" << i << ")";
for (int j = 0; j < n; j++)
cout << setw(5) << adj_mat[i][j];
cout << endl;
}
}
int main() {
int vert_degree[] = { 2, 2, 1, 1, 1 };
int n = sizeof(vert_degree) / sizeof(vert_degree[0]);
generateGraph(vert_degree, n);
}
ผลลัพธ์
(0) (1) (2) (3) (4) (0) 0 1 1 0 0 (1) 1 0 0 1 0 (2) 1 0 0 0 0 (3) 0 1 0 0 0 (4) 0 0 0 0 0