Data Structure 4: Tree, Binary Tree and Expression Tree

  1. 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:

  1. PERFECT binary tree:
    Binary tree yang setiap level nya berada dalam Height/Depth yang sama.
  2. 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.
  3. SKEWED binary tree:
    Binary tree yang setiap node nya memiliki 1 child.
  4. 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 :

    1. Memiliki format dokumen yang terstruktur sehingga membuat dokumen terlihat sangat profesional dan sempurna.
    2. Segala jenis formula matematis dapat dituliskan dengan mudah.
    3. List gambar, List tabel, Daftar Pustaka, footnote bahkan daftar isi dapat secara otomatis dibuat oleh program.
    4. LaTeX melatih dan memaksa pengguna untuk membuat dokumen dengan struktur yang baik dan benar, sehingga tidak terjadi kerancuan dalam penulisan.

    Kerugian menggunakan LaTeX:

    1. Sangat sulit untuk menuliskan dokumen yang tidak terstruktur.
    2. 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:

  1. Array 1 Dimensi:
    • Deklarasi: int arr[5]; // Syntax: tipe nama[ukuran];
    • Akses: arr[1] = 1; 
  2. Array 2 Dimensi:

    • Deklarasi: int arr[3][2]; // Syntax: tipe nama[ukuran1][ukuran2];
    • Akses: arr[1][1] = 1; 
  3. 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

images

  • 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.