DESAIN DAN ANALISIS STRUKTUR DATA NON LINIER ROOTED TREE DINAMIS (Kata kunci: Graf, Struktur data, tree, LCA, pemrograman dinamis)

dokumen-dokumen yang mirip
Desain dan Analisis Struktur Data Non Linier Rooted Tree Dinamis

PRESENTASI TUGAS AKHIR KI IMPLEMENTASI ALGORITMA PENCARIAN K JALUR SEDERHANA TERPENDEK DALAM GRAF

Desain dan Analisis Algoritma Modifikasi Hungarian untuk Permasalahan Penugasan Dinamis Pada Studi Kasus Permasalahan SPOJ Klasik 12749

Penerapan Teknik Dekomposisi Square Root dan Algoritma Mo s pada Rancangan Algoritma Studi Kasus: SPOJ Klasik Counting Diff-Pairs

STUDI KINERJA WAVELET TREE PADA VARIASI PERMASALAHAN RANGE QUERY

Penerapan Pohon Dalam Heap Sort

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

Preorder Tree Traversal

TUGAS AKHIR KI KARSTEN ARI AGATHON NRP Dosen Pembimbing 1 Victor Hariadi, S.Si., M.Kom.

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

Analisis Algoritma: Anany Levitin, Introduction to Design and Analysis of Algorithm, 3 rd Edition, Pearson Education, Inc.

DESAIN DAN ANALISIS ALGORITMA KOMPUTASI FORMULA KASUS : PERSOALAN SPOJ MOON SAFARI

BAB IV PENGUJIAN DAN ANALISIS

ANALISIS ALGORITMA BINARY SEARCH

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

Tujuan Instruksional

Algoritma dan Struktur Data

Mencari Leluhur Bersama Terkecil pada Pohon

Pohon Indeks Biner atau Pohon Fenwick untuk menyelesaikan persoalan penjumlahan interval

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

BAB I PENDAHULUAN 1.1 Latar Belakang

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Langkah Awal menuju Analisis Kompleksitas Algoritma

Desain dan Analisis Algoritma Pembangkitan Convex Hull 3 Dimensi dan Visualisasinya

Algoritma Pemrograman & Struktur Data

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

IKI 20100: Struktur Data & Algoritma

BAB 2 LANDASAN TEORI

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram)

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram) Ver

B C D E F G H I J K L M N O P Q R S T. Tinaliah, S.Kom POHON BINER

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

BAB VII POHON BINAR POHON

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

PRESENTASI TUGAS AKHIR KI091391

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

JARINGAN UNTUK MERGING

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma dari Algoritma Pembentukan pohon Huffman Code Sederhana

BAB 2 LANDASAN TEORI

Heap Tree dan Kegunaannya dalam Heap Sort

PEMBAHASAN SOAL FINAL BNPCHS 2014

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM)

Design and Analysis Algorithm

Aplikasi Aljabar Vektor dalam Algoritma Page Rank

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

Solusi UTS Stima. Alternatif 1 strategi:

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

Pemanfaatan Algoritma Hybrid Ant Colony Optimization dalam Menyelesaikan Permasalahan Capacitated Minimum Spanning Tree. Tamam Asrori ( )

Perbandingan Algoritma Pencarian Kunci di dalam Himpunan Terurut Melalui Linear Search dan Binary Search

STRUKTUR POHON & KUNJUNGAN POHON BINER

Decrease and Conquer

Algoritma dan Struktur Data. Click to edit Master subtitle style Konsep Tree

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

Pendeteksian Kemacetan Lalu Lintas dengan Compute Unified Device Architecture (CUDA)

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

Tree (Struktur Data) Nisa ul Hafidhoh, MT

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

MILIK UKDW BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Struktur Data. PDE - Struktur Data 1

ALGORITMA-ALGORITMA PARALLEL RANDOM ACCESS MACHINE (PRAM = pea ram)

Pohon Quad untuk Merepresentasikan Gambar

BAB 2 LANDASAN TEORI. Definisi Graf G didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini:

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Graf untuk soal nomor 7

BAB II LANDASAN TEORI

Pemrograman Algoritma Dan Struktur Data

PRESENTASI TUGAS AKHIR KI091391

Pencarian Jalur Terpendek dengan Algoritma Dijkstra

Organisasi Berkas Sekuensial Berindeks

- Tree Adalah graph tak berarah yang terhubung dan tidak memuat cycle. Suatu Tree paling sedikit mengandung satu vertex. Contoh :

BAB II KAJIAN PUSTAKA. Pada bab kajian pustaka berikut ini akan dibahas beberapa materi yang meliputi

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

PERANCANGAN ALGORITMA KETERHUBUNGAN SUATU GRAF DAN PENERAPANNYA DALAM PENGATURAN ARUS LALU LINTAS JALAN RAYA

BAB 2 TINJAUAN PUSTAKA

Kompleksitas Algoritma

Desain dan Analisis Algoritma Pencarian Prediksi Hasil Penjumlahan Beberapa Urutan Berkala dengan Metode Eliminasi Gauss

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Ulang Kaji Konsep Matematika

BAB XII MENCARI DATA MAKSIMUM DAN MINIMUM

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

PENERAPAN ALGORITMA A* PADA PERMASALAHAN OPTIMALISASI PENCARIAN SOLUSI DYNAMIC WATER JUG

Komponen Terhubung dan Jalur Terpendek Algoritma Graf Paralel

BAB 2 LANDASAN TEORI

Cara Kerja B-tree dan Aplikasinya

Variasi Pohon Pencarian Biner Seimbang

BAB I PENDAHULUAN 1.1 Latar Belakang

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

Penerapan Teori Pohon Dalam Kajian Struktur Data

Perbandingan Kompleksitas Algoritma Prim, Algoritma Kruskal, Dan Algoritma Sollin Untuk Menyelesaikan Masalah Minimum Spanning Tree

Pengenalan Trie dan Aplikasinya

Transkripsi:

PRESENTASI TUGAS AKHIR KI0131 DESAIN DAN ANALISIS STRUKTUR DATA NON LINIER ROOTED TREE DINAMIS (Kata kunci: Graf, Struktur data, tree, LCA, pemrograman dinamis) Penyusun Tugas Akhir : Nur Ahmad Wahid (NRP: 1.0.70) Dosen Pembimbing : Arya Yudhi Wijaya, S.Kom., M.Kom. Rully Soelaiman, S.Kom., M.Kom. 18/07/01 Tugas Akhir - KI0131 1

Kerangka Presentasi Pendahuluan Latar Belakang Rangkaian Proses Ilustrasi Permasalahan Uji Coba dan Analisis Batasan Masalah Kesimpulan Tujuan 18/07/01 Tugas Akhir - KI0131

Latar Belakang Rooted tree yang merupakan graf berarah memiliki tepat 1 vertex sebagai root dan semua edge yang terhubung pada tree diarahkan berlawanan dari root Banyak permasalahan-permasalahan yang dapat ditemukan dalam pengimplementasian struktur data rooted tree. Pada setiap vertex yang terhubung pada tree memiliki bobot masing-masing. Bagaimana menarik informasi jumlah bobot dari vertex-vertex yang terhubung pada suatu subtree secara tepat dan efisien dengan root yang dapat berubah-ubah. 18/07/01 Tugas Akhir - KI0131 3

Ilustrasi Permasalahan 18/07/01 Tugas Akhir - KI0131

Ilustrasi Permasalahan 18/07/01 Tugas Akhir - KI0131

Ilustrasi Permasalahan http://www.spoj.com/problems/drtree Diberikan masukan struktur rooted tree dengan banyak vertex N (N ) Inisialiasi root awal pada vertex 1 Bobot sebuah vertex i w[i] (1 w[i] ) Terdapat Q operasi (Q ) : R i : menjadikan vertex i sebagai root S i : mengembalikan nilai berupa jumlah bobot semua vertex yang terdapat pada subtree dengan i sebagai rootnya 18/07/01 Tugas Akhir - KI0131 6

Batasan Masalah Input dan output program menyesuaikan dengan Soal SPOJ Klasik 13 beserta batasan-batasan lainnya Bahasa pemrograman yang digunakan adalah C++ 18/07/01 Tugas Akhir - KI0131 7

Tujuan Menganalisis dan merancang algoritma yang efisien untuk menyelesaikan masalah penarikan informasi dari struktur data rooted tree dinamis. Mengimplementasikan struktur data dan algoritma yang telah terancang untuk menyelesaikan masalah penarikan informasi dari struktur data rooted tree dinamis secara efisien. Menganalisis kompleksitas waktu dan ruang (space) algoritma yang diterapkan pada struktur data yang telah dirancang. 18/07/01 Tugas Akhir - KI0131 8

Kerangka Presentasi Pendahuluan Rangkaian Proses Uji Coba dan Analisis Permasalahan LCA Kasus LCA pada rooted tree Penyelesaian LCA Kesimpulan 18/07/01 Tugas Akhir - KI0131

Permasalahan LCA Lowest Common Ancestor (LCA) adalah sebuah konsep dalam teori graf dan ilmu komputer. Misalkan T adalah rooted tree dengan n vertex. Lowest Common Ancestor antara dua vertex v dan w didefinisikan sebagai vertex terendah di T yang memiliki baik v dan w sebagai keturunan. Dengan memanfaatkan konsep ini, maka rooted tree pada real memory tidak perlu berubah struktur dengan dilakukannya proses inisialiasi jumlah bobot vertex pada setiap subtree 18/07/01 Tugas Akhir - KI0131

Kasus LCA pada rooted tree Subtree dengan root vertex 1 3 LCA(, 1) Root dari rooted tree saat ini adalah r, dan vertex yang ditanyakan jumlahan subtree-nya adalah u maka 6 7 8 LCA(u, r) u, jawabannya adalah sum[u]. 13 11 1 1 1 16 current root 18/07/01 Tugas Akhir - KI0131 11

Kasus LCA pada rooted tree 1 LCA(3, 1) 3 6 7 8 13 11 1 Subtree dengan root vertex 3 Root dari rooted tree saat ini adalah r, dan vertex yang ditanyakan jumlahan subtree-nya adalah u maka LCA(u, r) adalah u, maka cara hitungnya adalah sum[1] dikurangi sum[v], yang mana v adalah salah satu child dari u yang mengarah ke r. 16 1 current root 1 Pengecualian jika u = r, maka jawabannya adalah sum[1] 18/07/01 Tugas Akhir - KI0131 1

Kerangka Presentasi Permasalahan LCA Rangkaian Proses Kasus LCA pada rooted tree Penyelesaian LCA 18/07/01 Tugas Akhir - KI0131 13

Kerangka Presentasi Algoritma Path Doubling Penyelesaian LCA Reduksi LCA ke RMQ Algoritma Sparse Table Algoritma Khusus Permasalahan RMQ Terbatas 18/07/01 Tugas Akhir - KI0131 1

Algoritma Path Doubling 1 Mengkondisikan pointer vertex x sejajar (level sama) dengan vertex y 3 Kedua pointer pada kedua vertex bergerak menuju root secara paralel hingga mencapai vertex yang sama Vertex y 11 Kompleksitas O(N) 6 Vertex x 7 18/07/01 Tugas Akhir - KI0131 1

Algoritma Path Doubling 1 3 Menggunakan teknik Meta-Binary Search 3 ancestor yang dituju Kompleksitas : Preprocessing O(N log N) Query O(log N) 6 dp i [j] = 1 7 parent[i], &j = 0 &dp dp i [j 1] [j 1], &j > 8 0 Vertex permulaan 0 18/07/01 Tugas Akhir - KI0131 16

Reduksi LCA ke RMQ Diberikan suatu larik A sepanjang N yang berisi bilangan. Indeks i dan j berada diantara 1 dan N, maka query RMQ A (i, j) mengembalikan indeks dari larik A yang menyimpan nilai terkecil pada sublarik A[i& &j] RMQ A (, 7) = A[0] A[1] A[] A[3] A[] A[] A[6] A[7] A[8] A[] 3 6 1 7 8 7 1 18/07/01 Tugas Akhir - KI0131 17

1 0 Reduksi LCA ke RMQ 1 6 7 3 3 Inisialisasi indeks BFS Mengubah representasi rooted tree menjadi Euler Tour Representation (ETS) 6 11 11 1 7 8 8 1 13 Larik Euler, E[1,, n 1]& Larik Level, L[1,, n 1] Larik Representatif,R[1,, n]& 13 1 1 1 1 16 18/07/01 Tugas Akhir - KI0131 18

Kerangka Presentasi Pendahuluan Uji Coba SPOJ Rangkaian Proses Uji Coba dan Analisis Uji Coba Kebenaran Kasus Kecil Uji Coba Kinerja Kesimpulan Analisis Kompleksitas 18/07/01 Tugas Akhir - KI0131 1

Uji Coba SPOJ 18/07/01 Tugas Akhir - KI0131 0

Uji Coba SPOJ Algoritma Waktu eksekusi rata-rata memori Path Doubling 0. detik 17 Megabyte Sparse Table 0.0 detik 30 Megabyte < O N, O 1 > untuk permasalahan RMQ terbatas 0. detik 1 Megabyte 18/07/01 Tugas Akhir - KI0131 1

Uji Coba Kebenaran Kasus Kecil Menguji kebenaran keluaran program Menguji 3 kasus LCA (Jika root dari rooted tree saat ini adalah r, dan vertex yang ditanyakan jumlahan subtree-nya adalah u) : 1. Jika u sama dengan r, maka cara hitungnya adalah sum[1] (sama dengan total bobot semua vertex).. LCA(u, r) adalah u, maka cara hitungnya adalah sum[1] dikurangi sum[v], yang mana v adalah salah satu child dari u yang mengarah ke r. 3. LCA(u, r) bukan u, jawabannya adalah sum[u]. 18/07/01 Tugas Akhir - KI0131

Uji Coba Kebenaran Kasus Kecil Masukan rooted tree 16 1 3 6 7 8 11 1 13 1 1 16 1 1 1 3 3 3 6 6 8 13 13 1 18/07/01 Tugas Akhir - KI0131 3

Uji Coba Kebenaran Kasus Kecil 136 1 u = r 8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query 3 88 6 7 7 66 8 3 Kasus 1 : sum 1 = 136 11 11 8 13 S 1 136 Keluaran program 1 1 30 1 1 1 16 16 (S 1, R 1) 18/07/01 Tugas Akhir - KI0131

Uji Coba Kebenaran Kasus Kecil 136 1 r LCA(u, r) u 8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query 3 88 6 7 7 66 8 3 u Kasus 3 : sum 3 = 88 11 11 8 13 S 3 88 Keluaran program 1 1 30 1 1 1 16 16 (S 3, R 1) 18/07/01 Tugas Akhir - KI0131

Uji Coba Kebenaran Kasus Kecil 136 1 r LCA(u, r) u 8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query 3 88 6 7 7 66 8 3 Kasus 3 : sum 16 = 16 11 11 8 13 S 16 16 Keluaran program 1 1 30 1 1 1 16 16 u (S 16, R 1) 18/07/01 Tugas Akhir - KI0131 6

8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query Kasus 1 : sum 1 = 136 S 1 136 Uji Coba Kebenaran Kasus Kecil 11 Keluaran program 11 3 70 3 6 7 8 7 66 1 3 1 1 6 30 7 8 1 136 7 13 1 788 u = r 8 1 6 3 8 1 136 13 1 1 1 16 16 11 11 116 1 16 (S 1, R 1) 18/07/01 Tugas Akhir - KI0131 7

8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query Kasus : sum 1 sum 8 = 136 66 = 70 11 S 3 70 Keluaran program Uji Coba Kebenaran Kasus Kecil 11 70 3 6 7 7 8 66 1 3 1 11 16 11 1 116 (S 3, R 1) 18/07/01 Tugas Akhir - KI0131 8 3 1 6 30 8 1 7 136 7 r 13 1 78 88 8 1 6 3 8 1 136 LCA(u, r) = u 13 u 1 1 1 16 16

8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query Kasus : sum 1 sum 1 = 136 30 = 6 11 S 13 6 Keluaran program Uji Coba Kebenaran Kasus Kecil 11 6 78 7 66 1 3 1 11 11 116 1 16 (S 13, R 1) 18/07/01 Tugas Akhir - KI0131 3 1 6 30 8 1 7 136 70 7 r 13 1 78 88 3 8 1 6 8 3 u 1 136 13 1 1 1 16 LCA(u, r) = u 16

8 S 1 S 3 S 16 R 1 S 1 S 3 S 13 S 1 Masukan query Kasus : sum 1 sum 3 = 136 88 = 8 11 S 1 8 Keluaran program Uji Coba Kebenaran Kasus Kecil 11 70 3 6 7 8 7 66 1 3 1 11 11 116 1 16 (S 1, R 1) 18/07/01 Tugas Akhir - KI0131 30 3 1 6 30 7 8 1 136 7 r 13 1 788 8 1 6 3 8 1 u 136 13 LCA(u, 1 r) = u 1 1 16 16

Uji Coba Kinerja Percobaan Jumlah vertex Waktu (milidetik) < O N, (1) > Sparse Table Path Doubling 1 000 1000 8 3 3 0000 6 000 1 6 30000 6 18 6 3000 11 7 0000 13 7 11 8 000 11 33 13 0000 13 1 000 18 8 18 11 60000 18 1 1 6000 0 3 13 70000 3 1 7000 7 7 1 80000 3 66 7 16 8000 73 31 17 0000 3 7 3 18 000 36 80 3 1 0000 37 7 3 18/07/01 Tugas Akhir - KI0131 31

Uji Coba Kinerja Percobaan Jumlah vertex Waktu (milidetik) < O N, (1) > Sparse Table Path Doubling 1 000 78 67 7 1000 71 71 76 3 0000 77 78 0 000 76 78 86 30000 80 7 6 3000 87 7 8 7 0000 8 78 0 8 000 8 77 1 0000 83 1 000 0 80 1 11 60000 88 8 1 6000 87 80 3 13 70000 88 7 1 7000 0 78 8 1 80000 6 8 16 8000 88 8 0 17 0000 8 1 18 000 3 8 1 0000 0 3 18/07/01 Tugas Akhir - KI0131 3

Analisis Kompleksitas Program dengan algoritma Waktu Kompleksitas Ruang Path Doubling < O NlogN, O(logN) > O(NlogN) Sparse Table < O NlogN, O(1) > O(NlogN) Khusus pada Permasalahan RMQ Terbatas < O N, O(1) > O(N) 18/07/01 Tugas Akhir - KI0131 33

Kesimpulan Dengan menggunakan tiga macam pendekatan dapat menyelesaikan masalah penarikan data pada struktur data rooted tree dinamis. Algoritma Path Doubling membutuhkan memori lebih sedikit dari yang dibutuhkan oleh algoritma Sparse Table, sebaliknya waktu eksekusinya lebih lambat (sesuai uji coba situs penilaian daring SPOJ walaupun pada uji coba kinerja, preprocessing Sparse Table lebih lambat). Pendekatan algoritma dengan kompleksitas < O N, O(1) > pada permasalahan RMQ terbatas lebih unggul dari keduanya baik dari aspek kebutuhan memori maupun aspek kecepatan eksekusi namun implementasinya lebih kompleks. 18/07/01 Tugas Akhir - KI0131 3

Kesimpulan Lama waktu eksekusi preprocessing ketiga pendekatan dipengaruhi oleh banyaknya vertex secara linier baik yang memiliki kompleksitas O(N) maupun O(Nlog(N)) (sesuai dengan uji coba kinerja dengan masukan banyak vertex sampai batas permasalahan). Lama waktu eksekusi operasi (query dan changeroot) ketiga pendekatan tidak dipengaruhi oleh banyaknya vertex (konstan) baik yang memiliki kompleksitas O(1) maupun O(log(N)) (sesuai dengan uji coba kinerja dengan masukan banyak vertex sampai batas permasalahan). Program dengan menggunakan algoritma khusus pada permasalahan RMQ terbatas unggul di kedua aspek, baik kompleksitas waktu maupun ruang 18/07/01 Tugas Akhir - KI0131 3

Saran Dibuat lebih dinamis lagi dengan ditambahnya berbagai macam operasi seperti penambahan nilai bobot dengan mempertahankan kompleksitas waktu. 18/07/01 Tugas Akhir - KI0131 36

TERIMA KASIH 18/07/01 Tugas Akhir - KI0131 37

Algoritma Sparse Table A[0] A[1] A[] A[3] A[] A[] A[6] A[7] A[8] A[] 3 6 1 7 8 7 1 M[0][0] = 0 M[0][1] = 1 M[0][] = 1 Kompleksitas preprocessing : O(N&logN) M[0][3] = M i [j] = M i [j 1], &A M i j 1 < A[M[i + j 1 ][j 1]] M[i + j 1 ][j 1], &otherwise 18/07/01 Tugas Akhir - KI0131 38

Algoritma Sparse Table i j A[0] k elements k elements A[N] k& = & (int)&log(j& &i& + &1), M i [j] = M[j k + 1][k], M i [k], &A M i k < A[M[j k + 1][k]] &otherwise Kompleksitas query : O(1) 18/07/01 Tugas Akhir - KI0131 3

Algoritma Sparse Table Euler Tour Representation 0 1 1 11 1 6 0.... v LCA(u, r) sekaligus u Root dari rooted tree saat ini adalah r, dan vertex yang ditanyakan jumlahan subtree-nya adalah u maka LCA(u, r) adalah u, maka cara hitungnya adalah sum[1] dikurangi sum[v], yang mana v adalah salah satu child dari u yang mengarah ke r. 18/07/01 Tugas Akhir - KI0131 0

Algoritma Khusus Permasalahan RMQ Terbatas Ide dasar sama seperti Sparse Table yang menggunakan teknik table-lookup dengan melakukan preprocessing menghasilkan sublarik kecil. Menghilangkan faktor log pada algoritma Sparse Table Memanfaatkan properti khusus yang dimiliki larik hasil reduksi dari LCA, yaitu ±1 terbatas 18/07/01 Tugas Akhir - KI0131 1

Algoritma Khusus Permasalahan RMQ Terbatas Membagi larik menjadi blok-blok sebanyak log&(n) Menyimpan elemen minimum di setiap blok n log&(n) yang berukuran Preprocessing dengan algoritma Sparse Table, n Kompleksitas : log n = O n log n = log(n) log n log n O(n) L n log&(n) blocks minb[0] minb[i] minb[ n ] log&(n) log(n) 18/07/01 Tugas Akhir - KI0131

Algoritma Khusus Permasalahan RMQ Terbatas log(n) i j 1 3 Cara menghitung RMQ : 1. Menghitung minimum elemen dari i sampai akhir dari bloknya.. Menghitung minimum elemen yang terdapat pada blok antara blok yang terdapat i di dalamnya dan blok yang terdapat j di dalamnya. 3. Menghitung minimum elemen dari elemen awal sampai j pada bloknya. Hasil dari ketiga proses hitung tadi, diambil yang minimum 18/07/01 Tugas Akhir - KI0131 3

Algoritma Khusus Permasalahan RMQ Terbatas Preprocessing semua blok dengan algoritma sparse table Setiap blok : log&(n) log n log = O log n log log n Semua blok ( n ) : O(n log&(log n )) log&(n) Dengan memanfaatkan larik level (L[1,, n 1]) yang memiliki properti ±1, semua blok dinormalisasi 18/07/01 Tugas Akhir - KI0131

Algoritma Khusus Permasalahan RMQ Terbatas Dengan memanfaatkan larik level (L[1,, n 1]) yang memiliki properti ±1, semua blok dinormalisasi n X 6 7 6 6 Y 0 1 3 1 0 1 1 +1 +1 +1-1 -1-1 +1 +1-1 1 log n 1 = O( n). 18/07/01 Tugas Akhir - KI0131

Algoritma Khusus Permasalahan RMQ Terbatas Dengan memanfaatkan larik level (L[1,, n 1]) yang memiliki properti ±1, semua blok dinormalisasi Blok ke - 1 3 L = 0 1 1 3 3 1 1 0 B = 0 1 1 0 1 1 0 1 0 0 1 0 0 3 3 18/07/01 Tugas Akhir - KI0131 6

Algoritma Khusus Permasalahan RMQ Terbatas Dengan memanfaatkan larik level (L[1,, n 1]) yang memiliki properti ±1, semua blok dinormalisasi Membuat tabel dengan ukuran O( n) Menggunakan algoritma trivial (O(n )) untuk menghitung RMQ Ukuran blok : log&(n), O n log n = O(n) 18/07/01 Tugas Akhir - KI0131 7