Category: Uncategorized
Data Structure 8
Heap
Heap Adalah struktur data yang berbentuk pohon yang memenuhi sifat-sifat heap yaitu jika B adalah anak dari A, maka nilai yang tersimpan di simpul A lebih besar atau sama dengan nilai yang tersimpan di simpul B.
Jenis-jenis dari heap adalah sebagai berikut:
Min–Heap
Heap dimana root memiliki nilai yang paling kecil dari keturunannya. Child dari node tersebut dan node seterusnya harus lebih besardari parent nya. Jika tidak memenuhi, maka dilakukan rotasi.
Max- Heap
Heap dimana root memiliki nilai yang paling besar. Child dari node tersebut dan node seterusnya harus lebih kecil dari parent nya. Jika tidak memenuhi, maka dilakukan rotasi.
Min-Max Heap
Complete Binary Tree yang dimana setiap level nya memiliki tingkatan heap berbeda (max dan min). Apabila root adalah level min, maka selanjutnya adalah level max, dst.
Insertion dalam Heap
Heap di insert satu persatu, dari atas, lalu kebawah. Dari kiri ke kanan terlebih dahulu secara berurutan ke index terakhir. Apabila heap tidak memenuhi syarat min/max/min-max heap maka dilakukan operasi up-heap.
Tries
Tries atau prefix tree adalah suatu pohon struktur data yang terurut yang menyimpan data array, biasanya string. Kata tries diambil dari kata RETRIEVAL, karena tries dapat menemukan kata tunggal dalam kamus dengan hanya awalan katanya saja.
Tries adalah suatu tree dimana setiap vertex/pathnya menggambarkan suatu kata, rootnya kosong
Tree tersebut menunjukan kata : ALGO, API, BOM, BOS, BOSAN, BOR |
Hashing
Hashing adalah transformasi dari string of character menjadi nilai yang lebih pendek atau key yang merepresentasikan suatu string aslinya.Hashing digunakan untuk mengindex dan retrieve item dalam database, karena akan lebih mudah menggunakan kata kunci yang lebih singkat dibandingkan string aslinya.
Hash Table
Hash table adalah tabel (array) yang menyimpan string aslinya.
Contoh Hash Table:
sumber: http://suciantinovi.blogspot.co.id/2014/05/leftist-trie-and-hashing.html
Data Structure 7
Red Black Tree
Red Black Tree adalah BST dimana node-nodenya memiliki warna merah atau hitam. Warna inilah yang digunakan untuk menyeimbangkan tree nya. Dimana memiliki aturan seperti berikut:
- Setiap node mempunyai warna, antara merah atau hitam.
- Node root default nya warna hitam.
- Node external default nya warna hitam.
- Jika suatu node berwarna merah mempunyai children, maka harus berwarna hitam dua-duanya, tidak boleh merah.
- Node yang baru di insert berwarna merah.
Seperti BST, Red Black tree memiliki operasi seperti Insertion, Deletion dll. Setelah operasi dilakukan maka harus di ubah melalui single-rotation dan double-rotation agar memenuhi aturan.
3-2 Tree
2-3 Tree adalah salah satu tipe struktur data, dimana setiap node dengan anaknya, memiliki 2 children dan 1 elemen data (2 node) atau 3 children dan 2 elemen data (3 node). perlu diketahui, bahwa 2-3 Tree bukan Binary Tree.
Sifat-sifat 2-3 Tree
- Setiap non-leaf terdapat 2-node atau 3-node. Sebuah 2-node berisi satu item data dan memiliki dua anak/children (anak kiri dan anak tengah). Sebuah 3-node berisi dua item data dan memiliki 3anak/children (anak kiri, tengah, dan kanan).
- Semua leaf berada di level yang sama (level bawah/bottom level).
- Semua data yang disimpan akan diurutkan :
- Misalkan A adalah data yang tersimpan di 2-node. Subtree kiri harus berisi data yang nilainya lebih kecil dari A. Subtree tengah harus berisi data yang nilainya lebih besar dari A.
- Misalkan A dan B adalah data yang tersimpan di 3-node. Subtree kiri harus berisi data yang nilainya kurang dari A. Subtree tengah berisi nilai antara A dan B, dan subtree kanan berisi nilai yang lebih dari B.
Data Structure 6: Balanced Binary Search Tree
Balanced Binary Search Tree terdiri dari 2 jenis, yaitu:
- AVL Tree
- Red Black Tree
Pada pertemuan kali ini, kami belajar AVL tree. AVL tree sendiri adalah binary search tree yang dapat menyeimbangkan tree nya sendiri. Tujuannya adalah untuk mempermudah searching.
Dalam AVL terdapat yang namanya balance factor. Balance factor ini adalah faktor keseimbangan antara child node kiri dan kanan. Dihitung dengan selisih antara child node kiri dan kanan. Jika tidak memiliki anak, maka dihitung 0. Balance factor pasti tidak lebih dari 1.
Lalu ada juga height factor. Dihitung dengan:
- Jika node root, tidak memiliki subtree, height factor = 0.
- Jika node adalah leaf, height factor = 1
- Jika node internal, height factor dihitung dari height tertinggi child node + 1.
To balance an AVL tree, we do these steps:
Single Rotation
Double Rotation
Data Structure 5: Binary Search Tree
Binary Search Tree
Binary Search Tree adalah tree yang dibuat untuk mempermudah pencarian data dalam tree. Dimana tiap node memiliki 2 child node yaitu ‘left’ dan ‘right’. Node ‘left’ untuk data yang lebih kecil dari parent dan node ‘right’ untuk data yang lebih besar dari parent nya.
Dalam Binary Search Tree ada 3 Operasi yang dapat dilakukan, yaitu:
- Find / Search
- Digunakan untuk mencari data di dalam tree.
- Langkah-langkahnya:
- Mulai dari root dari tree.
- Jika angka yang dicari sama dengan node tersebut, maka return node tersebut.
- Jika data yang dicari lebih kecil dari node tersebut maka pindah pencarian ke node ‘left’.
- Jika data yang dicari lebih besar dari node tersebut maka pindah pencarian ke node ‘right’.
- Ulangi langkah 2,3 dan 4 hingga mendapatkan node yang dicari (nilai node sama dengan yang dicari).
- Insertion
- Digunakan untuk memasukkan data baru ke dalam tree.
- Langkah-langkahnya:
- Cek apakah ada node root. Jika belum ada maka node yang akan di insert menjadi root. Apabila ada, bandingkan data yang akan dimasukkan dengan node tersebut.
- Jika data yang akan di- insert lebih besar dari node tersebut, pindah ke ‘right’.
- Jika data yang akan di- insert lebih kecil dari node tersebut, pindah ke ‘left’.
- Ulangi langkah 3 dan 4 hingga node yang akan dipilih/pindah tidak ada.
- Cek apakah data yang akan dimasukkan lebih besar / lebih kecil dari node tersebut. Jika lebih besar, maka di insert ke node ‘right’. Sebaliknya, jika lebih kecil maka di-insert ke ‘left’.
- Deletion
- Digunakan untuk mengapus node.
- Langkah-langkahnya:
- Gunakan metode untuk searching untuk mencari node yang akan dihapus.
- Jika node yang akan dihapus tidak memiliki child, maka node tersebut dapat langsung dihapus.
- Jika node yang akan dihapus hanya memiliki 1 child, hubungkan node child tersebut dengan parent dari node yang akan dihapus.
- Jika node yang akan dihapus memiliki 2 child, sesuai dengan keadaan, node yang dihapus dapat diganti dengan node child paling kanan (right) dari node ‘left’ node yang akan dihapus atau diganti dengan sebaliknya, mengganti dengan node child paling kiri (left) dari node ‘right’ yang akan dihapus.
Data Structure 4: Tree, Binary Tree and Expression Tree
-
Tree
Tree adalah kumpulan dari beberapa node.
Ada beberapa istilah dalam sebuah tree:
Sumber: http://collegelabs.co/clabs/nld/images/tree%20(1).gif
- Parent: node induk dari beberapa node.
- Child : anak/bawahan dari beberapa node.
- Edge: Garis yang menghubungkan parent ke child.
- Height/Depth : jumlah tingkatan dari tree tersebut.
- Degree : jumlah maksimal child dari suatu parent.
- Ancestor : Semua node yang menunjuk suatu node x / seluruh parent dari x.
- Descendant : Semua node child dari node x.
- Leaf : node yang tidak memiliki child.
- Sibling : Dua node yang memiliki 1 parent yang sama.
2. Binary Tree
Sumber: https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Binary_tree.svg/220px-Binary_tree.svg.png
Binary adalah tree yang memiliki paling banyak 2 child, yaidu node kiri (left) dan node kanan (right). Node yang tidak memiliki child disebut leaf.
Jenis-jenis Binary Tree:
- PERFECT binary tree:
Binary tree yang setiap level nya berada dalam Height/Depth yang sama. - COMPLETE binary tree:
Binary tree yang di setiap levelnya kecuali yang terakhir terisi penuh, setiap node semungkinnya terletak se-kiri-kirinya. Sebuah perfect binary tree adalah complete binary tree. - SKEWED binary tree:
Binary tree yang setiap node nya memiliki 1 child. - BALANCED binary tree:
Binary tree dimana tidak ada leaf yang lebih jauh dari leaf lainnya (di level yang sama).
Ciri-ciri Binary Tree:
- Jumlah maksimum node di level k di sebuah binary tree adalah 2k
- Jumlah maksimum node disebuah binary tree dengan height h adalah 2h+1-1
- Height minimum di sebuah binary tree dengan jumlah node n adalah 2log(n)
- Height maximum di sebuah binary tree dengan jumlah node n adalah n-1
3. Expression Tree
- Expression tree adalah tree yang digunakan untuk notasi matematika.
- Dapat digunakan dengan metode prefix, infix dan postfix.
- Di prefix, operator dibaca terlebih dahulu baru turun sampai node paling dalam, diproses dari kiri ke kanan
- Di infix, diambil operand pertama dahulu baru kembali ke parent untuk mendapat operator sebelum ke node kanan untuk mengambil operand kedua. Di infix, untuk menghindari kebingungan operasi matematika digunakan tanda kurung.
- Di postfix, operand diambil dahulu sampai ke ujung leaf terakhir, barulah operator dibaca.
Data Structure 3
Implementasi Linked List
- Stack
Seperti artinya, stack dapat di ibaratkan sebagai suatu tumpukan, yang memiliki sistem FILO (First In Last Out). Dimana data yang masuk pertama kali akan keluar terakhir, layaknya sebuah tumpukan. - Queue
Seperti artinya juga, queue dapat diibaratkan sebagai suatu antrian yang memiliki sistem FIFO (First In First Out). Dimana data yang masuk pertama kali akan keluar pertama kali juga, layaknya sebuah antrian.
Selanjutnya yaitu operator prefix, infix dan postfix. Yang membedakannya adalah letak operator untuk operasi operand. Berikut contoh prefix, infix dan postfix.
Infix Expression | Prefix Expression | Postfix Expression |
---|---|---|
A + B * C + D | + + A * B C D | A B C * + D + |
(A + B) * (C + D) | * + A B + C D | A B + C D + * |
A * B + C * D | + * A B * C D | A B * C D * + |
A + B + C + D | + + + A B C D | A B + C + D + |
Lalu, ada Breadth First Search (BFS) dan Depth First Search (DFS).
- Depth First Search (DFS) digunakan untuk mencari data di tree atau graph, data dicari dengan mengikuti anak data sampai level terendah baru ke anak data selanjutnya.
- Breadth First Search (DFS) digunakan untuk mencari data di tree atau graph, data dicari dengan melihat data-data yang selevel, baru melanjutkan ke level yg lebih rendah (child)
Data Structure 2: Big Data, LateX, dll
Pada pertemuan ke-2 dalam mata kuliah struktur data ini, kami kedatangan guest lecturer yaitu Bpk. Bong Defendy yang merupakan Binusian 2007. Beliau adalah sorang technopreneur yang telah membuat usaha sendiri dan juga menangani permintaan dari klien-klien besar.
-
Big Data
Big Data adalah data dengan ciri berukuran sangat besar, sangat variatif, sangat cepat pertumbuhannya dan mungkin tidak terstruktur yang perlu diolah khusus dengan teknologi inovatif sehingga mendapatkan informasi yang mendalam dan dapat membantu pengambilan keputusan yang lebih baik.
Keempat karakterik tersebut: berukuran sangat besar (high-volume), atau sangat bervariasi (high-variety), atau kecepatan pertumbuhan tinggi (high-velocity), dan sangat tidak jelas (high veracity) sering disebut dengan 4V’s of Big Data.
-
Sumber: http://www.apaitubigdata.com/p/apa-itu-big-data.html
-
Arduino
Arduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri.
Arduino juga merupakan platform hardware terbuka yang ditujukan kepada siapa saja yang ingin membuat purwarupa peralatan elektronik interaktif berdasarkan hardware dan software yang fleksibel dan mudah digunakan. Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang memiliki kemiripan syntax dengan bahasa pemrograman C. Karena sifatnya yang terbuka maka siapa saja dapat mengunduh skema hardware arduino dan membangunnya.
Sumber: https://id.wikipedia.org/wiki/Arduino
-
Raspberry Pi
Raspberry Pi atau Raspi adalah komputer kecil seukuran sebuah kartu kredit, Raspberry Pi memiliki prosesor, RAM dan port hardware yang khas yang bisa anda temukan pada banyak komputer. Ini berarti, Anda dapat melakukan banyak hal seperti pada sebuah komputer desktop. anda dapat melakukan seperti mengedit dokumen, memutar video HD, bermain game, coding dan banyak lagi.
Raspberry Pi juga bagus dalam melakukan banyak hal yang tidak membutuhkan komputer mahal untuk membuatnya. seperti berjalan sebagai NAS (Network Attached Storage), web server, router, media center, TorrentBox dan masih banyak lagi.
Sumber: http://www.bapaknaga.com/2015/12/apa-itu-raspberry-pi.html
-
LateX
LaTeX adalah bahasa markup atau sistem penyiapan dokumen untuk peranti lunak TeX. Tex merupakan program komputer yang digunakan untuk membuat typesetting suatu dokumen, atau membuat formula matematika. LaTeX memungkinkan penulis/penggunanya untuk melakukan typesetting dan mencetak hasil kerjanya dalam bentuk tipografi yag terbaik. Oleh karenanya LaTeX paling banyak digunakan oleh para matematikawan, ilmuwan, insinyur, akademisi, dan profesional lainnya. Pada awalnya LaTeX ditulis pada awal 1980-an oleh Leslie Lamport di SRI International . Versi paling mutakhir adalah LateX2e.
Beberapa keuntungan menggunakan LaTeX ialah :
- Memiliki format dokumen yang terstruktur sehingga membuat dokumen terlihat sangat profesional dan sempurna.
- Segala jenis formula matematis dapat dituliskan dengan mudah.
- List gambar, List tabel, Daftar Pustaka, footnote bahkan daftar isi dapat secara otomatis dibuat oleh program.
- LaTeX melatih dan memaksa pengguna untuk membuat dokumen dengan struktur yang baik dan benar, sehingga tidak terjadi kerancuan dalam penulisan.
Kerugian menggunakan LaTeX:
- Sangat sulit untuk menuliskan dokumen yang tidak terstruktur.
- Memerlukan kecerdasan manusia.
Sumber: https://id.wikipedia.org/wiki/LaTeX
-
Cloud
Cloud computing adalah proses komputasi dimana user dan komputer yang digunakan terhubung melalui internet atau jaringan. Komputer yang digunakan berupa infrastruktur yang biasanya dapat menangani komputasi dalam jumlah besar. Tak hanya itu, komputer tersebut dapat digunakan lelbih dari 1 user secara bersamaan.
-
Augmented Reality
Augmented Reality adalah teknologi yang menggabungkan benda nyata dengan benda yang bersifat maya atau digital. Sehingga benda yang tak nyata dapat berbaur dengan dunia maya. Berbeda dengan Virtual Reality yang mengubah semua nya sehingga benda maya terlihat seperti nyata. - SASS
SASS (Syntactically Awesome Stylesheets) adalah sebuah pengembangan dari CSS3 dengan menambahkan nested rules, variables, mix-ins, selector inheritance, dan banyak lagi. SASS membuat CSS yang dihasilkan lebih rapi dan lebih terstruktur. SASS didevelop menggunakan bahasa Ruby dan dapat berjalan dengan baik di setiap browser.
Data Structure 1: Pointer, Array and Introduction to Data Structure
Struktur data berguna untuk mengorganisir data di komputer agar dapat digunakan secara efisien.
Tipe-tipe struktur data yang umum adalah sebagai berikut:
1. Array
- Kumpulan data sejenis.
- Memiliki tipe data yang sama (homogen).
- Setiap elemen array disimpan di lokasi memori yang berurutan.
- Masing-masing elemen array memiliki sebuah index yang dimulai dari nol
Contoh array:
- Array 1 Dimensi:
- Deklarasi: int arr[5]; // Syntax: tipe nama[ukuran];
- Akses: arr[1] = 1;
- Array 2 Dimensi:
- Deklarasi: int arr[3][2]; // Syntax: tipe nama[ukuran1][ukuran2];
- Akses: arr[1][1] = 1;
- Array Multi Dimensi:
- Deklarasi: int arr[3][2][5]; // Syntax: tipe nama[ukuran1][ukuran2][…];
- Akses: arr[1][1][1] = 1;
- Array juga dapat diberikan nilai dari fungsi-fungsi seperti fungsi input, atau diakses melalui pengulangan.
- Beberapa operasi yang dapat dilakukan pada array seperti: Transversal, Insertion, Searching, Deletion, Merging & Sorting.
2. Pointer
Pointer adalah tipe data yang nilainya mengacu pada nilai lain yang disimpan di tempat lain di komputer melalui alamatnya.
2 Operator penting yang digunakan dengan tipe pointer adalah:
- & operator alamat
- * operator dereferencing
3. Linked List
- Struktur data yang sangat dinamis yang elemen nya dapat di tambah atau hapus dari mana saja
- Setiap elemen dinamakan simpul (node).
4. Queue
- Seperti layaknya sebuah antrian, elemen yang dimasukan pertama adalah yang pertama kali keluar.
- Juga elemen dalam queue ditambah di sisi yang disebut belakang dan dihapus dari sisi yang dinamakan depan.
5. Stacks
- Stacks dapat direpresentasikan sebagai array yang linear.
- Setiap stack memiliki variabel TOP yang diasosiasikan kepadanya.
- Menggunakan LIFO (Last In First Out) / FILO (First In Last Out) seperti layaknya sebuah tumpukan barang.
6. Binary Trees
- Pohon biner adalah struktur data yang dapat didefinisikan sebagai koleksi elemen-elemen yang dipanggil simpul (node).
- Setiap node memiliki pointer kiri, pointer kanan dan sebuah elemen data.
Tipe Data
Tipe data adalah kumpulan objek dan operasi-operasi yang bekerja pada objek tersebut.
Contoh tipe data yang telah didefinisikan adalah: int, char, float.
Tipe Data Abstrak
Tipe Data Abstrak adalah tipe data yang diorganisir sehingga ciri-ciri objek dengan ciri-ciri operasi pada objeknya terpisah dengan representasi objeknya dan implementasi operasinya.
Di bahasa C/C++ memiliki konsep yaitu class dan struct yang membantu untuk implementasi tipe data abstrak.
Kegiatan HTTP SHINE 2015
Saya mengikuti kegiatan HTTP (HIMTI Togetherness and Top Performance) yang diselenggarakan HIMTI. Banyak acara ada disini seperti pertunjukan Drama, Band. Kegiatan ini juga mengundang Narasumber mahasiswa SocS Binus yang telah mendirikan perusahaan sendiri. Juga di kegiatan ini diperkenalkan para staff di SoCS BINUS University. Sebagai penutup, ada pertunjukan dari band tamu dan DJ. Saya bersyukur bisa mengikuti kegiatan ini.