Selasa, 24 April 2018

Tree

Assalamualaikum.Wr.Wb

Hai kawan! Pada saat ini saya akan membahas mengenai "TREE"

Tree adalah kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layaknya struktur sebuah pohon. Struktur pohon adalah suatu cara merepresentasikan suatu struktur hirarkis (hubungan one to many) secara grafis yang mirip sebuah pohon,walaupun pohon tersebut hanya tampak sebagai kumpulan node-node dari atas ke bawah, Suatu struktur data yang tidak linier yang menggambarkan hubungan yang hirarkis (one to many) dan tidak linier antara elemen-elemennya.


Tree Statik adalah isi node-nodenya tetap karena bentuk pohonnya sudah ditentukan.
Tree Dinamik adalah isi node-nodenya berubah-ubah karena proses penambahan (insert) dan penghapusan (delete).


Node Root dalam tree adalah suatu node yang memiliki hirarkis tertinggi dan dapat juga memiliki node-node anak. Semua node dapat ditelusuri dari node root tersebut. Node Root adalah node khusus yang tercipta pertama kali. Node-node lain dibawah node root saling terhubung satu sama lain dan disebut subtree.



Terminologi Tree

1. Predecesor adalah node yang berada diatas node tertentu.
2. Successor adalah node yang berada dibawah node tertentu.
3. Ancestor adalah seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang       sama.
4. Descendant adalah seluruh node yang terletak setelah node tertentu dan terletak pada jalur yang
    sama.
5. Parent adalah predecessor satu level diatas suatu node.
6. Child adalah Successor satu level dibawah suatu node.
7. Sibling adalah node-node yang memiliki parent yang sama.
8. Subtree adalah suatu node beserta descendantnya.
9. Size adalah banyaknya node dalam suatu tree.
10. Height adalah banyaknya tingkatkan dalam suatu tree.
11. Root adalah node khusus yang tidak memiliki predecessor.
12. Leaf adalah node-node dalam tree yang tidak memiliki successor.
13. Degree adalah banyaknya child dalam suatu node.


Implementasi Tree
Contoh penggunaan struktur pohon :
1. Sisilah keluarga.
2. Parse Tree (pada compiler).
3. Struktur File.
4. Prebandingan.


Jenis-jenis Tree


1. Binary Tree adalah suatu tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.

Node pada binary tree.
1. Jumlah maksimum node pada setiap tingkat adalah 2n
2. Node pada binary tree maksimum berjumlah 2 n-1




Representasi binary tree pada array

1. Index dari array merepresentasikan atau menunjukkan nomor node.
2. Index ke-0 merupakan root.
3. Index dari left child adalah 2p + 1, dimana p = index dari parent.
4. Index dari right child adalah 2p + 2, dimana p = index dari parent.
5. Index dari parent adalah (p-1)/2.


Contoh binary tree:
Jika tanda panah kekanan maka menggunakan rumus 2p + 2 dan jika tanda panah kekiri maka menggunakan rumus 2p +1.







A = Root

B = 2p + 1
    = 2(0) + 1
    = 1

D = 2p + 1
    = 2(1) + 1
    = 3

E = 2p + 1
    = 2(2) + 1
    = 5

G = 2p + 1
    = 2(3) + 1
    = 7

H = 2p + 1
    = 2(5) + 1
    = 11

C = 2p + 2
    = 2(0) + 2
    = 2

F = 2p + 2
   = 2(2) + 2
   = 6

I = 2p + 2
  = 2(5) +2
  = 12

J = 2p + 2
  = 2(6) +2
  = 14

K = 2p + 2
    = 2(11) + 2
    = 24


Dari materi diatas, Semoga bermanfaat.

Wassalamualaikum.Wr.Wb

Senin, 23 April 2018

Graph

Assalamualaikum.Wr.Wb.

Hai kawan! Kembali lagi kita dalam pelajaran struktur data yang akan membahas mengenai "GRAPH".

Tahukah kamu apa itu graph ?

Graph adalah kumpulan dari simpul dan busur yang secara matematis dinyatakan sebagai :
G = (V,E)
Yaitu
G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
E = Busur atau Edge, atau arc


Pengertian dalam graph
1. Sebuah graph mungkin hanya terdiri dari satu simpul.
2. Sebuah graph belum tentu semua simpulnya terhubung dengan busur.
3. Semua graph mungkin mempunyai simpul yang tak terhubung dengan simpul yang lain.
4. Debuah graph mungkin semua simpulnya saling berhubungan.



Macam-macam graph


1. Graph tak berarah (undirected graph atau non-directed graph) yaitu urutan simpul dalam sebuah     busur tidak dipentingkan. Misalnya busur e1 dapat disebut busur AB atau BA.

Contoh graph tak berarah:



V terdiri dari v1,v2.v3.v4.v3
E terdiri dari e1,e2,e3,e4,e5,e6,e7
Dari contoh diatas merupakan graph tak berarah yaitu tidak ada arah (tanda panah) yang dapat diartikan busur e7 dapat disebut CD atau DC.


Contoh lainnya:
Sebuah graph tak berarah mempunyai 5 buah vertex yaitu P,Q,R,S,T. Vertex tersebut dihubungkan oleh 6 buah edge yang menghubungkan antara P-Q,P-S,Q-T,Q-R,R-S dan R-T.




2. Graph berarah (directed graph) yaitu urutan simpul mempunyai arti. Misalkan busur AB adalai e1 
    sedangkan busur BA adalah e2

Contoh graph berarah :


V terdiri dari v1,v2.v3.v4.v3
E terdiri dari e1,e2,e3,e4,e5,e6,e7
Dari contoh diatas merupakan graph berarah yaitu ada arah (tanda panah) yang dapat diartikan busur e4 dapat disebut AE sedangkan busur e2 dapat disebut EA.


3. Graph Berbobot (Weighted Graph) yaitu jika setiap busur mempunyai nilai yang menyatakan
    hubungan antara 2 buah simpul, maka busur tersebut dinyatakan memiliki bobot.
    Catatan: Bobot yang lebih besar belum berarti lebih panjang.

Contoh :
Sebuah graph berarah mempunyai 5 buah vertex yaitu P,Q,R,S,T. Jika graph tersebut adalah graph terarah dan berbobot, dengan nilai bobot dan arah sebagai daftar dibawah
Grambarkan bentuk graph tersebut.
PQ = 8
SR = 9
SQ = 5
QP = 6
RT = 8
TS = 4
RS = 9
QS = 2




Istilah pada graph



1. Incident
Jika e menupakan busur dengan simpul-simpulnya adalah v dan w yang ditulis e=(v,w) maka v dan w disebut "terletak" pada e, dan e disebut incident denagn v,w



2. Degree (derajat), indegree dan outdegree
Degree sebuah simpul adalah jumlah busur yang incident dengan simpul tersebut.
Indegree sebuah simpul pada graph berarah adalah jumlah busur yang kepalanya incident dengan simpul tersebut, atau jumlah busur yang "masuk" atau menuju simpul tersebut.
Outdegree sebuah simpul pada graph berarah adalah jumlah busur yang ekornya incident dengan simpul tersebut, atau jumlah busur yang "keluar" atau berasal dari simpul tersebut.



3. Adjacent
Pada graph tak berarah, 2 buah simpul disebut adjacent bila ada busur yang menghubungkan kedua simpul tersebut. simpul a dan b disebut adjacent.


Dari contoh diatas dapat disimpulkan
a adjacent b
b adjacent a

Pada graph berarah, simpul a disebut adjecent.
Dari contoh diatas dapat disimpulkan
a adjacent b
b tidak adjacent a



4. Successor dan Predecessor
Hanya terdapat pada graph berarah, bila simpul a adjacent dengan simpul b, makan simpul a adalah successor simpul b, dan simpul b adalah predecessor dari simpul a.


5. Path
Path atau disebut jalur adalah serangkaian simpul-simpul yang berbeda, yang adjacent secara berturut-turut dari simpul satu ke simpul berikutnya.

Contoh 1 :
Contoh 2 :

Contoh 3 :

Contoh 4 :



Representasi graph dalam bentuk matrik

1. Graph tak berarah




Maka :


Dapat disimpulkan bahwa
A - B dengan B - A sama dengan nilai 1
A - D dengan D - A sama dengan nilai 1
D - E dengan E - D sama dengan nilai 1
E - C dengan C - E sama dengan nilai 1
C - B dengan B - C sama dengan nilai 1
C - D dengan D - C sama dengan nilai 1
B - E dengan E - B sama dengan nilai 1



2. Graph berarah




Maka :


Dapat disimpulkan bahwa
B - C  dengan nilai 1
B - E  dengan nilai 1
C - B  dengan nilai 1
C - D dengan nilai 1
C - E dengan nilai 1
D - C dengan nilai 1
D - E  dengan nilai 1


3, Graph Berbobot

Jika ada bobot maka nilainya bobot tersebut  dan jika tidak ada bobot maka nilainya 0.



Maka :



Dapat disimpulkan bahwa
A - C  dengan nilai 22
A - E  dengan nilai 12
B - A  dengan nilai 50
C - D dengan nilai 15
C - F dengan nilai 30
D - B dengan nilai 25
D - E dengan nilai 22
E - D  dengan nilai 55


Dari materi diatas, Semoga Bermanfaat


Wassalamualaikum.Wr.Wb


Selasa, 27 Maret 2018

Stack dan Queue

Assalamualaikum.Wr.Wb.

Hai kawan! Pada pembelajaran struktur data kali ini kita akan memperlajari tentang Stack dan Queue.
Ayo simak pembahasan berikut ini.

Stack


Stack adalah tumpukan, suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja.

Dalam stack terdapat operasi-operasi yang digunakan seperti:
1. Top merupakan sebutan untuk elemen yang paling atas atau tumpukan paling akhir ditambahkan.
2. Bottom merupakan sebutan untuk elemen yang paling bawah atau tumpukan paling awal.
3. Push digunakan untuk mengisikan data dalam stacks
4. Pop digunakan untuk mengeluarkan data dari stacks.

Kita bisa memasukkan data atau push jika top nya belum terisi tetapi jika sudah terisi semua maka stacks sudah penuh.


















Lalu bagaimana cara mengerjakannya ?


Pertama kita memasukkan elemen.

Kita memasukkan elemen  A dan terletak pada isi[1]

















Kita memasukkan elemen  B dan terletak pada isi[2]















Kita memasukkan elemen  C dan terletak pada isi[3]


















Kita memasukkan elemen  D dan terletak pada isi[4]

















Kita memasukkan elemen  E dan terletak pada isi[5]


















Kedua kita mengeluarkan elemen

Kita mengeluarkan elemen  E dan terletak pada isi[5]


















Kita mengeluarkan elemen  D dan terletak pada isi[4]




Kita mengeluarkan elemen C dan terletak pada isi[3]


























Kita mengeluarkan elemen B dan terletak pada isi[2]



















Kita mengeluarkan elemen A dan terletak pada isi[1]



















Stack bersifat LIFO ( Last In Frist Out) yaitu data yang terakhir kali dimasukkan akan pertama kali dikeluarkan dari tumpukan tersebut. Keterbatasan dalam stack yaitu sering menunggu untuk elemen yang awal dimasukkan.


Contoh penggunaan stack:

1. Untuk mengecek kalimat polindrom ( Kalimat = Hasil )
2. Mengubah bilangan desimal ke bilangan biner


mengecek kalimat polindrom yaitu kata yang dibaca dari depan atau dari belakang sama.

Contohnya pada kata KAKAK



























Contoh lainnya LEVEL



















Mengubah bilangan desimal ke bilangan biner

1110 ® X2

Desimal 10 ® Biner 2




















17010 ® X8

Desimal 10 ® Oktal 8









Recursion












































factorial ( 0 )
Jadi jika n = 0 maka hasilnya 1


factorial (1)
1 * factorial (0)


Jadi 1 * 1 = 1


factorial (2)

2 * factorial (1)


Jadi 2 * 1 = 2


factorial (3)

3 * factorial (2)


Jadi 3 * 2 = 6



Queue

Queue atau Antrian yaitu suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung ( disebut dengan sisi belakang atau rear ) dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain(disebut dengan sisi depan atau front).


Enqueue yaitu memasukkan data
Dequeue yaitu mengeluarkan data


Queue bersifat FIFO (First In First Out) yaitu data yang pertama kali dimasukkan akan pertama kali dikeluarkan dari tumpukan tersebut.




























Contoh:


Enqueue

Memasukkan elemen A

A

Memasukkan elemen B

A
B

Memasukkan elemen C

A
B
C

Memasukkan elemen D

A
B
C
D

Memasukkan elemen E

A
B
C
D
E


Dequeue

Mengeluarkan elemen A

A
B
C
D
E

Mengeluarkan elemen B

B
C
D
E

Mengeluarkan elemen C

C
D
E

Mengeluarkan elemen D

D
E

Mengeluarkan elemen E


E





Dari pembahasan diatas, Semoga bermanfaat.

Wassalamualaikum.Wr.Wb.