Jumat, 13 Februari 2015

Pembahasan Soal Tree (REVISI)

Pembahasan Soal Tree
[Revisi]


Tree 1




Tree 2



Tree 3




Tentukan root masing masing tree
tentukan leaf masing masing tree
rubahlah menjadi binary tree
tentukan Height dan Width
dari ke 3 tree tersebut rubahlah menjadi binary tree
dari soal diatas bentuklah 3 aktifitas dalam binary tree
Pre order
In order
Post order

jawaban

1. tree 1 = A, tree 2 = 1, tree 3 =A1

2.tree 1 = (W,P,R,S,Z,H,I,J,U,V,X,L,Y,N,O)
   tree 2 = (3,4,7,8,9,10)
   tree 3 = (A4,A5,A6)

3. Tree 1



 

Tree 2






Tree 3





4. Tree 1 Height = 6
               Widht = 15

    Tree 2 Height = 5
               Width = 6

    Tree 3 Height = 4
               Width = 3



5. 




6. Tree 1
    Pre order Transversal   = A B W G H I P Q R S T Z C J K U V X D L E M N Y F O
    In Order Transversal    = I H G P Q R S T Z A B W C J K U V X D L E M N Y F O
    Post Order Trensversal =  I Z T S R Q  P G W B X V U K N Y M L J O FE D C A

  Tree 2
    Pre order Transversal   = 1 2 3 4 5  6 7 8 9 10
    In Order Transversal    = 7 6 8 9 10 1 4 5 3 2
    Post Order Trensversal =  7 6 8 9 10 4 5 3 2 1

 Tree 3
    Pre order Transversal   = A1 A2 A3 A4 A5 A6
    In Order Transversal    = A6 A5 A4 A3 A1 A2

    Post Order Trensversal = A6 A5 A4 A3 A2 A1

Tree


Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :

a) Prodecessor : node yang berada diatas node tertentu.

b) Successor : node yang berada di bawah node tertentu.

c) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.

d) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.

e) Parent : predecssor satu level di atas suatu node.

f) Child : successor satu level di bawah suatu node.

g) Sibling : node-node yang memiliki parent yang sama dengan suatu node.

h) Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua        karakteristik dari tree tersebut.

i) Size : banyaknya node dalam suatu tree.

j) Height : banyaknya tingkatan/level dalam suatu tree.

k) Root : satu-satunya node khusus dalam tree yang tak punya predecssor.

l) Leaf : node-node dalam tree yang tak memiliki seccessor.

m) Degree : banyaknya child yang dimiliki suatu node.




Beberapa jenis Tree yang memiliki sifat khusus :


1. Binary Tree


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




Jenis-jenis Binary Tree :

a. Full Binary Tree
 



Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.

 



b. Complete Binary Tree

Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child


c. Skewed Binary Tree

 


yakni Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child

Langkah-Langkahnya Traverse :

 PreOrder : Cetak isi node yang dikunjungi, kunjungi Left Child, kunjungi Right Child.
 InOrder : Kunjungi Left Child, Cetak isi node yang dikunjungi, kunjungi Right Child.
 PostOrder : Kunjungi Left Child, Kunjungi Right Child, cetak isi node yang dikunjungi.


Untuk lebih jelasnya perhatikan contoh operasi-operasi pada Binary Tree berikut ini :






 


2. Binary search Tree

Adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil daripada right child dan parentnya. Juga semua right child harus lebih besar dari left child serta parentnya. Binary seach tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching / pencarian node tertentu dalam binary tree. Contoh binary search tree umum :



Graph



Graf adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan sekumpulan garis (sisi). Graph dapat digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Representasi visual darigraph adalah dengan menyatakan objek sebagai noktah, bulatan atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis (Edge).

G = (V, E)

Dimana

G = Graph

V = Simpul atau Vertex, atau Node, atau Titik

E = Busur atau Edge, atau arc



Graf merupakan suatu cabang ilmu yang memiliki banyak terapan. Banyak sekali struktur yang bisa direpresentasikan dengan graf, dan banyak masalah yang bisa diselesaikan dengan bantuan graf. Seringkali graf digunakan untuk merepresentasikan suaru jaringan. Misalkan jaringan jalan raya dimodelkan graf dengan kota sebagai simpul (vertex/node) dan jalan yang menghubungkan setiap kotanya sebagai sisi (edge) yang bobotnya (weight) adalah panjang dari jalan tersebut.

Ada beberapa cara untuk menyimpan graph di dalam sitem komputer. Struktur data bergantung pada struktur graph dan algoritma yang digunakan untuk memmanipulasi graph. Secara teori salah satu dari keduanya dapat dibedakan antara struktur list dan matriks, tetapi dalam penggunaannya struktur terbaik yang sering digunakan adalah kombinasi keduanya.

• Graph tak berarah (undirected graph atau non-directed graph) :

• Urutan simpul dalam sebuah busur tidak dipentingkan. Misal busur e1 dapat disebut busur AB atau BA

• Graph berarah (directed graph) :

• Urutan simpul mempunyai arti. Misal busur AB adalah e1 sedangkan busur BA adalah e8.

• Graph Berbobot (Weighted Graph)

• Jika setiap busur mempunyai nilai yang menyatakan hubungan antara 2 buah simpul, maka busur tersebut dinyatakan memiliki bobot.

• Bobot sebuah busur dapat menyatakan panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan perhari yang melalui sebuah jalan, dll.

Istilah-istilah dalam graf

Kemudian terdapat istilah-istilah yang berkaitan dengan graphyaitu:

a. Vertex

Adalah himpunan node / titik pada sebuah graph.

b. Edge

Adalah himpunan garis yang menghubungkan tiap node / vertex.

c. Adjacent

Adalah dua buah titik dikatakan berdekatan (adjacent) jika dua buah titik tersebut terhubung dengan sebuah sisi. Adalah Sisi e3 = v2v3 insident dengan titik v2 dan titik v3, tetapi sisi e3 = v2v3tidak insident dengan titik v1 dan titik v4.

Titik v1 adjacent dengan titik v2 dan titik v3, tetapi titik v1 tidakadjacent dengan titik v4.



Istilah-istilah dalam graf

Kemudian terdapat istilah-istilah yang berkaitan dengan graphyaitu:

a. Vertex

Adalah himpunan node / titik pada sebuah graph.

b. Edge

Adalah himpunan garis yang menghubungkan tiap node / vertex.

c. Adjacent

Adalah dua buah titik dikatakan berdekatan (adjacent) jika dua buah titik tersebut terhubung dengan sebuah sisi. Adalah Sisi e3 = v2v3 insident dengan titik v2 dan titik v3, tetapi sisi e3 = v2v3tidak insident dengan titik v1 dan titik v4.

Titik v1 adjacent dengan titik v2 dan titik v3, tetapi titik v1 tidakadjacent dengan titik v4.



d. Weight

Adalah Sebuah graf G = (V, E) disebut sebuah graf berbobot(weight graph), apabila terdapat sebuah fungsi bobot bernilai real W pada himpunan E,

W : E ® R,

nilai W(e) disebut bobot untuk sisi e, " e Î E. Graf berbobot tersebut dinyatakan pula sebagai G = (V, E, W).

Graf berbobot G = (V, E, W) dapat menyatakan

* suatu sistem perhubungan udara, di mana

· V = himpunan kota-kota

· E = himpunan penerbangan langsung dari satu kota ke kota lain

· W = fungsi bernilai real pada E yang menyatakan jarak atau ongkos atau waktu

* suatu sistem jaringan komputer, di mana

· V = himpunan komputer

· E = himpunan jalur komunikasi langsung antar dua komputer

· W = fungsi bernilai real pada E yang menyatakan jarak atau ongkos atau waktu

e. Path

Adalah Walk dengan setiap vertex berbeda. Contoh, P = D5B4C2A Sebuah walk (W) didefinisikan sebagai urutan (tdk nol) vertex & edge. Diawali origin vertex dan diakhiriterminus vertex. Dan setiap 2 edge berurutan adalah series. Contoh, W = A1B3C4B1A2.

f. Cycle

Adalah Siklus ( Cycle ) atau Sirkuit ( Circuit ) Lintasan yang berawal dan berakhir pada simpul yang sama

3. Representasi Graf

Dalam pemrograman, agar data yang ada dalam graph dapat diolah, maka graph harus dinyatakan dalam suatu struktur data yang dapat mewakili graph tersebut. Dalam hal ini graph perlu direpresentasikan kedalam bentuk array dan dimensi yang sering disebut matrix atau direpresentasikan dalam bentuk linked list. Bentuk mana yang dipilih biasanya tergantung kepada efisiensi dan kemudahan dalam membuat program. Berikut ini beberapa bentuk representasi graph:

Representasi Graph dalam bentuk Matrix:

1. Adjacency Matrik Graf Tak Berarah



Matrik yang digambarkan pada gambar 1b merupakan representasi dalam bentuk Adjacency Matrik dari graf yang digambarkan pada gambar 1a. Beberapa hal yang dapat dilihat atau dapat diterangkan pada Adjacency Matrik tersebut adalah sebagai berikut :

1. Matrik yang terbentuk adalah matrik bujur sangkar n x n, dimana n = jumlah simpul yang ada dalam graf tersebut. Matrik ini menyatakan hubungan antara simpul satu dengan simpul lainnya.

2. Matrik yang terbentuk adalah matrik simetris dengan sumbu simetris adalah diagonal dari titik kiri atas ke titik kanan bawah.

3. Data yang tedapat baik dalam baris maupun kolom, dapat menyatakan degree sebuah simpul. Contoh : baik pada baris D maupun kolom D jumlah angka 1 nya adalah 3 buah, dimana jumlah ini menyatakan degree simpul D.



2. Adjacency Matrik Graf Berarah



Matrik yang digambarkan pada gambar 2b merupakan representasi dalam bentuk Adjacency Matrik dari graf yang digambarkan pada gambar 2a. Beberapa hal yang dapat dilihat atau dapat diterangkan pada Adjacency Matrik tersebut adalah sebagai berikut :

1. Matrik yang terbentuk adalah matrik bujur sangkar n x n, dimana n = jumlah simpul yang ada dalam graf tersebut. Matrik ini menyatakan hubungan antara simpul satu dengan simpul lainnya.

2. Matrik yang terbentuk mungkin simetris mungkin juga tidak simetris. Menjadi

Simetris bila hubungan antara dua buah simpul (v1 dan v2) terdapat busur dari

v1 ke v2 dan juga sebaliknya.

3. Hal pokok yang dinyatakan oleh matrik ini adalah : busur yang ’keluar’ dari suatu simpul. Dengan demikian, data yang terdapat dalam suatu baris, dapat menyatakan outdegree simpul yang bersangkutan.

Contoh : Jumlah elemen yang nilainya = 1 pada baris B ada 3 elemen,ini menyatakan jumlah outdegree simpul B adalah 3 buah.

4. Data yang terdapat dalam suatu kolom, dapat menyatakan indegree simpul bersangkutan.

Contoh : Jumlah elemen yang nilainya 1 pada kolom B ada 2 elemen, ini menyatakan indegree simpul B adalah 2 buah.


3. Adjacency Matrik Graf Berbobot Tak Berarah



Nilai yang ada dalam tiap elemen matrik, menyatakan bobot busur yang menghubungkan dua buah simpul yang bersangkutan. Untuk dua buah simpul yang tidak berhubungan langsung oleh sebuah busur, maka dianggap dihubungkan oleh sebuah busur yang nilai bobotnya tidak terhingga. Dalam pemograman, karena keperluan algoritma, maka dari total bobot seluruh busur yang ada atau yang mungkin ada.

Contoh: pada gambar 3a simpul A dan C tidak berhubungan langsung melalui sebuah busur, maka untuk elemen matrik yang bersangkutan diisi dengan nilai 999 karena nilai 999 dalam kasus ini cukup mewakili nilai tidak terhingga.



Representasi graf dalam bentuk Linked List

1. Adjacency List



Bila ingin direpresentasikan dalambentuk linked list, dapat diilustrasikan secara sederhana seperti gamabar 4b. Dari ilustrasi sederhana tersebut terlihat ada 5 buah simpul A,B,C,D,dan E yang dibariskan dari atas kebawah seperti pada gambar 4a. Kemudian dari masing-masing simpul ’keluar’ pointer kearah kanan yang menunjuk simpul-simpul lain. Salah satu contoh, yang dapat dilihat pada gambar 4b dimana A menunjuk simpul B dan simpul D.



Dalam Adjacency List, kita perlu membedakan antara simpul-vertex dan simpul-edge. Simpul-vertex untuk menyatakan simpul atau vertex, dan simpul-edge untuk menyatakan hubungan antar simpul yang biasa disebut busur. Struktur keduanya bisa sama, bisa juga tidak sama,tergantung kebutuhan.Untuk memudahkan pembuatan program, struktur kedua macam simpul dibuat sama seperti yang digambarkan pada gambar 5c. Yang membedakan antara simpul-vertex dan simpul-edge, adalah anggapan terhadap simpul tersebut.Dalam contoh ini, terlihat struktur simpul dibuat terdiri dari 3 elemen. Satu elemen untuk INFO, dua elemen untuk pointer.pointer kiri (left) dan pointer kanan (right)

Belajar Infix, Postfix, Prefix





Notasi INFIX, PREFIX, POSTFIX

1.Notasi Infix
Contoh : X + Y

Operator ditulis diantara operand
Sebagai contoh A*(B+C)/D yang biasa berarti “tambahkan B dan C terlebih   dahulu, dan kalikan dengan A. Setelah itu bagi dengan D”.
Notasi Infix mebutuhkan inforasi ekstra :
Rule mengenai operator precedence (dari prioritas tertinggi)
Assosiatives dan tanda kurung ()






2.Notasi Postfix

“Reserve Polish Nation” = XY+
Operator ditulis setelah operand : ABC+*D/
Operator selalu urut dari kiri ke kanan, dan kurung tidak dapat  dipergunakan untuk mengubah urutan  opearsi.Contoh : pada notasi di atas, tanda + dikerjakan terlebih dahulu sebelum *.
.Jika bertemu operator, maka operasi aritmetik akan segera mungkin dikerjakan. Contoh : Jika ditemukan +, maka B dan C akan segera dijumlahkan.
.Setelah itu A akan dikalikan dengan hasil B + C, dan hasilkeseluruhan akan dibagi dengan D.


3.Notasi Prefix

“Polish Notation” : + x y
Operator ditulis sebelum operand. Pada contoh sebelumnya /*A+BCD
Sebagaimana Postfix, operator dievaluasi dari kiri ke kanan.
Operator  akan mengambil dua nilai operand terdekat pada kanan operator.
Meski pada prefix operator dievaluasi dari kiri kekanan, namun prefix  menggunakan nilai pada bagian   kanan. Jika nilai operand melibatkan  komputasi, maka akan mengubah urutan operator.

 

 




Algoritma Kalkulasi Postfix (Binary)
Selama ada token pada input
-Ambil token berikutnya dari input
-Jika token adalah operand  PUSH kedalam Stack

Selain itu token adalah operator



Contoh :
1.      A*(B+C) / (D-E), Notasi Postfix dan prefix






ABC+*DE-/, Infix dan Prefix







 Postfix