Struktur Data Tree dan Graph


5. Tree

Tree adalah struktur data non-linear dan berhierarki di mana elemennya diatur dalam struktur seperti pohon. Pada Tree, node paling atas disebut node akar (root). Setiap node berisi beberapa data dan bisa berupa tipe data apa saja.

Tree terdiri dari node pusat, node struktural, dan sub-node yang dihubungkan dengan edge (garis penghubung). Struktur data tree memudahkan akses ke data karena sifatnya non-linear. Tree memiliki berbagai istilah seperti noderoot, edge, tinggi tree, derajat tree, dan lainnya.


Ada beberapa istilah yang terdapat pada tipe Tree, di antaranya:

  • Node (Simpul): Setiap elemen dalam tree.
  • Edge (Sisi): Hubungan antara dua node, menunjukkan orang tua dan anak.
  • Root (Akar): Simpul teratas dalam tree, tidak memiliki simpul induk.
  • Parent (Induk): Node yang memiliki satu atau lebih anak.
  • Child (Anak): Node yang terhubung ke simpul induk.
  • Leaf (Daun): Node yang tidak memiliki anak.
  • Subtree: Bagian dari tree yang terdiri dari node dan anak-anaknya. 
  • Siblings (Saudara ) node yang asalnya dari parent node yang sama

Penerapan Tree di kehidupan sehari-hari:

  • Membantu dalam proses pengindeksan di database.
  • Sebagai alat pembelajaran mesin yang efisien, terutama dalam analisis keputusan, karena strukturnya yang menyerupai diagram alur yang mempermudah pemahaman data.
  • Domain Name Server juga mengandalkan struktur data Tree dalam operasinya.
  • Situs jejaring sosial 
            


6. Graph

Graph adalah struktur data non-linier yang terdiri dari vertex (node) dan edge (sisi). Graph terbentuk dari himpunan vertex dan himpunan edge yang menghubungkan sepasang node. 


Graph di atas terdiri atas 4 buah verteks dan 4 pasang sisi atau edge. Dengan verteks disimbolkan sebagai V, edge dilambangkan E, dan graph disimbolkan G, ilustrasi di atas dapat ditulis dalam notasi berikut:

V = {0, 1, 2, 3}

E = {(0,1), (0,2), (0,3), (1,2)}

G = {V, E}

Graph banyak dimanfaatkan untuk menyelesaikan masalah dalam kehidupan nyata, dimana masalah tersebut perlu direpresentasikan atau diimajinasikan seperti sebuah jaringan. Contohnya adalah jejaring sosial (seperti Facebook, Instagram, LinkedIn, dkk)

Struktur data ini digunakan untuk memecahkan masalah pemrograman yang paling kompleks. Beberapa istilah yang ada pada Graph seperti path, derajat, vertex bersebelahan, komponen terhubung, dan lainnya.

Pengguna di Facebook dapat dimisalkan sebagai sebuah simpul atau verteks, sementara hubungan pertemanan antara pengguna tersebut dengan pengguna lain direpresentasikan sebagai edge. Tiap tiap verteks dapat berupa struktur yang mengandung informasi seperti id user, nama, gender, dll.

Tidak hanya data pengguna, data apapun yang ada di Facebook adalah sebuah simpul atau verteks.Termasuk foto, album, komentar, event, group, story, dll. 

Pengguna dapat mengunggah foto. Ketika telah diunggah, foto akan menjadi bagian dari album. Foto juga dapat dikomentari oleh pengguna lain dan mereka dapat saling berbalas komentar.

Semuanya terhubung satu sama lain, baik dalam bentuk relasi one-to-many, many-to-one, atau many-to-many.

Contoh penggunaan struktur data Graph pada jejaring sosial
Sumber: programiz.com

Penerapan Graph di kehidupan sehari-hari:

  • Digunakan pada Google Maps, di mana kota-kota diwakili sebagai simpul dan jalur yang menghubungkan mereka sebagai tepi grafik.
  • Jejaring sosial juga merupakan contoh grafik dunia nyata, di mana setiap anggota jaringan merupakan simpul, dan hubungan pertemanan mereka menjadi tepi grafik.
  • Digunakan dalam studi molekul dalam bidang fisika dan kimia sebagai cara untuk memahami hubungan antar atom dan ikatan kimia.

Kelebihan dan Kekurangan Struktur Data

Setelah mengetahui mulai dari pengertian, jenis, hingga contoh, kamu juga perlu tahu apa kelebihan dan kekurangan dari mempelajari struktur data.

Kelebihan 

  • Penyimpanan data yang lebih baik dan efisien.
  • Pemulihan dan manipulasi data yang lebih cepat.
  • Mempermudah dalam merancang algoritma untuk masalah yang kompleks.
  • Mempermudah tugas pembaruan dan pemeliharaan data.
  • Memberikan pemahaman yang lebih jelas tentang hubungan antar data.
  • Meningkatkan kemampuan penggunaan ulang kode.
  • Meningkatkan kemampuan dalam memecahkan masalah.
  • Mengurangi penggunaan memori.
  • Meningkatkan keamanan data.

Kekurangan

  • Peningkatan beban komputasi dan penggunaan memori
  • Kesulitan dalam merancang dan mengimplementasikan struktur data kompleks
  • Skalabilitas dan fleksibilitas yang terbatas
  • Kesulitan dalam debugging dan pengujian
  • Sulit memodifikasi struktur data yang sudah ada
  • Dibutuhkan tenaga ahli untuk membuat dan memelihara aplikasi dengan banyak struktur data, sehingga meningkatkan biaya
  • Semakin banyak struktur data yang digunakan, semakin sulit dipahami dan dikelola
  • Beberapa struktur data memberikan performa akses data yang lebih lambat
  • Perlu perencanaan dan pengujian yang matang agar struktur data bekerja dengan baik




Komentar

Postingan populer dari blog ini

Ekspresi dan Operasi Logika