Kamis, April 4

Stack , Queue , Binary Tree & AVL Tree

1. STACK

a. Definisi Stack

STACK ( tumpukan ) merupakan struktur data yang seolah – oleh terlihat seperti data yang terusun secara tumpuk dimana ada data yang terletak diatas data yang lainnya .

b. Stack dengan Array

Stack menggunakan array pengambil / penghapusan dielemen dalam stack yang dilaukan dengan memulainya dari elemen teratas

c. Double Stack dengan Array

Merupakan metode khusus yang dikembangkan untuk menghemat pemakaian memori dalam pembuatan dua stack dengan array . intinya adalah penggunaan hanya sebuah array untuk menampung dua buah stack.

d. Stack dengan Single Linked List

Menggunakan Single Lingked List dalam pembuatan stack mempunyai keunggulan dibandingkan dengan array yaitu dapat digunakan alokasi memori yang dinamis sehingga menhindari pemborosan memori.

2. Queue

a. Definisi Queue

Queue ( Antrian ) merupakan kumpulan daya yang seolah – olah terihat seperti ada data yang diletakkan disebelah data yang lainnya . Queue memiliki sifat FIFO.

b. Queue dengan Linear Array

Linear Array adalah suatu array yan dibuat seakan – akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar .

c. Queue dengan Circular Array

Circular Array merupakan suatu array yang dibuat seakan – akan merupakan sebuah lingkaran dengan titik awal an titik akhir saling bersebelahan jika array dalam keadaan kosong .

d. Queue dengan Double Lingked List

Merupakan Queue yang menggunakan Double Lingked List yang dapat menghemat memori dalam pengerjaan nya seperti pengertian Double Lingked List sebelumnya .

3.TREE

a) .Definisi Tree

Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang disebutRoot. Notde lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lain (disebut Subtree).

b).Jenis-Jenis Tree

*Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimaldua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut
tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.

-Jenis- Jenis Binary Tree :
  • Full Binary Tree
Jenis binary tree ini tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.
  • Complete Binary Tree
Jenis ini mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda dan setiap node kecuali leaf hanya boleh memiliki 2 child.
  • Skewed Binary Tree
Skewed Binary Tree adalah Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.
  • Implementasi Binary Tree
Binary tree dapat diimplementasikan dalam C++ dengan menggunakan double
linkedlist.

c). Binary Search Tree

Binary search tree merupakan binary yang memiliki sifat dimana semua left child harus lebih kecil dibandingkan dengan right child dan parentnya dan sebaliknya. Binary ini dibuat untuk mengatasi kelemahan binary tree biasa dalam pencarian node tertentu. .(http://sad1n1Rom. .blogspot.com/)

d).AVL Tree

AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1antara 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.

Array, Pointer, & Linked List

1.ARRAY

Array adalah suatu struktur yang terdiri dari sejumlah
elemen yang memiliki tipe datayang sama. Elemen-elemen
array tersusun secara sekuensial dalam memori komputer.

a)Array Satu Dimensi

Array Satu dimensi tidak lain adalah kumpulan
elemen-elemen identik yang tersusun dalam satu baris.
Elemen-elemen tersebut memiliki tipe data yang sama,
tetapi isi darielemen tersebut boleh berbeda.
Bentuk umum:
NamaArray[n] = {elemen0, elemen1, elemen2,.....,n};
n = jumlah elemen

b)Array Dua Dimensi

Array dua dimensi sering digambarkan sebagai sebuah matriks,
merupakan perluasandari array satu dimensi.
Bentuk umum:
NamaArray [m][n];
Atau
NamaArray [m][n] = { {a,b,..z},{1,2,...,n-1} };
Contoh:
double matrix[4][4];
bool papan[2][2] = { {true,false},{true,false} };
Pendeklarasian array dua dimensi hampir sama
dengan pendeklarasian array satudimensi,
kecuali bahwa array dua dimensi terdapat dua
jumlah elemen yang terdapat di dalam kurung
siku dan keduanya boleh tidak sama.

2. STRUCTURE

Structure merupakan sekumpulan elemen data yang dikelompokkan secara bersama-sama dengan sebuah nama. Elemen dari anggotanya dapat memiliki tipe data dan panjang yang berbeda
Deklarasi Structure
struct structure_name
{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
….
} object_names;

3.POINTER

Pointer merupakan tipe data berukuran 32 bit yang berisi satu
nilai yang berpadanandengan alamat memori tertentu.
Sebagai contoh, sebuah variabel P bertipe pointer bernilai 0x0041FF2A,
berarti P menunjuk pada alamat memori 0041FF2A. Pointer dideklarasikan
seperti variabel biasa dengan menambahkan tanda * (asterik) yang
mengawali nama variabel.
Bentuk Umum:
namaVariabel;
Contoh:
float * px;
Dalam pointer, terdapat 2 jenis operator yang biasa
digunakan :

a. Operator Alamat / Dereference Operator(&)

Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan.Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan tanda ampersand(&) yang dapat diartikan “alamat”.
Contoh :
Bil1 = &Bil2;
dibaca: isi variabel bil1 sama dengan alamat
bil2

b. Operator Reference (*)

Penggunaan operator (*), berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer.
Contoh :
Bil1=*Bil2;
dibaca : bil1 sama dengan nilai yang ditunjuk oleh bil2

4.LINKED LIST

Hanya menggunakan satu variabel pointer saja
untuk menyimpan banyak data dengan metode yang kita
sebut Linked List.
Linked list adalah sekumpulan elemen bertipe sama,
yang mempunyai keterurutan tertentu, yang setiap
elemennya terdiri dari dua bagian.
Bentuk Umum :
Typedef struct telmtlist
{
Infotype info;
Address next;
}elmlist;
infotype sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
next address dari elemen berikutnya (suksesor)
Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu
dengan notasi :
first(L)
Sebelum digunakan harus dideklarasikan terlebih dahulu :
#define first (L) (L)
Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :
Info (P) deklasrasi #define info (P) (P)-> info
Next (P) deklasrasi #define next (P) (P)-> next

a.Single Linked List

Linked List merupakan sekumpualan elemen bertipe sama ,
yang mempunyai urutan tertentu , yang setiap elemennya
terdiri dati dua bagian .Dimana jika dibandingkan dengan array

*LIFO ( Last In First Out)

Lifo adalah suatu metode pembuatan Linked List di mana data
yang masuk paling akhiradalah data yang keluar paling awal. Hal ini
dapat dianalogikan (dalam kehidupansehari-hari) dengan saat Anda menumpuk barang seperti digambarkan dibawah ini.Pembuatan
sebuah simpul dalam suatu linked list.

*FIFO (Fisrt In Fisrt Out)

FIFO adalah suatu metode pembuatan Linked List di mana
data yang masuk palingawal adalah data yang keluar paling awal juga.

b).Double Linked List

Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak
satu arah saja, maju/ mundur, atau kanan/kiri sehingga pencarian data pada single
linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan
tersebut, anda dapat menggunakan metode double linked list. Linked list ini dikenal
dengan nama Linked list berpointer Ganda atau Double Linked List.

c).Circular Double Linked List

Ini adalah double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya
menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu
lingkaran.

Senin, Februari 18

Sistem Sorting - Materi 2

    Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
 
    Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.

    Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Sedangkan sorting adalah sebuah proses merangkai benda dalam urutan tertentu dan/atau dalam himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:

  1. pengurutan: merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur.
  2. kategorisasi: pengelompokan dan pemberian label kepada benda dengan sifat yang serupa.
    Algoritma sorting terdiri dari beberapa algoritma seperti Bubble sort, Quick sort, Selection Sort, Insertion Sort, dan Merge Sort yang dimana setiap jenis sorting ini memiliki perbedaan satu sama lainnya. berikut ini merupakan pembahasan umum mengenai jenis-jenis atau algoritma sorting yang telah dijelaskan diatas :

      A.  Bubble Sort
            Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya   adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal (proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.

Gambar 2.1 Sistem Bubble Sort


      B. Selection Sort
           Algoritma sorting sederhana yang lain adalah Selection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.


Gambar 2.2 Sistem Selection Sort


     C. Insertion Sort
          Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan.  Dariproses iterasi, seperti biasa, terbentuklah bagian yang telah di-sorting dan bagian yang belum di-sorting.

Gambar 2.3 Sistem Insertion Sort
     D. Merge Sort
          Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebih berarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,

  1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan daripada sebuah list yang besar.
  2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yangl ebih sedikit daripada membentuk sebuah list terurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untuk masing-masing list jika keduanya sudahterurut.

Gambar 2.4 Sistem Merge Sort


     E. Quick Sort
          Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.

Gambar 2.5 Sistem Quick Sort

Matriks dan Set - Materi 1

Dalam matematika , matriks adalah kumpulan bilangan, simbol, atau ekspresi, berbentuk persegi panjang yang disusun menurut baris dan kolom. Bilangan-bilangan yang terdapat di suatu matriks disebut dengan elemen atau anggota matriks. Contoh matriks dengan 2 baris dan 3 kolom yaitu :
Gambar 1.1 Contoh Matriks


Pemanfaatan matriks misalnya dalam menemukan solusi sistem persamaan linear. Penerapan lainnya adalah dalam transformasi linear, yaitu bentuk umum dari fungsi linear, misalnya rotasi dalam 3 dimensi. Matriks seperti halnya variabel biasa dapat dimanipulasi, seperti dikalikan, dijumlah, dikurangkan dan didekomposisikan. Dengan representasi matriks, perhitungan dapat dilakukan dengan lebih terstruktur.
Gambar 1.2 Format Susunan Matriks 3 x 3
A. Operasi Matriks
     1. Operasi Jumlah dan Kurang Matriks :


Gambar 1.3 Operasi Penjumlahan dan Pengurangan Matriks
 




   2. Operasi Kali Matriks :

                     Gambar 1.4 Operasi Perkalian Matriks                  





B. Sifat Determinan

 Gambar 1.5 Sifat Determinan Matriks 1
 



Gambar 1.6 Sifat Determinan Matriks 2





Gambar 1.7 Sifat Determinan Matriks 3




n dilambangkan sebagai jumlah ordonya.

C. Invers Matriks 2x2

Gambar 1.8 Matriks 2x2





Di inverkan dengan cara :
Gambar 1.9 Invers Matriks 2x2