GRAPH
GRAPH
1. PENGERTIAN GRAPH
Graph adalah kumpulan node (simpul) di dalam bidang
dua dimensi yang dihubungkan dengan sekumpulan garis (sisi). Graph dapat
digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara
objek-objek tersebut. Representasi visual dari graph adalah dengan menyatakan
objek sebagai node, bulatan atau titik (Vertex), sedangkan hubungan antara
objek dinyatakan dengan garis (Edge).
2.
ISTILAH
PADA GRAPH
Terdapat
beberapa istilah yang berkaitan dengan graph
yaitu :
Ø Vertex
Vertex yaitu himpunan node / titik
pada sebuah graph.
Ø Edge
Edge
yaitu himpunan garis yang menghubungkan tiap node / vertex.
Ø Adjacent
Adjacent
yaitu Adalah dua buah titik dikatakan berdekatan (adjacent) jika dua
buah titik tersebut terhubung dengan sebuah sisi.
Ø Weight
Disebut sebuah graph berbobot (weight
graph), apabila terdapat sebuah fungsi bobot bernilai real.
Ø Path
Path yaitu jalur dengan setiap vertex berbeda.
Ø Cycle
Adalah
Siklus (Cycle) atau Sirkuit (Circuit) yaitu lintasan yang
berawal dan berakhir pada simpul yang sama.
3.
JENIS
JENIS GRAPH
Ø Undirected
Graph
Graph tak berarah (undirected graph atau
non-directed graph) dimana urutan simpul dalam sebuah busur tidak dipentingkan.
Ø Directed
Graph
Graph berarah (directed
graph) dimana urutan simpul mempunyai arti.
Ø Weighted
Graph
Jika
setiap busur mempunyai nilai yang menyatakan hubungan antara 2 buah simpul,
maka busur tersebut dinyatakan memiliki bobot. Bobot sebuah busur dapat
menyatakan panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan
perhari yang melalui sebuah jalan, dll.
4.
CONTOH
SOURCE CODE
def main():
pass
if __name__ == '__main__':
main()
graph = {'A': ['B', 'C','D'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']}
def find_path(graph, start, end,
path=[]):
path = path + [start]
for node in graph[start]:
if not node in path:
newpath = find_path(graph,
node, end, path)
if newpath:
return newpath
if start == end:
return path
if not start in graph:
return None
return None
def all_path(graph, start, end,
path=[]):
path = path + [start]
if start == end:
return [path]
if not start in graph:
return []
paths = []
for node in graph[start]:
if not node in path:
newpaths = all_path(graph,
node, end, path)
for newpath in
newpaths:
paths.append(newpath)
return paths
def shortest_path(graph, start, end,
path=[]):
path = path + [start]
if start == end:
return path
if not start in graph:
return None
shortest = None
for node in graph[start]:
if node not in path:
newpath = shortest_path(graph,
node, end, path)
if newpath:
if not shortest or
len(newpath) < len(shortest):
shortest = newpath
return shortest
print(find_path(graph, 'E', 'C'))
print(all_path(graph,'A','D'))
print(shortest_path(graph,'A','D'))
Di post oleh :
1. FITRI ANISA (170411100014)
2. DHEA OKY SYAFITRI (170411100006)
Komentar
Posting Komentar