Proyek ini adalah implementasi teori graf menggunakan Python dan library NetworkX. Proyek ini mencakup berbagai metode untuk mempelajari dan menganalisis graf, termasuk penambahan node, penambahan edge, visualisasi graf, dan analisis seperti jalur terpendek, koefisien clustering, dan diameter graf.
Proyek ini dapat digunakan untuk memahami konsep dasar teori graf dan aplikasinya dalam analisis jaringan.
Pastikan Anda sudah menginstal library berikut sebelum menjalankan proyek ini:
- NetworkX: Untuk manipulasi graf.
- Matplotlib: Untuk visualisasi graf.
Anda dapat menginstalnya menggunakan perintah berikut:
pip install networkx matplotlibBerikut adalah fitur utama yang tersedia dalam proyek ini:
-
Penambahan Node
- Tambahkan node (titik) ke dalam graf.
-
Penambahan Edge
- Tambahkan sisi (edge) yang menghubungkan dua node dengan bobot opsional.
-
Visualisasi Graf
- Tampilkan graf secara visual untuk memahami struktur jaringan.
-
Jalur Terpendek
- Temukan jalur terpendek antara dua node.
-
Visualisasi Jalur Terpendek
- Tampilkan jalur terpendek secara visual pada graf.
-
Cek Keterhubungan Graf
- Tentukan apakah graf terhubung sepenuhnya atau tidak.
-
Derajat Node
- Hitung jumlah sisi (edge) yang terhubung ke node tertentu.
-
Koefisien Clustering
- Hitung tingkat pengelompokan untuk setiap node.
-
Jalur Terpendek Semua Pasangan
- Hitung semua jalur terpendek antara setiap pasangan node.
-
Diameter Graf
- Tentukan diameter graf, yaitu jarak terpanjang antara dua node terdekat.
graph = Graf()graph.add_node(1)
graph.add_node(2)graph.add_edge(1, 2, weight=4.5)
graph.add_edge(2, 3, weight=2.1)graph.visualize_graph()graph.shortest_path(1, 3)graph.visual_shortest_path(1, 3)graph.is_connected()graph.degree_of_node(1)graph.clustering_coefficient()graph.all_pairs_shortest_path()graph.diameter()Berikut adalah contoh implementasi lengkap:
graph = Graf()
# Menambah node
graph.add_node(1)
graph.add_node(2)
graph.add_node(3)
graph.add_node(4)
graph.add_node(5)
# Menambah edge
graph.add_edge(1, 2, weight=4.5)
graph.add_edge(1, 3, weight=3.2)
graph.add_edge(2, 4, weight=2.7)
graph.add_edge(3, 4, weight=1.8)
graph.add_edge(1, 4, weight=6.7)
graph.add_edge(3, 5, weight=2.7)
# Visualisasi graf
graph.visualize_graph()
# Jalur terpendek
graph.shortest_path(1, 5)
# Visualisasi jalur terpendek
graph.visual_shortest_path(1, 5)
# Metode tambahan
graph.is_connected()
graph.degree_of_node(1)
graph.clustering_coefficient()
graph.all_pairs_shortest_path()
graph.diameter()