Pengaplikasian Divide and Conquer dalam Algoritma...

6
Pengaplikasian Divide and Conquer dalam Algoritma Penggambaran Graf Aditya Putra Santosa - 13517013 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia [email protected] Abstrak —Seiring dengan meningkatnya popularitas dari Big Data dikarenakan Industrial Revolution 4.0 , jumlah data yang ada menjadi lebih banyak dan lebih komplek dari sebelumnya. Untuk memudahkan memahami data tersebut, perlulah dilakukan visualisasi data. Salah satu teknik dari visualisasi data adalah dengan memodelkannya sebagai graf. Makalah ini akan membahas salah satu pendekatan penggambaran graf yaitu Force-Directed Algorithm yang akan dioptimasi dengan teknik Divide and Conquer yaitu dengan Barnes-Hut Algorithm . Keywords—graf; divide and conquer; penggambaran graf; barnes hut I. INTRODUCTION Seiring dengan berkembangnya Big Data, kebutuhan akan visualisasi data juga akan meningkat. Hal ini dikarenakan meningkatnya kompleksitas data yang didapat dan semakin kompleks suatu data maka akan semakin susah jika kita mencoba untuk mengerti data tersebut hanya dengan membaca isinya saja tanpa merubahnya menjadi hal lain yang mudah dimengerti. Visualisasi data adalah suatu proses dimana kita melakukan transformasi fitur-fitur yang ada pada data agar lebih mudah dimengerti ataupun dipahami. Terdapat banyak cara untuk melakukan visualisasi data, seperti histogram, scatter plot, correlation matrix, connected graph, dan lainnya. Dalam makalah ini, akan dibahas mengenai komponen visualisasi data menggunakkan graf. Contoh dari penggunaan graf untuk visualisasi data ada pada data peta. Dengan membuat representasi graf dari peta, kita bisa melakukan berbagai hal seperti mencari lintasan terpendek, mencari siklus, mencari lintasan yang melalui semua tempat, dan lainnya. Untuk bisa melakukan visualisasi tersebut, terdapat dua komponen utama yang harus bisa kita lakukan yaitu mengubah data menjadi graf, dan menggambar graf tersebut. Fokus utama dari makalah ini ada pada komponen yang kedua yaitu menggambar graf yang dihasilkan dari data. Terdapat berbagai macam algoritma untuk menggambar graf, seperti force-based layout, spectral layout, orthogonal layout, tree layout, layered graph method, arc diagrams, dan lainnya. Algoritma yang digunakan pada makalah ini adalah Force-based layout atau Force-directed algorithm. Umumnya Force-directed algorithm memiliki kompleksitas sebesar tapi jika diterapkan metode Divide and Conquer yaitu (n ) O 2 dengan menggunakkan Barnes-Hut algorithm, kita bisa menurunkan kompleksitasnya menjadi . (n log n) O II. GRAF, DIVIDE AND CONQUER A. Graf Graf dapat kita definisikan sebagai tuple (V, E) dimana V menandakan set simpul yang ukurannya tidak kosong dan E menandakan set sisi yang menghubungkan sepasang simpul [1]. Kita bisa mengatakan bahwa dua simpul pada V terhubung jika dan hanya jika terdapat setidaknya satu sisi pada E yang menghubungkan kedua simpul tersebut. Berdasarkan keterhubungan antara simpulnya, kita bisa membagi graf menjadi dua yaitu terhubung dan tak-terhubung. Suatu graf bisa dikatakan terhubung jika terdapat suatu jalan untuk setiap pasang simpul pada graf tersebut. Jika ada suatu pasang simpul yang tidak memiliki jalan yang menghubungkan mereka, maka graf tersebut dikatakan tak-terhubung. Berdasarkan properti sisinya, graf dapat dibedakan menjadi graf berarah dan graf tak-berarah. Suatu graf dikatakan berarah jika suatu sisi S pada E hanya bisa dilalui dari suatu simpul ke simpul lainnya tapi tidak sebaliknya, kecuali jika ada sisi lain yang pangkalnya di simpul lain itu. Selain itu dapat dibedakan juga menjadi graf berbobot dan tak-berbobot. Graf berbobot adalah graf yang setiap sisinya memiliki suatu nilai / bobot. Dalam makalah ini, graf yang akan digunakan adalah graf tak-berbobot, tak-berarah dan bisa terhubung ataupun Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

Transcript of Pengaplikasian Divide and Conquer dalam Algoritma...

Pengaplikasian Divide and Conquer dalam Algoritma Penggambaran Graf

Aditya Putra Santosa - 13517013 Program Studi Teknik Informatika

Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia

[email protected]

Abstrak—Seiring dengan meningkatnya popularitas dari Big Data dikarenakan Industrial Revolution 4.0, jumlah data yang ada menjadi lebih banyak dan lebih komplek dari sebelumnya. Untuk memudahkan memahami data tersebut, perlulah dilakukan visualisasi data. Salah satu teknik dari visualisasi data adalah dengan memodelkannya sebagai graf. Makalah ini akan membahas salah satu pendekatan penggambaran graf yaitu Force-Directed Algorithm yang akan dioptimasi dengan teknik Divide and Conquer yaitu dengan Barnes-Hut Algorithm.

Keywords—graf; divide and conquer; penggambaran graf; barnes hut

I. INTRODUCTION

Seiring dengan berkembangnya Big Data, kebutuhan akan visualisasi data juga akan meningkat. Hal ini dikarenakan meningkatnya kompleksitas data yang didapat dan semakin kompleks suatu data maka akan semakin susah jika kita mencoba untuk mengerti data tersebut hanya dengan membaca isinya saja tanpa merubahnya menjadi hal lain yang mudah dimengerti. Visualisasi data adalah suatu proses dimana kita melakukan transformasi fitur-fitur yang ada pada data agar lebih mudah dimengerti ataupun dipahami. Terdapat banyak cara untuk melakukan visualisasi data, seperti histogram, scatter plot, correlation matrix, connected graph, dan lainnya.

Dalam makalah ini, akan dibahas mengenai komponen visualisasi data menggunakkan graf. Contoh dari penggunaan graf untuk visualisasi data ada pada data peta. Dengan membuat representasi graf dari peta, kita bisa melakukan berbagai hal seperti mencari lintasan terpendek, mencari siklus, mencari lintasan yang melalui semua tempat, dan lainnya. Untuk bisa melakukan visualisasi tersebut, terdapat dua komponen utama yang harus bisa kita lakukan yaitu mengubah data menjadi graf, dan menggambar graf tersebut. Fokus utama dari makalah ini ada pada komponen yang kedua yaitu menggambar graf yang dihasilkan dari data.

Terdapat berbagai macam algoritma untuk menggambar graf, seperti force-based layout, spectral layout, orthogonal layout, tree layout, layered graph method, arc diagrams, dan lainnya. Algoritma yang digunakan pada makalah ini adalah Force-based layout atau Force-directed algorithm. Umumnya Force-directed algorithm memiliki kompleksitas sebesar

tapi jika diterapkan metode Divide and Conquer yaitu(n )O 2 dengan menggunakkan Barnes-Hut algorithm, kita bisa menurunkan kompleksitasnya menjadi .(n log n)O

II. GRAF, DIVIDE AND CONQUER

A. Graf Graf dapat kita definisikan sebagai tuple (V, E) dimana V

menandakan set simpul yang ukurannya tidak kosong dan E menandakan set sisi yang menghubungkan sepasang simpul [1]. Kita bisa mengatakan bahwa dua simpul pada V terhubung jika dan hanya jika terdapat setidaknya satu sisi pada E yang menghubungkan kedua simpul tersebut.

Berdasarkan keterhubungan antara simpulnya, kita bisa membagi graf menjadi dua yaitu terhubung dan tak-terhubung. Suatu graf bisa dikatakan terhubung jika terdapat suatu jalan untuk setiap pasang simpul pada graf tersebut. Jika ada suatu pasang simpul yang tidak memiliki jalan yang menghubungkan mereka, maka graf tersebut dikatakan tak-terhubung.

Berdasarkan properti sisinya, graf dapat dibedakan menjadi graf berarah dan graf tak-berarah. Suatu graf dikatakan berarah jika suatu sisi S pada E hanya bisa dilalui dari suatu simpul ke simpul lainnya tapi tidak sebaliknya, kecuali jika ada sisi lain yang pangkalnya di simpul lain itu. Selain itu dapat dibedakan juga menjadi graf berbobot dan tak-berbobot. Graf berbobot adalah graf yang setiap sisinya memiliki suatu nilai / bobot.

Dalam makalah ini, graf yang akan digunakan adalah graf tak-berbobot, tak-berarah dan bisa terhubung ataupun

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

tak-terhubung. Dikarenakan graf pada makalah ini tak-berbobot dan tak-berarah maka salah satu bentuk representasi graf yang paling mudah dipakai untuk makalah ini adalah adjacency list atau senarai ketetanggan. Senarai ketetanggaan menyimpan data simpul apa bertetangga dengan apa. Dikarenakan tak-berarah maka jika S1 ada di senarai tetangga dari S2, maka S2 juga ada di senarai tetangga dari S1.

Selain senarai ketetanggaan, terdapat pula representasi lainnya yaitu matrix ketetanggan dan senarai sisi dan simpul. Matrix ketetanggaan secara sederhana adalah suatu matrix yang akan mencatat bobot dari simpul Si dan Sj di indeks (i,j) jika ada, jika tidak ada maka bobotnya 0. Jika graf tak-berarah, maka bobotnya adalah 1. Senarai sisi dan simpul merupakan representasi graf yang paling sederhana, sesuai dengan definisi graf pada awalnya yaitu set dari simpul dan set dari sisi. Set dari sisi secara sederhana dapat berupa set dari tuple dua integer yaitu id dari kedua simpul. Set dari simpul secara sederhana dapat berupa set dari id simpul yang ada pada graf. Dalam makalah ini, tidak digunakan representasi matrik ketetanggaan dikarenakan banyaknya memori yang dihabiskan, untuk graf dengan n simpul, dibutuhkan matrix berukuran n*n. Senarai sisi dan simpul juga tidak digunakan karena susah untuk mencari atau memodifikasi baik simpul ataupun sisinya dikarenakan harus di iterasi terlebih dahulu.

B. Divide and Conquer

Algoritma Divide and Conquer sesuai namanya adalah algoritma yang membagi masalah masalah menjadi upa masalah yang lebih kecil yang nantinya akan lebih mudah diselesaikan. Tahapan dari algoritma Divide and Conquer adalah Divide atau membagi menjadi upa masalah dengan ukuran lebih kecil, Conquer atau memecahkan masalah yang lebih kecil tersebut, Combine atau menggabungkan solusi dari berbagai upa masalah yang didapat. Dalam tahap pembagian menjadi upa masalah ada syarat khusus yang harus dipenuhi yaitu karateristik upa masalah yang dihasilkan harus sama dengan karateristik masalah asalnya. Dikarenakan memiliki karateristik yang sama, algoritma Divide and Conquer umumnya dibuat dengan skema rekursif [2].

Berdasarkan tingkat kompleksitas tahap tahapnya, algoritma Divide and Conquer dapat dibagi menjadi easy split hard join, dan hard split easy join. Easy split hard join adalah algoritma yang mudah untuk dipecah menjadi upa masalah tapi susah untuk menggabungkan solusinya. Contoh dari algoritma itu adalah Merge Sort, Merge Sort mudah untuk dipecah menjadi upa masalah yang lebih kecil karena kita hanya memecah senarai menjadi dua bagian tiap iterasi, sementara untuk menggabung solusi dari Merge sort kita harus membandingkan satu-satu hasil dari kedua solusi upa masalah. Sementara hard split easy join adalah kebalikannya. Susah untuk membuat upa masalahnya tapi mudah untuk menggabungkan solusinya. Contoh dari algoritma ini adalah Quick Sort. Pada algoritma Quick Sort, kita harus mengelompokan isi dari senarai sambil mencari indeks tempat

kita harus memecah senarai itu menjadi dua upa masalah. Tapi ketika upa masalah tersebut sudah terurut maka menggabungkannya sangat mudah karena tidak usah melakukan apa apa. Dalam makalah ini, tipe algoritma Divide and Conquer yang dipakai adalah hard split, easy join, untuk lebih jelasnya akan dijelaskan pada bab Barnes-Hut.

III. FORCE-DIRECTED, BARNES-HUT

A. Force-Directed Force-Directed adalah salah satu metode untuk

menggambar graf. Metode ini bekerja dengan memanfaatkan konsep fisika mengenai gaya, terutama gaya tarik menarik dan gaya repulsif. Secara sederhana, kita dapat menganggap setiap simpul yang ada pada graf sebagai suatu partikel dengan berat konstan yaitu satu. Kemudian kita dapat juga menganggap bahwa muatan setiap partikel tersebut adalah sama, sehingga akan ada gaya tolak menolak antar partikel. Tapi, untuk simpul yang terhubung, kita bisa mengasumsikan ada suatu pegas diantara mereka yang menghubungkan kedua simpul tersebut, sehingga akan ada gaya tarik yang terjadi diantara mereka [3]. Tujuan dari hal tersebut adalah untuk mencoba mendekatkan simpul simpul yang saling terhubung dan menjauhkan simpul yang tidak terhubung.

Algoritma Force-Directed bekerja dengan cara mensimulasikan interaksi antar partikel sesuai aturan aturan yang sudah diasumsikan diatas. Diharapkan setelah beberapa selang waktu, algoritma ini akan menemukan kondisi ekuilibrium / seimbang dimana total semua gaya yang bereaksi pada semua partikel adalah nol. Ketika sudah mencapai kondisi ekuilibrium diharapkan juga tidak ada sisi yang berseberangan.

Algoritma ini memiliki banyak variasi terutama di bagian gaya yang digunakan. Dalam makalah ini, gaya tolak-menolak / repulsif yang digunakan berasal dari hukum muatan partikel seperti yang dijelaskan sebelumnya, yaitu dimana k k/dF = 2 adalah suatu konstanta dan d adalah jarak antara dua partikel. Semakin jauh partikel tersebut maka akan semakin lemah gaya tolak-menolak nya, sebaliknya semakin dekat partikel tersebut, akan semakin kuat gaya repulsifnya. Hal ini bertujuan agar tidak ada partikel yang saling tumpang tindih.

Untuk gaya tarik-menarik, dalam makalah ini digunakan kebalikan dari gaya tolak-menolaknya yaitu d /kF = 2 dimana k adalah konstanta dan d adalah jarak, sehingga semakin jauh jaraknya, semakin besar gaya tariknya dan semakin dekat akan semakin kecil gaya tariknya. Tujuannya adalah agar partikel yang terhubung tidak terpisah terlalu jauh.

Ketika gaya tolak-menolak dan gaya tarik-menarik sama maka akan terjadi keseimbangan antara kedua partikel/simpul tersebut. Namun ada beberapa kasus dimana partikel menabrak dinding simulasi dan pasangannya juga sehingga mereka berdua hanya bergerak di dinding saja berosilasi dan tidak pernah/sangat lama seimbang. Untuk menghindari hal tersebut, dalam makalah ini diberikan satu gaya tambahan yaitu gaya tarik ke titik tengah simulasi. Gaya tersebut berlaku

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

untuk setiap partikel dengan harapan mereka tidak menyentuh dinding dan akan lebih cepat mencapai keseimbangan.

B. Implementasi Bruteforce Force-Directed

Dalam implementasinya, algoritma Force-Directed versi bruteforce memiliki pseudocode seperti berikut :

dapat terlihat bahwa untuk setiap simpul yang bertetangga / terhubung, maka akan diberi gaya tarik-menarik antara mereka, serta untuk setiap pasangan simpul akan diberi gaya tolak-menolak antara mereka, dan juga untuk setiap simpul akan diberi gaya tarik ke tengah layar. Kompleksitas dari algoritma Force-Directed versi bruteforce adalah (n )O 2 dengan n adalah banyak simpul.

C. Barnes-Hut Barnes-Hut adalah algoritma yang biasanya digunakan

untuk mensimulasikan N-Body Problem atau permasalahan simulasi menentukan gerakan n buah objek yang berinteraksi satu sama lain dengan gaya gravitasi. Barnes-Hut merupakan algoritma aproksimasi, sehingga hasil yang didapat belum tentu eksak tapi jika diberikan waktu yang cukup lama, maka algoritma Barnes-Hut akan memberikan hasil yang sangat dekat dengan hasil eksaknya.

Barnes-Hut bekerja dengan cara memanfaatkan konsep Divide and Conquer dimana dibandingkan dengan melakukan perhitungan total gaya secara manual untuk setiap pasang, akan lebih baik jika ada beberapa titik yang dekat maka titik-titik itu akan dianggap sebagai suatu titik baru dengan posisinya adalah pusat massa titik-titik itu dan beratnya adalah berat total titik-titik itu.

Untuk bisa melakukan hal tersebut, perlulah dunia simulasinya dibagi menjadi 4 bagian yaitu atas kanan, atas kiri, bawah kiri, bawah kanan yang nantinya akan disebut sebagai kuadran 1, 2, 3, 4. Untuk mewujudkan hal tersebut, kita akan menggunakkan struktur data yang bernama Quad Tree atau Tree tapi dengan jumlah anak tepat 4.

Bagian Divide and Conquer dari algoritma Barnes-Hut terdapat di bagian membuat tree awalnya dengan memasukkan berbagai titik kedalam tree nya.

Langkah dari algoritma Barnes-Hut adalah mulai dengan suatu dunia yang kosong, tidak berisi apa apa. Kemudian lakukan secara berulang salah satu dari kasus berikut setiap ada titik yang dimasukkan:

1. Jika dunia kosong, maka titik langsung dimasukkan, jumlah titik di dunia ini menjadi 1

2. Jika ada tepat 1 titik di dunia, maka pecah dunia menjadi 4 dunia lainnya yang terletak di atas-kanan, atas-kiri, bawah-kiri, bawah-kanan. Kemudian tentukan titik di dunia masuk di upa-dunia bagian mana, kemudian masukkan titik di dunia ini ke upa-dunia lalu cari upa-dunia bagian mana tempat titik baru berada, kemudian masukan titik baru ke upa-dunia tersebut. Kemudian naikan 1 jumlah titik di dunia ini

3. Jika sudah ada lebih dari 1 titik di dunia itu, maka tentukan posisi titik baru ada di upa-dunia yang mana, kemudian masukkan titik baru ke upa-dunia tersebut. Lalu naikkan 1 jumlah titik di dunia ini

Gambar 1. Contoh Barnes-Hut (diambil dari :

http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html, diakses pada 26 april 2019)

Terlihat pada contoh titik a berada di upa-dunia bagian atas kiri, kemudian b awalnya berada di upa-dunia atas kanan, tapi karena c masuk maka upa-dunia atas kanan terbagi lagi menjadi 4 bagian, dan karena b dan c masih 1 upa-dunia, maka dibagi lagi sehingga upa-dunia yang berisi b dan c berbeda.

Kegunaan penting dari Barnes-Hut adalah mencoba untuk mengelompokkan beberapa kelompok titik menjadi satu. Setiap simpul pada quadtree tersebut berisi informasi mengenai pusat massa dari gabungan anak anak tree tersebut dan berapa total massa nya.

Hal tersebut sangat berguna karena jika kita ingin menghitung total gaya yang berlaku di suatu titik T, kita hanya perlu menghitung total gaya titik T dengan pusat massa kelompok titik lainnya. Tapi, agar lebih akurat lagi, total gaya hanya akan dihitung menggunakkan pusat massa kelompok titik lainnya jika perbandingan panjang upa-dunia dengan jarak titik T dan kelompok titik melebihi suatu nilai konstanta yang kita beri nama tetha [4]. Jika tidak melebihi tetha maka total gaya adalah total gaya titik dengan semua upa-dunia dari dunia itu. Perbandingan panjang upa-dunia dengan jarak tersebut menandakan apakah titik T cukup jauh dengan kelompok titik yang diuji.

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

Algoritma Barnes-Hut tergolong dalam algoritma yang hard split, easy join. Susah untuk membuat upa-masalahnya karena ada 3 kasus yang harus di cek, sementara setelah dipecah menjadi sub-dunia, bagian untuk mendapat solusinya yaitu total gaya yang berlaku di suatu titik menjadi gampang karena struktur datanya berbentuk tree sehingga kita cukup melakukan traversal tree saja.

Pseudocode dari pemasukkan titik ke quadtree adalah sebagai berikut:

terlihat bahwa quadtree dengan kedalaman d, total titik yang bisa ditampung adalah maksimal sehingga untuk4d memasukkan n titik paling banyak kita hanya butuh kedalaman , sehingga traversal tree yang harus nlog4 dilakukan untuk memasukkan 1 titik ada pada batasan O(log n), maka total kompleksitas untuk memasukkan n titik kedalam quadtree Barnes-Hut adalah O(n log n).

Pseudocode dari pencarian total gaya yang berlaku pada suatu titik adalah sebagai berikut:

dapat terlihat jika tetha kecil, maka sebagian besar kasus akan masuk ke bagian penghitungan total gaya menggunakkan pusat massa dan kompleksitas untuk penghitungan gaya total di suatu titik akan menjadi O(1) tapi nilai gaya totalnya akan kurang akurat.

Tapi jika nilai tetha besar, maka akan menghitung total gaya dengan menghitung jumlah total gaya di setiap upa-dunia, dimana pada akhirnya akan sama saja dengan menghitung total gaya terhadap semua titik. Sehingga

kompleksitas algoritmanya menjadi O(n) tapi nilai gaya total akan menjadi lebih akurat.

Jika nilai tetha yang digunakkan tepat, tidak terlalu besar, dan tidak terlalu kecil, maka algoritma ini akan menjadi mirip dengan algoritma traversal tree biasa yang memiliki kompleksitas O(log n). Sehingga total penghitungan gaya total untuk semua titik adalah O(n log n).

Dari gabungan memasukkan titik dan mencari gaya total, kita bisa mendapatkan total kompleksitas algoritma Barnes-Hut adalah 2*O(n log n) yaitu O(n log n).

IV. OPTIMASI FORCE-DIRECTED

Force-Directed dengan menggunakkan metode bruteforce membutuhkan kompleksitas untuk menghitung total(n )O 2 gaya untuk semua titik di dalam dunia. Dengan menganggap semua simpul sebagai partikel kita dapat mendekati hasil algoritma Force-Directed dengan menggunakkan Barnes-Hut algorithm yang sudah dimodifikasi.

Bagian modifikasi yang harus dilakukan adalah pada bagian gaya tariknya. Sepasang partikel hanya akan saling tarik menarik jika representasi simpulnya merupakan tetangga, jika tidak maka hanya akan ada gaya repulsif/tolak-menolak saja.

Hasil pseudocode Barnes-Hut yang telah dimodifikasi adalah seperti berikut:

kompleksitas dari penghitungan total gaya tersebut masih sama seperti sebelumnya yaitu bergantung pada nilai tetha, tapi umumnya akan memiliki kompleksitas O(n log n) untuk menghitung total gaya semua titik.

Kita juga harus melakukan modifikasi terhadap algoritma Force-Directed agar menggunakkan Barnes-Hut. Berikut adalah pseudocode Force-Directed yang sudah dimodifikasi agar menggunakkan algoritma Barnes-Hut:

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

kita harus membuat dunia baru setiap iterasi karena setiap titiknya bergerak, bisa saja dia pindah ke upa-dunia yang lain. Total kompleksitas untuk algoritma baru ini adalah kompleksitas untuk menghitung total gaya semua titik + kompleksitas untuk memasukkan semua titik ke dunia baru, sehingga totalnya adalah O(n log n) + O(n log n) = 2*O(n log n) = O(n log n). Sehingga algoritma Force-Directed yang dioptimasi dengan menggunakkan Barnes-Hut memiliki kompleksitas yang lumayan jauh berbeda dibanding metode bruteforce.

V. EKSPERIMEN

Telah dilakukan uji coba penggambaran graf dengan dua variasi algoritma Force-Directed yaitu bruteforce dan Barnes-Hut. Berikut adalah hasilnya: Ukuran 10 simpul

Gambar 2. Perbandingan bruteforce(kiri) dan Barnes-Hut(kanan)

tidak terlihat perbedaan yang signifikan kecuali animasi Barnes-Hut lebih cepat dibanding bruteforce Ukuran 50 simpul

Gambar 2. Perbandingan bruteforce(kiri) dan Barnes-Hut(kanan)

mulai terlihat perbedaan antara bruteforce dan Barnes-Hut dimana Barnes-Hut lebih cepat mencapai kondisi ekuilibrium & tidak ada sisi yang bersilangan. Ukuran 100 Simpul

Gambar 2. Perbandingan bruteforce(kiri) dan Barnes-Hut(kanan)

Ukuran 500 Simpul

Gambar 2. Perbandingan bruteforce(kiri) dan Barnes-Hut(kanan)

algoritma Barnes-Hut telah melewati tahap seperti gambar graf dengan bruteforce dengan waktu hampir ⅓ waktu bruteforce Barnes-Hut menghitung posisi setiap simpul lebih cepat, tapi karena Barnes-Hut merupakan algoritma yang mengaproksimasi maka kelihatannya tidak serapi yang bruteforce

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019

Ukuran 2000 Simpul

terlihat ketika ukuran 2000 simpul, algoritma bruteforce tidak bisa menangani kasus tersebut dan crash.

Jadi dapat disimpulkan bahwa algoritma Barnes-Hut dengan metode Divide and Conquer bisa bekerja lebih baik dibandingkan metode bruteforce untuk algoritma penggambaran graf Force-Directed Layout.

VI. APPENDIX

Implementasi algoritma oleh penulis yang dibahas dalam makalah ini dapat diakses di akun GitHub milik penulis di : https://github.com/AdityaPutraS/Barnes-Hut-Force-Directed. Aplikasi membutuhkan OpenCV sebagai frontend untuk berjalan dengan lancar. OpenCV bisa didapatkan di https://opencv.org. Program berbentuk Notebook Python, silahkan buka mengunakkan Jupyter Notebook / sejenisnya

ACKNOWLEDGMENT

Penulis ingin menyatakan terima kasih kepada Dr. Nur Ulfa Maulidevi ST,M.Sc. sebagai dosen pengampu Strategi Algoritma IF2211 di kelas penulis. Penulis juga ingin berterima kasih kepada teman-teman penulis yang telah membantu dalam pembuatan makalah ini. 

REFERENCES

[1] Rinaldi Munir, Matematika Diskrit”, 6th ed. Bandung: Informatika Bandung, 2016,ch. 8

[2] Slide Divide and Conquer IF2211, didapat dari : http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2017-2018/Algoritma-Divide-and-Conquer-(2018).pdf (diakses pada 26 April 2019)

[3] Handbook of Graph Drawing and Visualization, didapat dari : http://cs.brown.edu/people/rtamassi/gdhandbook/chapters/force-directed.pdf (diakses 26 April 2019)

[4] Barnes-Hut Programming Assignment, didapat dari : http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html (diakses 26 April 2019)

PERNYATAAN

Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi.

Bandung, 26 April 2019

Aditya Putra Santosa - 13517013

Makalah IF2211 Strategi Algoritma, Semester II Tahun 2018/2019