TREE DAN SPANNING TREE Kelompok 5 Anggota Kelompok 5 1 2 Aqilah Kamalia 24010116120015 Elsaday Salsabilla 24010116120025 3 Sherline Vicky Aisyiyah 24010116140046 4 Shafira Meiria Rahmasari 24010116140048 5 Anggun Anisa 24010116130076 POHON (TREE) TREE ________________________ Pohon (Tree) Didefinisikan sebagai graf terhubung yang tidak memiliki sirkuit (sikel). Karena merupakan graf terhubung, maka pohon selalu terdapat jalur (path) yang menghubungkan setiap dua simpul dalam pohon. Teorema Misalkan G = (V,E) adalah graf tak-berarah sederhana dan jumlah simpul n, maka semua pernyataan dibawah ini adalah ekuivalen: 1. 2. 3. 4. 5. G adalah pohon Setiap pasang simpul di dalam G terhubung dengan lintasan tunggal G terhubung dan memiliki m = n-1 buah sisi G tidak mengandung sirkuit dan memiliki m = n-1 buah sisi G tidak mengandung sirkuit dan penambahan satu sisi pada graf akan membuat hanya satu sirkuit 6. G terhubung dan semua sisinya adalah jembatan Terorema diatas dapat dikatakan sebagai definisi lain dari pohon Contoh Pohon “ “ “ “ “ “ Gambar (a) dan (b) merupakan pohon, sedangkan Gambar (c) dan (d) bukan pohon, karena Gambar (c) graphnya tidak terhubung, sedangkan Gambar (d) graphnya memiliki sikel. “ “ SPANNING TREE ________________________ Spanning Tree Diberikan G graf terhubung. Spanning tree dalam G adalah subgraf G yang memuat semua titik dari G dan juga merupakan suatu pohon. CONTOH GRAF Contoh Graf dan Spanning Treenya DAN SPANNING TREENYA METODE MENCARI SPANNING TREE ________________________ Pohon merentang diperoleh dengan memutus sirkuit di dalam graf Cutting Down Method (Metode Pemotongan) Dimulai dengan memilih setiap sikel dalam G dan menghilangkan atau menghapus satu dari garis-garis ini (jika tidak ada sikel, graf G tersebut merupakan spanning tree). Karena kita tidak dapat memutuskan sebuah graf dengan menghapus hanya satu sisi dari suatu sikel, kita masih memiliki graf yang terhubung. Ulangi langkah i ni sampai tidak ada sikel yang tersisa. Contoh Metode Cutting Down: Cutting Down Method 1. 2. 3. Building-up Method (Metode Pembangunan) Pilih satu garis dari G pada setiap saat pemilihan garis tidak membentuk suatu sikel. Ulangi langkah ini sampai semua titik termuat. Contoh Metode Building-up: 1. Building-up Method 3. 2. 4. CENTERS AND BICENTERS ________________________ Centers and Bicenters Ketika membuktikan hasil yang melibatkan pohon, kita sering merasa nyaman untuk me mulai di tengah-tengah dan bergerak keluar, melanjutkan membangun pohon. Ini merupa kan pendekatan yang digunakan oleh Arthur Cayley pada tahun 1870 ketika dia menghitu ng jumlah molekul kimia dengan formua yang diberikan dengan membangunnya langkah demi langkah. Baru-baru ini, konsep pohon seimbang telah digunakan dalam komputasi dimana membangun sebuah pohon sehingga berbagai bagian pohon yang muncul dari setiap titik seimbang, yaitu melibatkan jumlah simpul yang sama. Metode 1 Hapus semua titik dengan derajat satu bersama-sama dengan garis yang incident. Ulangi langkah ini sampai diperoleh satu titik tunggal (center) atau dua titik yang adjacent (bicenter). Tree dengan suatu center disebut tree central dan tree dengan suatu bicenter disebut tree bicentral. METODE 1 Contoh Center: Contoh Center dan Bicenter Contoh Bicenter: COUNTING TREES Counting trees digunakan untuk mencari banyaknya pohon dalam suatu graf berlabel dengan n simpul Teorema Cayley Ada sebanyak nn-2 pohon berlabel dengan n simpul yang beda Bukti : Pembuktian Teorema Cayley ini dapat dilakukan dengan korespondensi satu-ke-satu antara pohon berlabel dengan barisan bilangan bulat positif (Prufer’s sequences) Membangun korespondensi satu-ke-satu antara pohon berlabel dengan n simpul dan barisan (a1, a2, a3, .., an-2), di mana setiap ai adalah salah satu bilangan bulat 1,2,3, .., n (memungkinkan pengulangan). Prufer’s Construction Konstruksi dasar pembuktian dengan korespondensi satu-ke-satu Konstruksi dari pohon berlabel menjadi barisan Langkah 1 Lihat simpul derajat 1 dan pilih satu dengan label terkecil Langkah 2 Lihat simpul yang berdekatan dengan yang baru saja dipilih dan letakkan labelnya di posisi pertama yang tersedia dalam barisan Langkah 3 Hapus simpul yang dipilih pada langkah 1 dan tepi insidennya, meninggalkan pohon yang lebih kecil. Proses 1 Ulangi Langkah 1-3 untuk pohon yang tersisa, terus sampai hanya ada dua simpul yang tersisa. Pada saat ini terjadi, barisan Prufer yang diperlukan akan dibangun Contoh Proses 1: Konstruksi dari pohon berlabel menjadi barisan Konstruksi dari barisan menjadi pohon berlabel Langkah 1 Gambar n simpul, beri label dari 1 ke n dan buat daftar angka dari 1 hingga n Langkah 2 Tentukan bilangan terkecil yang ada dalam daftar tetapi tidak dalam barisan Prufer, dan juga tentukan bilangan pertama dalam barisan; kemudian tambahkan sisi yang menggabungkan simpul-simpul tersebut dalam gambar Langkah 3 Hapus bilangan pertama pada langkah 2 dari daftar dan bilangan lainnya pada langkah 2 dari barisan, meninggalkan daftar dan urutan yang lebih sedi kit Proses 2 Ulangi Langkah 2 dan 3 untuk daftar bilagan dan barisan bilangan yang tersisa, terus sampai hanya ada dua label yang tersisa dalam daftar. Kemudian, gabungkan dengan simpul-simpul pada gambar sesuai dengan dua label sisanya Contoh Proses 2: Konstruksi dari barisan menjadi pohon berlabel Diketahui barisan (2, 2, 1, 5, 5) , akan dicari pohon berlabel yang bersesuaian dengannya. Sediakan lebih dahulu daftar {1, 2, 3, 4, 5, 6, 7 } , sebab 7 – 2 = 5. 1. Barisan: (2, 2, 1, 5, 5) Daftar: {1, 2, 3, 4, 5, 6, 7 } 2. Barisan: (2, 1, 5, 5) Daftar: {1, 2, 4, 5, 6, 7} 3. Barisan: (1, 5, 5) Daftar: {1, 2, 5, 6, 7 } 4. Barisan: (5, 5) Daftar: {1, 5, 6, 7} 5. Barisan: (5) Daftar: {5, 6, 7 } 6. Barisan: (-) Daftar: {5, 7} Dengan adanya konstruksi korespondensi satu-ke-satu tersebut, langsung dapat dilihat bahwa, bila dipunyai pohon berlabel maka dapat dibentuk barisannya. Dan apabila dipunyai barisan (a1, a2, a3, …, an-2) maka dapatlah dibentuk pohon ber- labelnya. Buktinya langsung diperoleh dari barisan. Barisan (a1, a2, a3, …, an-2) memuat (n-2) suku dan tiap-tiap suku mempunyai kemungkinan untuk mengambil nilai 1, 2, 3, 4, 5, ...., n. Sehingga jumlah total kemungkinan pohon berlabelnya ada nn-2 buah SEARCHING TREE ________________________ Penulusuran atau pencarian pohon (tree) dapat dilakukan dengan dua algoritma yaitu algoritma BFS (Breadth – First Search) dan algoritma DFS (Depth – First Search). Depth-First Search (Pencarian Mendalam Pertama) Pada DFS, proses pencarian akan dilaksanakan pada semua anakny a sebelum dilakukan pencarian ke simpul – simpul yang selevel. Penc arian dimulai dari simpul akar ke level yang lebih tinggi. Proses ini diul angi terus hingga ditemukannya solusi. Langkah 1 Tentukan simpul awal. Depth First Search (DFS) Langkah 2 Ambil simpul dari awal antrian, lalu cek apakah simpul m erupakan solusi Langkah 3 Jika simpul merupakan solusi, pencarian selesai dan hasi l dikembalikan. Langkah 4 Jika simpul bukan solusi maka ambil simpul dibawahnya dan ulangi langkah kedua. Langkah 5 Jika antrian kosong dan tidak ditemukan solusi, maka ber alih menggunakan backtracking (pencarian akan dilakukan hingga tid ak ada simpul yang tersisapada jalur tersebut). Gambar berikut ini menjelaskan bagaimana algoritma DFS. Breadth-First Search (Pencarian Melebar Pertama) Pada metode BFS, semua simpul pada level n akan dikunjungi terlebi h dahulu sebelum mengunjungi simpul – simpul pada level n+1. Penc arian dimulai dari simpul awal terus ke level ke-1 dari kiri ke kanan, ke mudian berpindah ke level berikutnya demikian pula dari kiri ke kanan sampai ditemukannya solusi. Breadth First Search (BFS) Langkah – langkah algoritma BFS Langkah 1 Masukkan simpul ujung (akar) ke dalam antrian. Langkah 2 Ambil simpul dari awal antrian, lalu cek apakah simpul m erupakan solusi Breadth First Search (BFS) Langkah 3 Jika simpul merupakan solusi, pencarian selesai dan hasi l dikembalikan. Langkah 4 Jika simpul bukan solusi masukkan seluruh simpul yang bertetangga dengan simpul tersebut (simpul anak) ke dalam antrian. Langkah 5 Jika antrian kosong dan setiap simpul sudah dicek, penc arian selesai dan mengembalikan hasil solusi tidak ditemukan. Langkah 6 Ulangi pecarian dari langkah kedua. Gambar berikut ini menjelaskan bagaimana algoritma BFS Pohon Rentang Minimum (minimum spanning tree) ________________________ Jika G adalah graf berbobot, maka bobot pohon rentang T dari G dide finisikan sebagai jumlah bobot semua sisi di T. Semua pohon rentang di G, pohon rentang yang berbobot minimum dinamakan pohon renta ng minimum (minimum spanning tree). Jenis ini mempunyai terapan y ang luas. CONTOH • Graph • Pohon merentang minimum Algoritma Greedy untuk membangun Pohon Merentang Minimum Ada beberapa algoritma greedy yang dapat digunakan untuk menghasilkan pohon merentang mini mum, tiga algoritma di antaranya, yang menghasilkan pohon merentang minimum, yaitu : • Algoritma pertama memulai dengan himpunan sisi dari pohon yang kosong, kemudian menamb ahkan satu per satu sisi dari himpunan sisi graf E secara menaik (dari sisi yang berbobot paling kecil). Sisi e ditambahkan ke selama tidak terbentuk sirkuit dengan sisi-sisi yang telah ditamba hkan sebelumnya. Jika terbentuk sirkuit, maka sisi yang baru ditambahkan tersebut dihapus da n proses dilanjutkan ke sisi berbobot terkecil berikutnya sampai semua sisi telah diproses. Pen dekatan semacam ini disebut Algoritma Kruskal. Cara 1 • Algoritma greedy lainnya yang termasuk sederhana adalah algoritma yang mirip dengan Algorit ma Djikstra dalam pencarian rute terpendek, tetapi lebih mudah. Algoritma ini memulai dengan salah satu simpul s dan mencoba secara “greedy” untuk menghasilkan pohon dari v ke luar. Pa da setiap tahap ditambahkan satu simpul ke himpunan simpul S (yang sekarang berisi s) yang t erhubung ke simpul s dengan bobot terkecil dan memasukkan sisi tersebut ke dalam pohon me rentang yang dibuat. Algoritma ini disebut Algoritma Prim. • Algoritma yang ketiga adalah algoritma greedy yang seperti proses kebalikan dari algoritma Kr uskal. Secara spesifik, algoritma in dimulai dari graf G = (V,E) yang lengkap kemudian mengha pus satu per satu sisi dalam E secara menurun (mulai dari yang terbesar). Sisi e dihapus sela ma graf tidak menjadi terputus/tidak terhubung. Jika graf menjadi terputus, sisi e tidak dihapus, dan proses dilanjutkan ke sisi berbobot terbesar berikutnya hingga semua sisi selesai diproses. Algoritma ini tidak dinamai dengan nama tertentu, tetapi umumnya disebut sebagai Algoritma Reverse-Delete. Algoritma Prim untuk Pohon Jumlah Minimal Dengan algoritma ini akan ditemukan pohon jumlah minimal (jika ada) untuk seb uah graph berbobot G dengan n titik. Dalam algoritma ini S adalah himpunan titik dan T adalah himpunan sisi. Cara 1 Langkah 1 (mulai). Pilih titik U, dan misalkan S = {U} serta T = { } Langkah 2 (pemeriksaan untuk menyelesaikan). Jika S memuat semua titik G, ke mudian berhenti; sisi di T dan titik di S membentuk pohon jumlah minimal untuk G Langkah 3 (pilih sisi berikutnya). Jika S tidak memuat semua titik G, tentuka n sisi-sisi yang memiliki satu titik di S dan titik lainnya tidak di S. Jika tidak ada sisi seperti itu, G tidak terhubung dan tidak memiliki pohon jumlah minimal. Jika tidak demikian, pilih satu sisi seperti itu yang berbobot terkecil (rangkaian dapat diputuskan secara sembarang), dan tempatkan di T serta titiknya di S (salah satunya sudah di S). Kembalilah ke langkah 2. Pada langkah 3 algoritma Prim pemilihan suatu sisi dengan satu titik di S dan titik lain tidak di S menjamin tidak adanya sikel yang terbentuk dengan pengumpulan sisi-sisi di T, jadi pada akhir setiap iterasi langkah 3, sisi di T dan titik di S membentuk pohon. Penyelesaian dengan Algoritma Prim • Graph 1 • Pohon merentang minimum 10 30 45 4 2 50 40 35 55 2 45 3 35 25 5 15 6 10 4 25 20 1 55 20 5 15 6 3 Algoritma Kruskal untuk Pohon Jumlah Minimal Algoritma ini akan mendapatkan pohon jumlah minimal, jika ada, untuk graph berbobot G yang memiliki n titik, dengan n > 2. Dalam algoritma ini, S adalah himpunan titik dan T adalah himpunan sisi. Cara 2 Langkah 1 (mulai). Jika tidak ada sisi, G tidak terhubung, dan karena itu tidak memiliki pohon jumlah minimal. Jika tidak demikian, ambil sebuah sisi dengan bobot terkecil (rangkaian dapat diputuskan secara sembarang). Tempatkan sisi itu di T dan titiknya di S. Langkah 2 (pemeriksaan untuk penyelesaian). Jika T memuat n - 1 sisi, maka berhentilah; sisi-sisi di T dan titik-titik di S membentuk pohon jumlah minimal. Jika tidak demikian lanjutkan ke langkah 3. Langkah 3 (ambil sisi berikutnya). Tentukan sisi-sisi berbobot terkecil yang tidak membentuk sikel dengan sembarang sisi yang ada di T. Jika tidak ada sisi seperti itu, G tidak terhubung dan tidak memiliki pohon jumlah minimal. Jika tidak demikian, pilih satu sisi sejenis itu (rangkaian dapat diputus secara sembarang), dan tempatkan sisi itu di T dan titiknya di S. Kembalilah ke langkah 2. Penyelesaian dengan Algoritma Kruskal • Graph 1 • Pohon merentang minimum 10 30 45 4 2 50 40 35 55 2 45 3 35 25 5 15 6 10 4 25 20 1 55 20 5 15 6 3 Perbandingan Algoritma Prim dan Kruskal • Algoritma Prim lebih efisien dibanding algoritma Kru skal saat graf yang diberikan memiliki banyak sisi de ngan simpul yang sedikit (graf lengkap). • Algoritma Kruskal lebih efisien dibanding algoritma P rim saat graf yang diberikan memiliki banyak simpul dengan sisi yang sedikit. Thank you