Spanning tree (pohon rentang) adalah struktur penting dalam teori graf yang memiliki banyak aplikasi praktis, mulai dari jaringan komputer hingga optimasi transportasi. Dalam sebuah graf tak berarah yang terhubung, sebuah spanning tree adalah subgraf yang mencakup semua simpul (vertex) graf asal, namun tidak mengandung siklus. Dengan kata lain, ia merupakan pohon yang merentang ke seluruh vertex. Karena tidak ada siklus, sebuah spanning tree pada graf dengan n simpul selalu memiliki tepat n1 edge. Kruskal membangun Minimum Spanning Tree (MST) dengan cara menambahkan edge terkecil yang tidak membentuk siklus, menggunakan struktur UnionFind. Prim memulai dari satu simpul dan secara bertahap menambahkan edge terkecil yang menghubungkan vertex yang sudah termasuk ke yang belum. Setiap komponen secara paralel memilih edge teringan yang keluar darinya, kemudian menggabungkan komponen-komponen tersebut. Proses diulang sampai satu komponen tersisa. Jika hanya diperlukan sebuah spanning tree tanpa mempedulikan bobot, DFS atau BFS dapat menghasilkan pohon rentang dengan mudah. Ketika setiap edge memiliki bobot, minimum spanning tree adalah spanning tree dengan total bobot paling kecil. MST sangat berguna dalam: Contoh klasik: graf berikut mempunyai tiga MST dengan total bobot 8. Protokol Spanning Tree Protocol (STP) dikembangkan oleh IEEE 802.1D untuk mencegah looping pada jaringan Ethernet yang memiliki banyak bridge atau switch. Dengan STP, jaringan tetap dapat beroperasi meski terdapat banyak jalur redundan, karena hanya satu jalur yang diaktifkan secara logis. Berikut contoh kode yang menghasilkan sebuah spanning tree menggunakan BFS pada graf tak berarah. Spanning tree merupakan konsep fundamental dalam teori graf yang menghubungkan semua simpul tanpa membentuk siklus. Dengan beragam algoritma dari Kruskal, Prim, hingga BFS/DFS kita dapat menghasilkan spanning tree yang memenuhi kebutuhan khusus, seperti minimisasi bobot atau kecepatan eksekusi. Aplikasi praktisnya meliputi desain jaringan, perencanaan infrastruktur, dan banyak bidang ilmu komputer lainnya. Memahami cara kerja dan pemilihan algoritma yang tepat adalah kunci untuk menyelesaikan masalah optimasi yang melibatkan graf besar.Spanning Tree: Konsep, Algoritma, dan Aplikasinya
Apa Itu Spanning Tree?
Properti Penting
Algoritma Pencarian Spanning Tree
1. Algoritma Kruskal
2. Algoritma Prim
3. Algoritma Borvka (atau Sollin)
4. Algoritma DepthFirst Search (DFS) / BreadthFirst Search (BFS)
function dfsSpanningTree(g, start): stack [start] visited {} treeEdges [] while stack not empty: v stack.pop() if v not in visited: visited.add(v) for each neighbor u of v: if u not in visited: treeEdges.append((v,u)) stack.push(u) return treeEdges Minimum Spanning Tree (MST)
Aplikasi Spanning Tree dalam Jaringan Komputer
Fitur Deskripsi Root Bridge Pemilih utama yang menjadi pusat spanning tree. Port States Port dapat berada dalam status blocking, listening, learning, atau forwarding. BPDU Bridge Protocol Data Unit, paket yang dipertukarkan untuk membangun tree. Rapid STP (RSTP) Versi lebih cepat (IEEE 802.1w) yang mengkonvergensi dalam hitungan milidetik. Spanning Tree dalam Algoritma Lain
Contoh Implementasi Sederhana (JavaScript)
function bfsSpanningTree(adjList, start) { const visited = new Set(); const queue = [start]; const treeEdges = []; while (queue.length) { const v = queue.shift(); visited.add(v); for (const u of adjList[v]) { if (!visited.has(u)) { visited.add(u); treeEdges.push([v, u]); queue.push(u); } } } return treeEdges;}// contoh penggunaanconst graph = { A: ['B','C'], B: ['A','D','E'], C: ['A','F'], D: ['B'], E: ['B','F'], F: ['C','E']};console.log(bfsSpanningTree(graph,'A')); Kesimpulan
