पायथन में डिक्शनरी का उपयोग करके रेखांकन को लागू किया जा सकता है। शब्दकोश में, प्रत्येक कुंजी शिखर होगी, और मूल्य के रूप में, इसमें जुड़े शिखरों की एक सूची होती है। तो पूरी संरचना एक ग्राफ जी (वी, ई) की आसन्न सूची की तरह दिखेगी।
हम मूल शब्दकोश वस्तु का उपयोग कर सकते हैं, लेकिन हम डिफ़ॉल्ट तानाशाही का उपयोग कर रहे हैं। इसमें कुछ अतिरिक्त विशेषताएं हैं। इसमें एक अतिरिक्त लिखने योग्य आवृत्ति चर है।
हम एक टेक्स्ट फ़ाइल प्रदान कर रहे हैं, जिसमें शीर्षों की संख्या, किनारों की संख्या, शीर्षों के नाम और किनारों की सूची शामिल है। अप्रत्यक्ष ग्राफ़ के लिए, हम दो किनारों जैसे (u,v) और (v,u) प्रदान कर रहे हैं।
हम इस उदाहरण में इस ग्राफ का उपयोग कर रहे हैं।
<केंद्र>ग्राफ़ के लिए फ़ाइल नीचे की तरह है -
Graph_Input.txt
6 8 A|B|C|D|E|F A,B B,A A,C C,A B,D D,B B,E E,B C,E E,C D,E E,D D,F F,D E,F F,E
तो सबसे पहले, हम शीर्षों के नाम ले रहे हैं, और फिर किनारों को सूची में सम्मिलित करने के लिए पढ़ते हैं।
उदाहरण कोड
from collections import defaultdict defcreate_graph(filename): graph = defaultdict(list) #create dict with keys and corresponding lists with open(filename, 'r') as graph_file: vertex = int(graph_file.readline()) edges = int(graph_file.readline()) vert_Names = graph_file.readline() vert_Names = vert_Names.rstrip('\n') #Remove the trailing new line character nodes = vert_Names.split('|') #Cut the vertex names for node in nodes: #For each vertex, create empty list graph[node] = [] #Read edges from file and fill the lists for line in graph_file: line = line.rstrip('\n') #Remove the trailing new line character edge = line.split(',') graph[edge[0]].append(edge[1]) #The edge[0] is source and edge[1] is dest return graph my_graph = create_graph('Graph_Input.txt') for node in my_graph.keys(): #Print the graph print(node + ': ' + str(my_graph[node]))
आउटपुट
A: ['B', 'C'] B: ['A', 'D', 'E'] C: ['A', 'E'] D: ['B', 'E', 'F'] E: ['B', 'C', 'D', 'F'] F: ['D', 'E']
अब हम दिए गए ग्राफ G(V,E) पर कुछ बुनियादी संक्रियाओं को देखेंगे। सबसे पहले हम देखेंगे कि सोर्स वर्टेक्स से डेस्टिनेशन वर्टेक्स तक पथ कैसे प्राप्त करें। दिया गया कोड इस ऑपरेशन का एक हिस्सा है। इसे निष्पादित करने के लिए, आपको पिछली विधि का उपयोग करके ग्राफ बनाना होगा।
उदाहरण कोड
#Function to find path from source to destination defget_path(graph, src, dest, path = []): path = path + [src] if src == dest: #when destination is found, stop the process return path for vertex in graph[src]: if vertex not in path: path_new = get_path(graph, vertex, dest, path) if path_new: return path_new return None my_graph = create_graph('Graph_Input.txt') path = get_path(my_graph, 'A', 'C') print('Path From Node A to C: ' + str(path))
आउटपुट
Path From Node A to C: ['A', 'B', 'D', 'E', 'C']
अब हम देखेंगे कि सोर्स वर्टेक्स से डेस्टिनेशन वर्टेक्स तक सभी संभावित पथ कैसे प्राप्त करें। दिया गया कोड इस ऑपरेशन का एक हिस्सा है। इसे निष्पादित करने के लिए, आपको पिछली विधि का उपयोग करके ग्राफ बनाना होगा।
उदाहरण कोड
#Function to find all paths from source to destination defget_all_path(graph, src, dest, path = []): path = path + [src] if src == dest: #when destination is found, stop the process return [path] paths = [] new_path_list = [] for vertex in graph[src]: if vertex not in path: new_path_list = get_all_path(graph, vertex, dest, path) for new_path in new_path_list: paths.append(new_path) return paths my_graph = create_graph('Graph_Input.txt') paths = get_all_path(my_graph, 'A', 'C') print('All Paths From Node A to C: ') for path in paths: print(path)
आउटपुट
All Paths From Node A to C: ['A', 'B', 'D', 'E', 'C'] ['A', 'B', 'D', 'E', 'C'] ['A', 'B', 'D', 'F', 'E', 'C'] ['A', 'B', 'D', 'F', 'E', 'C'] ['A', 'B', 'D', 'F', 'E', 'C'] ['A', 'B', 'E', 'C'] ['A', 'C']
अंत में, हम देखेंगे कि स्रोत से गंतव्य शीर्ष तक का सबसे छोटा पथ कैसे प्राप्त करें। दिया गया कोड इस ऑपरेशन का एक हिस्सा है। इसे निष्पादित करने के लिए, आपको पिछली विधि का उपयोग करके ग्राफ बनाना होगा।
उदाहरण कोड
#Function to find shortest path from source to destination def get_shortest_path(graph, src, dest, path = []): path = path + [src] if src == dest: #when destination is found, stop the process return path short = None for vertex in graph[src]: if vertex not in path: new_path_list = get_shortest_path(graph, vertex, dest, path) if new_path_list: if not short or len(new_path_list) <len(short): short = new_path_list return short my_graph = create_graph('Graph_Input.txt') path = get_shortest_path(my_graph, 'A', 'C') print('Shortest Paths From Node A to C: ' + str(path))
आउटपुट
Shortest Paths From Node A to C: ['A', 'C']