Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อแสดงกราฟโดยใช้เมทริกซ์ Adjacency


เมทริกซ์ที่อยู่ติดกันของกราฟคือเมทริกซ์กำลังสองที่มีขนาด V x V V คือจำนวนจุดยอดของกราฟ G ในเมทริกซ์นี้ในแต่ละด้าน V จุดยอดจะถูกทำเครื่องหมาย หากกราฟมีขอบบางจุดจากจุดยอด i ถึง j แสดงว่าในเมทริกซ์ส่วนต่อประสานที่ i th แถวและ j th คอลัมน์จะเป็น 1 (หรือค่าที่ไม่ใช่ศูนย์สำหรับกราฟแบบถ่วงน้ำหนัก) มิฉะนั้น ตำแหน่งนั้นจะเป็น 0

ความซับซ้อนของการแสดงเมทริกซ์ Adjacency

  • การแสดงเมทริกซ์ที่อยู่ติดกันใช้ O(V 2 ) จำนวนพื้นที่ขณะคำนวณ เมื่อกราฟมีจำนวนขอบสูงสุดและจำนวนขอบต่ำสุด ในทั้งสองกรณี พื้นที่ที่ต้องการจะเท่ากัน

ป้อนข้อมูล

โปรแกรม C++ เพื่อแสดงกราฟโดยใช้เมทริกซ์ Adjacency

ผลผลิต


0
1
2
3
4
5
0
0
0
0
1
1
0
1
0
0
1
0
1
1
2
0
1
0
1
0
0
3
1
0
1
0
0
1
4
1
1
0
0
0
1
5
0
1
1
1
1
0

อัลกอริทึม

add_edge(u, v)

ป้อนข้อมูล − u และ v ของ edge {u,v}

ผลผลิต − เมทริกซ์ที่อยู่ติดกันของกราฟ G

Begin
adj_matrix[u, v] := 1
adj_matrix[v, u] := 1
End

โค้ดตัวอย่าง

#include<iostream>
using namespace std;
int vertArr[20][20]; //the adjacency matrix initially 0
int count = 0;
void displayMatrix(int v) {
   int i, j;
   for(i = 0; i < v; i++) {
      for(j = 0; j < v; j++) {
         cout << vertArr[i][j] << " ";
      }
      cout << endl;
   }
}
void add_edge(int u, int v) { //function to add edge into the matrix
   vertArr[u][v] = 1;
   vertArr[v][u] = 1;
}
main(int argc, char* argv[]) {
int v = 6; //there are 6 vertices in the graph
add_edge(0, 4);
add_edge(0, 3);
add_edge(1, 2);
add_edge(1, 4);
add_edge(1, 5);
add_edge(2, 3);
add_edge(2, 5);
add_edge(5, 3);
add_edge(5, 4);
displayMatrix(v);
}

ผลลัพธ์

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