Skip to main content

Hashing Table and Binary Tree

Hashing

Hashing adalah teknik pada Data Strucuture yang digunakan untuk memetakan nilai yang diberikan dengan kunci tertentu untuk akses elemen yang lebih cepat. Misalkan fungsi hash H(x) memetakan nilai x pada indeks x% 10 dalam sebuah array. Sebagai contoh jika daftar nilai adalah [11,12,13,14,15] itu akan disimpan di posisi {1,2,3,4,5} masing-masing dalam array atau tabel hash. 

Hash Function pada Data Structure:

1. Division Method

Dalam hal ini fungsi hash tergantung pada sisa pembagian. Sebagai contoh, 52,68,99,84 harus ditempatkan di tabel hash dan mari kita ambil ukuran tabel adalah 10. Lalu,

(key)=record% table size.
 2=52%10
 8=68%10
9=99%10
4=84%10
Division method

2. Mid Square Method

Dalam metode ini pertama kunci kuadrat dan kemudian bagian tengah hasilnya diambil sebagai indeks. Sebagai contoh, pertimbangkan bahwa jika kita ingin menempatkan catatan 3101 dan ukuran tabel adalah 1000. Jadi 3101 * 3101 = 9616201 yaitu h (3101) = 162 (tengah 3 digit)

3. Digit Folding Method

Dalam metode ini kunci dibagi menjadi bagian yang terpisah dan dengan menggunakan beberapa operasi sederhana bagian ini digabungkan untuk menghasilkan kunci hash. Sebagai contoh, perhatikan catatan 12465512 maka akan dibagi menjadi beberapa bagian yaitu 124, 655, 12. Setelah membagi bagian-bagian menggabungkan bagian-bagian ini dengan menambahkannya.

H(key)=124+655+12
        =791

Collision

Karena fungsi hash memberi kita angka kecil untuk kunci yang merupakan bilangan bulat besar atau string, ada kemungkinan bahwa dua kunci menghasilkan nilai yang sama. Situasi di mana peta kunci yang baru dimasukkan ke slot yang sudah ditempati di tabel hash disebut tabrakan dan harus ditangani menggunakan beberapa teknik penanganan Collision.

Ada dua teknik dalam menangani Collision, yaitu:

1. Linear Probing

Dalam linear probing, kita mencari secara linear slot berikutnya. Sebagai contoh, kesenjangan khas antara dua probe adalah 1 seperti diambil dalam contoh di bawah ini juga.

hash(x) menjadi indeks slot dihitung menggunakan fungsi hash dan S menjadi ukuran tabel

If slot hash(x) % S is full, then we try (hash(x) + 1) % S
If (hash(x) + 1) % S is also full, then we try (hash(x) + 2) % S
If (hash(x) + 2) % S is also full, then we try (hash(x) + 3) % S 
Kita anggap fungsi hash sederhana sebagai "key mod 7" dan urutan tombol sebagai 50, 700, 76, 85, 92, 73, 101.

openAddressing

2. Chaining

Fungsi Chaining adalah untuk membuat setiap sel tabel hash menunjuk ke daftar catatan terkait yang memiliki nilai fungsi hash yang sama.

Kita anggap fungsi hash sederhana sebagai "key mod 7" dan urutan tombol sebagai 50, 700, 76, 85, 92, 73, 101.

Binary Tree

Binary Tree adalah struktur data pohon di mana setiap node memiliki paling banyak dua anak, yang disebut sebagai anak kiri dan anak kanan. Definisi rekursif hanya menggunakan teori himpunan gagasan adalah bahwa (non-kosong) pohon biner adalah tiga (L, S, R), di mana L dan R adalah Binary Tree atau himpunan kosong dan S adalah satu set tunggal. Beberapa penulis memungkinkan pohon biner menjadi himpunan kosong juga.
Jenis-jenis Binary Tree, yaitu:

  • Rooted Binary Tree adalah sebuah tree yang berakar di mana setiap simpul paling banyak mempunyai dua anak
  • Full Binary Tree (proper binary tree), adalah sebuah tree di mana setiap simpul mempunyai nol atau dua anak.
  • Perfect Binary Tree adalah sebuah Full Binary Tree di mana semua daun memiliki kedalaman yang sama.
  • Complete Binary Tree di mana semua daunnya memiliki kedalaman n atau n-1 untuk beberapa n. Agar sebuah tree dapat menjadi sebuah Complete Binary Tree, semua anak pada tingkat terakhir harus menempati titik terkiri secara teratur, dengan tidak ada titik yang menganggur di antara keduanya.
  • Almost Complete Binary Tree sebuah tree dimana setiap simpul yang mempunyai anak kanan juga memiliki anak kiri. Memiliki anak kiri tidak memerlukan sebuah simpul untuk mempunyai anak kanan.
Sumber:

Comments

Popular posts from this blog

Linked List II

1. Circular Single Linked List Circular Linked Single List adalah Linked List yang pointer node terakhirnya menunjuk ke node pertama. Setiap node pada Circular Linked List dapat menjadi starting node. Pada list ini tidak ada nilai NULL. Contoh: 2. Doubly Linked List Doubly Linked List adalah Linked List yang setiap nodenya memiliki 2 pointer, dimana pointer pertama menunjuk ke node sebelumnya dan node kedua menunjuk ke node setelahnya. Contoh: 3. Circular Doubly Linked List Circular Double Linked List adalah struktur data yang mirip dengan Circular Linked List dimana pointer node terakhir menunjuk ke node pertama. Namun, setiap node memiliki 2 pointer seperti Doubly Linked List . Contoh:   Sumber:  -.  javatpoint.com/ -.  btechsmartclass.com/ -.  geeksforgeeks.org/

AVL Tree

AVL Tree AVL Tree ditemukan oleh Adelson-Velskii dan Landis. AVL Tree merupakan salah satu jenis BST (binary Search Tree). BST digunakan dengan tujuan untuk mempercepat pencarian data. Apabila BST yg terbentuk cukup seimbang (mendekati complete binary tree) maka waktu pencarian data tidak lebih dari log2n langkah.  AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree , waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan. Insertion Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node, dilakukan pemeriksaan dari node baru → root. Node pertama yang memiliki |balance factor| > 1 diseimbangkan. Proses penyeimbangan dilakukan dengan: Single Rotation dan Double Rotation . Single Rotation Single rotation dilakukan bila kondisi AVL Tree waktu akan ditambahkan node baru dan posisi node baru...