Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- class program():
- def __init__(self):
- graph = {
- 'o':{'a':2,'b':5,'c':4},
- 'a':{'b':2,'d':7,'f':12},
- 'b':{'d':4,'e':3},
- 'c':{'b':1,'e':4},
- 'd':{'e':1,'t':5},
- 'e':{'t':7},
- 'f':{'t':3},
- 't':{'f':3,'e':7,'d':5}
- }
- start = 'o'
- goal = 't'
- self.root = Tk()
- self.root.title("Quiz P13")
- self.root.geometry("240x80")
- self.root.resizable(width=False, height=False)
- self.dijkstra(graph,start,goal)
- self.root.mainloop()
- def dijkstra(self,graph,start,goal):
- shortest_distance = {}
- track_predecessor = {}
- start = 'o'
- goal = 't'
- unseenNodes = graph
- infinity = 999999
- track_path = []
- for node in unseenNodes:
- shortest_distance[node] = infinity
- shortest_distance[start] = 0
- while unseenNodes:
- min_distance_node = None
- for node in unseenNodes:
- if min_distance_node is None:
- min_distance_node = node
- elif shortest_distance[node] < shortest_distance[min_distance_node]:
- min_distance_node = node
- path_options = graph[min_distance_node].items()
- for child_node, weight in path_options:
- if weight + shortest_distance[min_distance_node] < shortest_distance[child_node]:
- shortest_distance[child_node] = weight + shortest_distance[min_distance_node]
- track_predecessor[child_node] = min_distance_node
- unseenNodes.pop(min_distance_node)
- currentNode = goal
- while currentNode != start:
- try:
- track_path.insert(0, currentNode)
- currentNode = track_predecessor[currentNode]
- except KeyError:
- print("Path is not reachable")
- break
- track_path.insert(0,start)
- if shortest_distance[goal] != infinity:
- frame = LabelFrame(self.root, text=" Akbar Basyarudin - 41519010046 ", bd=8,fg='red', bg="green")
- Label(frame, text='Jarak dari O ke T', fg='red', bg='green').place(x=0, y=0)
- self.distance_goal = str(shortest_distance[goal])
- Label(frame, text='Jarak Terpendek : ' + self.distance_goal, fg='red', bg='green').place(x=0, y=17)
- self.trackpath = str(track_path)
- Label(frame, text='Jalur yang Optimal : ' + self.trackpath, fg='red', bg='green').place(x=0, y=34)
- frame.pack(expand=YES, fill=BOTH)
- program()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement