Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6d9417f

Browse files
Three Hundred - Forty Commit: Refactor by separating Graph class and Undirected Graph Demo
1 parent 5b0038d commit 6d9417f

File tree

3 files changed

+78
-22
lines changed

3 files changed

+78
-22
lines changed

‎Section_12(Graphs)/(1)_graph.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -100,25 +100,3 @@ def indegree(self, v):
100100
def display_adjacent_matrix(self):
101101
print(self._adjacent_matrix)
102102

103-
# Undirected Graph
104-
G = Graph(4)
105-
G.display_adjacent_matrix()
106-
print('Vertices:', G.vertex_count())
107-
print('Edges:', G.edge_count())
108-
G.insert_edge(0, 1)
109-
G.insert_edge(0, 2)
110-
G.insert_edge(1, 0)
111-
G.insert_edge(1, 2)
112-
G.insert_edge(2, 0)
113-
G.insert_edge(2, 1)
114-
G.insert_edge(2, 3)
115-
G.insert_edge(3, 2)
116-
G.display_adjacent_matrix()
117-
print('Vertices:', G.vertex_count())
118-
print('Edges:', G.edge_count())
119-
G.edges_print()
120-
print('Edge between 1-3', G.exist_edge(1, 3))
121-
print('Edge between 1-2', G.exist_edge(1, 2))
122-
print('Degree', G.indegree(2))
123-
G.remove_edge(1,2)
124-
print('Edge between 1-2', G.exist_edge(1, 2))

‎Section_12(Graphs)/graph.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import numpy as np
2+
3+
class Graph:
4+
def __init__(self, vertices):
5+
self._vertices = vertices
6+
self._adjacent_matrix = np.zeros((vertices, vertices))
7+
8+
def insert_edge(self, u, v, weight_edge = 1):
9+
self._adjacent_matrix[u][v] = weight_edge
10+
11+
def remove_edge(self, u, v):
12+
self._adjacent_matrix[u][v] = 0
13+
14+
def exist_edge(self, u, v):
15+
return self._adjacent_matrix[u][v] != 0
16+
17+
def vertex_count(self):
18+
return self._vertices
19+
20+
def edge_count(self):
21+
count = 0
22+
for i in range(self._vertices):
23+
for j in range(self._vertices):
24+
if self._adjacent_matrix[i][j] != 0:
25+
count = count + 1
26+
return count
27+
28+
def vertices_print(self):
29+
for i in range(self._vertices):
30+
print(i, end=' ')
31+
print()
32+
33+
def edges_print(self):
34+
for i in range(self._vertices):
35+
for j in range(self._vertices):
36+
if self._adjacent_matrix[i][j] != 0:
37+
print(i, '--', j)
38+
39+
def outdegree(self, v):
40+
count = 0
41+
for j in range(self._vertices):
42+
if self._adjacent_matrix[v][j] != 0:
43+
count = count + 1
44+
return count
45+
46+
def indegree(self, v):
47+
count = 0
48+
for i in range(self._vertices):
49+
if self._adjacent_matrix[i][v] != 0:
50+
count = count + 1
51+
return count
52+
53+
# Helper function to display adjacency matrix
54+
def display_adjacent_matrix(self):
55+
print(self._adjacent_matrix)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from graph import Graph
2+
# Undirected Graph Demo
3+
G = Graph(4)
4+
G.display_adjacent_matrix()
5+
print('Vertices:', G.vertex_count())
6+
print('Edges:', G.edge_count())
7+
G.insert_edge(0, 1)
8+
G.insert_edge(0, 2)
9+
G.insert_edge(1, 0)
10+
G.insert_edge(1, 2)
11+
G.insert_edge(2, 0)
12+
G.insert_edge(2, 1)
13+
G.insert_edge(2, 3)
14+
G.insert_edge(3, 2)
15+
G.display_adjacent_matrix()
16+
print('Vertices:', G.vertex_count())
17+
print('Edges:', G.edge_count())
18+
G.edges_print()
19+
print('Edge between 1-3', G.exist_edge(1, 3))
20+
print('Edge between 1-2', G.exist_edge(1, 2))
21+
print('Degree', G.indegree(2))
22+
G.remove_edge(1,2)
23+
print('Edge between 1-2', G.exist_edge(1, 2))

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /