Pertemuan 09, 1 Juni 2016

Graph tak berarah (undirected graph)

Graph yang sisinya tidak mempunyai orientasi arah disebut graph tak berarah. Pada graph tak-berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. salah satu contoh graph tak berarah dimana sisi-sisi yang menghubungkan antar simpul dalam graph tersebut tidak memiliki orientasi arah

.graph-ir-1

Graph Berarah (directed graph)

Graph yang setiap sisinya memiliki orientasi arah disebut sebagai graph berarah. Sisi berarah dalam graph ini dapat dinamakan sebagai busur  Lain halnya dengan graph tak-berarah, urutan pasangan simpul disini sangat diperhatikan karena dapat menyatakan hal yang berbeda. contoh dari graph berarah yang memiliki sisi-sisi dengan orientasi arah (busur).

Graph

Minimum Spanning Tree

minimum spanning tree adalah tree yang terkoneksi, undirected graph. mereka terhubung dengan semua vertices bersama dengan total weight yang minimum oleh semua edge.

300px-Minimum_spanning_tree.svg

Ada 3 cara mencari Minimum Spanning Tree (MST)

Algoritma Prim

Pada algoritma prim, dimulai pada vertex yang mempunyai sisi (edge) dengan bobot terkecil.

Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang bersisian dengan sebuah simpul di T, sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle.

prism-algorithm

Algoritma Kruskal

Pada algoritma kruskal, sisi (edge) dari Graph diurut terlebih dahulu berdasarkan bobotnya dari kecil ke besar.

Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle.

  • T masih kosong
  • pilih sisi (i,j) dengan bobot minimum
  • pilih sisi (i,j) dengan bobot minimum berikutnya yang tidak membentuk cycle di T, tambahkan (i,j) ke T
  • Ulangi langkah 3 sebanyak (n-2) kali.
  • Total langkah (n-1) kali

2000px-Kruskal_Algorithm_5.svg

Algoritma Dijkstra

(dinamai menurut penemunya, seorang ilmuwan komputer, Edsger Dijkstra), adalah sebuah algoritma rakus (greedy algorithm) yang dipakai dalam memecahkan permasalahan jarak terpendek (shortest path problem) untuk sebuah graf berarah (directed graph) dengan bobot-bobot sisi (edge weights) yang bernilai tak-negatif.

Misalnya, bila vertices dari sebuah graf melambangkan kota-kota dan bobot sisi (edge weights) melambangkan jarak antara kota-kota tersebut, maka algoritma Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota.

Input algoritma ini adalah sebuah graf berarah yang berbobot (weighted directed graph) G dan sebuah sumber vertex s dalam G dan Vadalah himpunan semua vertices dalam graph G.

Setiap sisi dari graf ini adalah pasangan vertices (u,v) yang melambangkan hubungan dari vertex u ke vertex v. Himpunan semua tepi disebut E.

maxresdefault

Pertemuan 8

Pada pertemuan kali ini Kami belajar tentang Heap, Tries, Dan Hash Table

HEAP

Heap memiliki 3 Jenis:

-Min Heap : Heap yang rootnya memiliki anak terkecil dan jika anaknya ada yang lebih besar akan ditukar dengan root

Min-heap

-Max Heap : Heap yang rootnya memiliki anak terbesar dan jika ada anak yang lebih besar akan ditukar dengan root

400px-Min-max_heap

-Min-Max Heap : Heap yang rootnya selang seling antara Max heap dan Min heap

minmax

TRIES

Tries adalah prefix tree

aplikasi trie:

-auto complete text pada pencarian

-spell checker pada digital dictionary

Tries

Contoh TRIES yang mengantung huruf:

  1. ALGO
  2. API
  3. BOM
  4. BOS
  5. BOSAN
  6. BOR

HASHING

Hash Table adalah sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik untuk setiap record (baris) menjadi angka (hash) lokasi record tersebut dalam sebuah tabel.

Keunggulan dari struktur hash table ini adalah waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka hash lokasi penyimpanannya. Akan tetapi pada kenyataannya sering sekali ditemukan hash table yang record-recordnya mempunyai angka hash yang sama (bertabrakan).

Hash Table

Hash yang menggunakan Tabel/Array

2000px-Hash_table_5_0_1_1_1_1_1_LL.svg

Linear Probing

String yang dimasukkan ke array selanjutnya

img989

Pertemuan 7 Data Structure

RED BLACK TREE

Red Black Tree adalah Balanced tree seperti AVL tetapi berbeda terdapat nodes yang berwarna berbeda.

  • Semua node mimiliki 2 warna, hitam atau merah
  • Semua External node selalu berwarna hitam
  • Semua new node berwarna merah
  • Root pasti hitam
  • Tidak boleh ada node Merah memiliki Anak atau parent Merah

2000px-Red-black_tree_example.svg

2-3 TREE

dalam bidang computer science, 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.

Image52

Pertemuan 6, 11 Mei 2016

Pada pertemuan kali ini kami membahas Balanced Binary Tree dan kami juga didatangi oleh Dosen Tamu bernama Selvakumar Manickam, Senior Lecture of University Science of Malaysia . Balanced Binari Tree memiliki 2 macam antara lain AVL dan Red-Black Tree, namun pada pertemuan kali ini kami hanya membahas soal AVL.

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.
 Picture1
Merupakan AVL Tree
Bukan AVL Tree Karena Balance Factor 2 sedangkan Maksimal 1
Cara menentukan Height dan Balance Factor :

Height :
– Jika node (root) tidak memiliki subtree heightnya = 0
– Jika node adalah leaf, height =  1
– Jika internal node, maka height =  height tertinggi dari anak + 1

Balance Factor :
-selisih height antara anak kiri dan kanan, jika tidak memiliki anak, dianggap 0.

Single Rotation

Single rotasi (rotasi 1x) dilakukan apabila searah, left-left atau right-right
Gambaran Single Rotation :Picture3

Double Rotation

Double rotasi (rotasi 2x) dilakukan apabila searah, left-right atau right-left
Gambaran Double Rotation :

Picture1 (1)

Deletion

Operasi penghapusan node sama seperti pada Binary Search Tree, yaitu node yang dihapus digantikan oleh node terbesar pada subtree kiri atau node terkecil pada subtree kanan. Jika yang dihapus adalah leaf, maka langsung hapus saja. Namun jika node yang dihapus memiliki child maka childnya yang menggantikannya. Namun setelah operasi penghapusan dilakukan, cek kembali apakah tree sudah seimbang atau belum, jika belum maka harus diseimbangkan kembali. Cara menyeimbangkannya pun sama seperti insertion.

Picture4 Picture5 Picture1 (2) Picture2 (1)

Untuk Sesi kedua, Selvakumar Manickam melakukan Review yang dapat dilihat di :

Pertemuan 1

Pertemuan 4

Pertemuan 5

Data Structure Pertemuan 5, 30 Maret 2016

Binary Search Tree

Binary Search Tree adalah Binary Tree yang dipergunakan untuk mencari data dan lebih mudah untuk komputer mencarinya. Binary Search Tree memiliki 1 root inti dan node node seperti Binary Tree tetapi node disebelah kiri pasti lebih kecil dan disebelah kanan dari node atau tree tersebut pasti lebih besar.

2000px-Unbalanced_binary_tree.svg

Operation dalam Binary Search Tree :

  1. insert(x) = Memasukkan nilai X
  2. Delete(x) = Menghapus nilai X
  3. Find(x) = Mencari Nilai sebuah x

Mencari Nilai sebuah x dimulai dari Root, Jika Root memiliki Value sesuai yang di cari, langsung sukses. jika tidak,

Jika X<Root, Mencari Ke Kiri

Jika X>Root, Mencari Ke Kanan

 

 

Data Structure Pertemuan 4, 23 Maret 2016

Binary Tree : Sebuah pohon data structure yang memiliki paling banyak 2 anak / keturunan.

Definisi Binary Tree :

  1. Akar dari Tree disebut Root dan akar tersebut merupakan parents (orang tua) dari sebuah tree.
  2. Edges adalah penghubung antar nodes.
  3. Node yang tidak memiliki anak / keturunan disebut Leaf
  4. Nodes yang mempunyai parent’s node yang sama disebut siblings(saudara)
  5. Total subtree dalam sebuah Tree disebut Degrees
  6. Depth/Kedalaman adalah degree dari sebuah Tree
  7. Parent’s Tree maksimal memiliki 2 subtree/anak
  8. Kedalaman/Depth sering disebut dengan Level

Jenis-jenis Binary Tree :

  1. Perfect Binary Tree : Binary tree yang memiliki anak/keturunan yang sama antara Kiri dan Kanan dan memiliki kedalaman (Depth) yang sama
  2. Complete Binary Tree : Binary Tree yang mirip seperti perfect tapi terdapat perbedaan depth antara kiri dan kanan
  3. Skewed Binary Tree : Setiap node hanya memiliki 1 anak jadi seperti Binary Tree kanan / sebaliknya
  4. Balanced Binary Tree : Perbedaan Depth antara node kiri dan kanan maksimal 1 Level

Rumus pada Binary Tree :

  1. Tinggi minimum dari binary tree dengan jumlah node n  -> 2Log(n)
  2. Jumlah node maksimum pada suatu level di Binary Tree  -> 2k
  3. Tinggi maksimum dari Binary Tree adalah -> n-1
  4. Jumlah node maksimum dari Binary Tree adalah -> 2h+1-1

Data Structure Pertemuan 3, 16 Maret 2016

Linked List dibagi menjadi 2, Stack dan Queue.

  1. Stack : Tumpukan, Last In First Out (LIFO) yang berarti terakhir yang masuk yang dapat duluan keluar.
  2. Queue : Antrian, First in First Out (FIFO) yang berarti pertama yang masuk yang pertama juga yang keluar.

Data yang diinput disebut Push / Enstack Enqueue.

Data yang dioutput disebut Pop / Destack Dequeue.

Contoh Array

c-array-1d-ex

Contoh Linked List

474px-CPT-LinkedLists-addingnode.svg

Stack memiliki 2 variable :

  1. Max -> Batas maksimal stack.
  2. Top -> Max stack saat ini.

Tiap node dalam Linked List Stack memiliki 2 bagian node :

  1. Menyimpan isi data.
  2. Yang menyimpan address dari node selanjutnya dan berlanjut.

Pointer START di dalam sebuah Linked List merupakan Top, bila top kosong TOP = NULL.

Stack Operations

  1. pop() : Melepas / mengeluarkan item pada TOP sebuah stack.
  2. push(x) : Menambah object atau isi stack dan menjadi TOP sebuat Linked List.
  3. top() : kembali ke Atas / TOP sebuah stack.

Stack Applications

  1. Prefix -> 3 4 1 2 3 * + + – (Operand Operand Operator)
  2. infix -> 1 + (3*2) / 4 (Operand Operator Operand)
  3. Postfix -> + 3 * 2 3 (Operator Operand Operand)

Why We need Prefix / Postfix notation?

  1. Tidak membutuhkan tanda “(  )” untuk mendahulukan operator.
  2. Lebih mudah bagi komputer untuk membaca prefix dan postfix daripada infix.
  3. Lebih mempercepat kerja suatu program.

Depth First Search (DFS)

Algoritma untuk mencari sebuah pohon atau grafik yang dimulai dari atas pohon grafik dan fokus ke bawahnya / keturunannya baru melihat kanan dan kirinya.

Breadth First Search (BFS)

Algoritma untuk mencari sebuah pohon atau grafik yang dimulai dari atas pohon grafik dan fokus ke samping lalu kebawah.

 

Data Structure 2 Maret 2016, bersama Guest Lecturer, Bong Defendy

Pertemuan pada tanggal 2 Maret 2016, kelas kami didatangkan Guest Lecturer bernama Bong Defendy yang juga merupakan alumni Bina Nusantara Jurusan TI TI tahun 2007, Beliau adalah seorang TI profesional dan technopreneur yang sudah berpengalaman di bidang TI.

Pada pertemuan ini Guest Lecturer membagikan cerita dan banyak saran dan masukan untuk kami jurusan TI dalam memilih Peminatan maupun nanti di dunia kerja.

BIG DATA

adalah buzzword atau menangkap-frase yang digunakan untuk menggambarkan volume besar, baik dari data terstruktur dan tidak terstruktur yang begitu besar sehingga sulit untuk memproses dengan menggunakan teknik database dan perangkat lunak biasa. Dalam kebanyakan kejadian data perusahaan yang terlalu besar atau bergerak terlalu cepat atau melebihi kapasitas pengolahan saat ini. Big data memiliki potensi untuk membantu perusahaan meningkatkan operasi, membuat lebih cepat dan keputusan yang lebih cerdas.

Cloud

adalah metafora dari internet, sebagaimana awan yang sering digambarkan di diagram jaringan komputer. Sebagaimana awan dalam diagram jaringan komputer tersebut, awan (cloud) dalam Cloud Computing juga merupakan abstraksi dari infrastruktur kompleks yang disembunyikannya.

Augmented Reality(AR)

adalah teknologi yang menggabungkan benda maya dua dimensi dan ataupun tiga dimensi ke dalam sebuah lingkungan nyata tiga dimensi lalu memproyeksikan benda-benda maya tersebut dalam waktu nyata. Tidak seperti realitas maya yang sepenuhnya menggantikan kenyataan, namun Augmented Reality hanya menambahkan atau melengkapi kenyataan.

Beberapa jenis Augmented Reality adalah :

  1. Face Tracking
  2. 3D Object Tracking
  3. Motion Tracking
  4. GPS base Tracking

Raspberry Pi

sering juga disingkat dengan nama Raspi, adalah komputer papan tunggal (Single Board Circuit /SBC)yang memiliki ukuran sebesar kartu kredit. Raspberry Pi bisa digunakan untuk berbagai keperluan, seperti spreadsheet, game, bahkan bisa digunakan sebagai media player karena kemampuannya dalam memutar video high definition. Raspberry Pi dikembangkan oleh yayasan nirlaba, Rasberry Pi Foundation yang digawangi sejumlah developer dan ahli komputer dari Universitas Cambridge, Inggris.

LATEX

merupakan bahasa markup atau sistem persiapan untuk membuat dokumen. Nama LaTeX itu hanya mengacu pada bahasa penulisan yang digunakan pada sebua dokumen, untuk membuat dokumen dalam format LaTeX sebuah file berformat .tex harus dibuat menggunakan semacam text editor. Walaupun banyak ragam text editor, hanya beberapa saja yang dapat menulis menggunakan format LaTeX.

SASS

adalah sebuah pengembangan dari CSS3 dengan menambahkan Nested Rules, variables, mixins, selector inheritance. Berkerja sebagai penerjemah css dengan struktur yang lebih baik. Dan SASS ini dibangun menggunakan bahasa Ruby.

Contact Bapak Bong Defendy :

  • Email : me@defendy.com
  • Facebook : bong.defendy
  • Twitter : @bdefendy

Rangkuman Data Structure Pertemuan 1 & 2

Data Struktur dibagi menjadi 2:

Array dan Linked list

Array memiliki static Memory allocation sedangkan Linked list mempunyai dynamic memory allocation.

Array memiliki bentuk berurut yand awal dari index dimulai dari 0.

Picture1

sedangkan bentuk Linked List Tersebar random dengan awalan yang di sebut Head dan akhiran yang disebut Tail.

Picture2

Ada 3 cara memasukkan array:

1.Menginialisasi element.

2.Mengimput Value.

3.Assigned Array.

Operasi di array terdiri dari:

  • Traversal
  • Insertion
  • Searching
  • Deletion
  • Merging
  • Sorting

2 operator paling penting digunakan dengan pointer:

  1. & = Adrress operator.
  2. * = Perbedaan operator (deferencing operator).

Array:

  • Koleksi elemen data yang mirip.
  • Semua data memiliki data type yang sama.
  • Memory disimpan dalam consecutive momory location (index).
  • Array dimulai dari 0.

Linked List:

  • Kumpulan Nodes.
  • Tidak menyimpan value dengan memory allocation yang berurutan.
  • Dapat diakses hanya pada saat tertentu.
  • Dimulai dari head (awal) berakhir di tail (akhir).

Academic Orientation

Di Academic Orientation, saya menjadi mengerti apa yang akan saya pelajari dalam 3 tahun kedepan dan saya dipersiapkan untuk mengerti dahulu semua yang akan nanti saya pelajari, dan saya senang dengan metode yang disampaikan oleh BINUS karena metode tersebut menurut saya sangat baik dan dapat dimengerti dengan cepat. Sebelum masuk dalam AO saya dulu pernah belajar dalam coding tapi saya belum mengerti banyak tentang itu dan pelajaran coding yang diberikan BINUS mudah dimengerti dan semoga saya ke depannya dapat mencintai coding karena coding adalah bagian hidup dari IT(Computer Science) :D. Saya sangat merasa beruntung dapat diterima di BINUS UNIVERSITY.