Algoritma Lanjut Pertemuan 9

Download Report

Transcript Algoritma Lanjut Pertemuan 9

1
Stack
(Tumpukan)
Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
Definisi
2



Kumpulan data yang seolaholah diletakkan di atas data
yang lain.
Operasi penambahan (penyisipan) dan pengambilan
(penghapusan)
prinsip pengolahannya adalah last-in first-out (LIFO).
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Ilustrasi Tumpukan
3
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA TUMPUKAN
4
Ada 2 operasi dasar tumpukan

1.
2.
Menyisipkan data (push)
Menghapus data (pop)
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Operasi Push
5
 Perintah push digunakan untuk memasukkan data
ke dalam tumpukan.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Operasi Pop
6
 Operasi pop adalah operasi untuk menghapus
elemen
 Terletak pada posisi paling atas dari sebuah
tumpukan
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA STACK – Cont.
7
1. buat stack (stack) - create

membuat sebuah stack baru yang masih kosong

spesifikasi:





tujuan : mendefinisikan stack yang kosong
input : stack
syarat awal : tidak ada
output stack : - (kosong)
syarat akhir : stack dalam keadaan kosong
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA STACK – Cont.
8
2. stack kosong (stack) - empty
 fungsi untuk menentukan apakah stack dalam
keadaan kosong atau tidak
 spesifikasi:





tujuan : mengecek apakah stack dalam keadaan
kosong
input : stack
syarat awal : tidak ada
output : boolean
syarat akhir : stack kosong bernilai true jika stack
dalam keadaan kosong
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA STACK – Cont.
9
3. stack penuh (stack) - full
 fungsi untuk memeriksa apakah stack yang ada
sudah penuh
 spesifikasi:





tujuan : mengecek apakah stack dalam keadaan penuh
input : stack
syarat awal : tidak ada
output : boolean
syarat akhir : stack penuh bernilai true jika stack
dalam keadaan penuh
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA STACK – Cont.
10
4. push (stack, info baru)
 menambahkan sebuah elemen kedalam stack.
 spesifikasi:





tujuan : menambahkan elemen, info baru pada stack
pada posisi paling atas
input : stack dan Info baru
syarat awal : stack tidak penuh
output : stack
syarat akhir : stack bertambah satu elemen
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
OPERASI PADA STACK – Cont.
11
5. pop (stack, info pop)

mengambil elemen teratas dari stack

spesifikasi:





tujuan : mengeluarkan elemen dari stack yang berada pada
posisi paling atas
input : stack
syarat awal : stack tidak kosong
output : stack dalam info pop
syarat akhir : stack berkurang satu elemen
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
CONTOH PEMANFAATAN STACK
12
 Notasi Infix Prefix
 Notasi Infix Postfix
Pemanfaatan stack antara lain untuk menulis ungkapan dengan
menggunakan notasi tertentu.
Contoh :
(A+B)*(C–D)
Tanda kurung selalu digunakan dalam penulisan ungkapan numeris
untuk mengelompokkan bagian mana yang akan dikerjakan terlebih
dahulu.
Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C
– D ) dan terakhir hasilnya akan dikalikan.
A+B*C–D
B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda
dengan hasil notasi dengan tanda kurung.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Notasi Prefix
13
 Cara penulisan ungkapan numeris.
 “ Notasi Polish “ atau “ Notasi Prefix”
 artinya : Operator ditulis sebelum kedua operand
yang akan disajikan.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Algoritma Infix Ke Prefix :
14
 Langkah 0:
 Baca ungkapan dalam notasi infix, misalnya S;
 Tentukan panjang ungkapan tersebut, misalnya N;
 Siapkan sebuah tumpukan kosong dan siapkan derajat masing
– masing operator.
 Misalnya : * dan / berderajat 2, + dan – berderajat 1 dan (
berderajat 0 ).
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
15
 Langkah 1:
 Dimulai dari I : N sampai 1, kerjakan langkah – langkah
berikut :
 R=S(I)
 Test nilai R . Jika R adalah :
Operand
: Langsung ditulis
 Kurung buka
: Pop dan tulis semua isi tumpukan sampai
ujung
tumpukan = ‘)‘, pop juga tanda ini tetapi tidak perlu
ditulis .

Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
16
Kurung tutup : Push kedalam tumpukan
 Operator : Jika tumpukan kosong, atau derajat R lebih
tinggi dibanding derajat ujung tumpukan, push operator
kedalam tumpukan. Jika tidak pop ujung tumpukan dan
tulis, kemudian ulangi perbandingan R dengan ujung
tumpukan, lalu R di push.

 Langkah 2: Jika akhir notasi infix telah tercapai
dan tumpukan masih belum kosong, pop semua isi
tumpukan dan tulis hasilnya.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Notasi Infix Prefix
Contoh :
Proses konversi dari infix ke prefix :
=(A+B)*(C–D)
=[+AB]*[-CD]
=*[+AB][-CD]
=*+AB-CD
Infix
Prefix
A+B
+AB
A+B–C
-+ABC
(A+B)*(C–D) *+AB–CD
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert
_5_sta...
17
18
 Contoh notasi prefix dari notasi infix :




Infix
A+B
A+B–C
(A+B)*(C–D)
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Prefix
+AB
-+ABC
*+AB–CD
Notasi Postfix
19
 Kebalikan notasi prefix
 Lebih dikenal dengan Notasi Polish Terbalik (
Reverse Polish Notation atau RPN).
 Dalam hal ini operator ditulis sesudah operand.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Algoritma Infix Ke Postfix :
20
 Langkah 0:
 Baca ungkapan dalam notasi infix, misalnya S;
 Tentukan panjang ungkapan tersebut, misalnya N;
 Siapkan sebuah tumpukan kosong dan siapkan derajat masing
– masing operator.
 Misalnya : * dan / berderajat 2, + dan – berderajat 1 dan (
berderajat 0 ).
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
21
 Langkah 1:
 Dimulai dari I : 1 sampai N, kerjakan langkah –langkah
berikut :
 R=S(I)
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
22

Test nilai R . Jika R adalah :





Operand
: Langsung ditulis
Kurung buka
: Push kedalam tumpukan
Kurung tutup
: Pop dan tulis semua isi tumpukan
sampai ‘(‘, pop juga tanda ini tetapi tidak perlu ditulis
Operator
: Jika tumpukan kosong, atau
derajat R lebih tinggi dibanding derajat ujung tumpukan,
push operator kedalam tumpukan. Jika tidak pop ujung
tumpukan dan tulis, kemudian ulangi perbandingan R
dengan ujung
tumpukan, lalu R di push.
Langkah 2: Jika akhir notasi infix telah tercapai
dan tumpukan masih belum kosong,

pop semua isi tumpukan dan tulis hasilnya.
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
Notasi Infix Postfix
Contoh :
Proses konversi
dari infix ke postfix :
=(6-2)*(5+4)
=[62-]*[54+]
=[62-][54+]*
=62-54+*
Infix
16 / 2
( 2 + 14 ) * 5
2 + 14 * 5
(6–2)*(5+4)
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert
_5_sta...
Postfix
16 2 /
2 14 + 5 *
2 14 5 * +
62–54+*
23

Contoh : Ubah ekspresi A+B*C+(D+E)*F ke dalam
notasi postfix dengan menggunakan algoritma Dijkstra
Masukan
A+B*C+(D+E)*F
+B*C+(D+E)*F
B*C+(D+E)*F
*C+(D+E)*F
C+(D+E)*F
+(D+E)*F
(D+E)*F
D+E)*F
+E)*F
E)*F
)*F
*F
F
kosong
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert_5_sta...
24
Keluaran
kosong
A
A
AB
ABC
ABC*+
ABC*+
ABC*+D
ABC*+D
ABC*+DE
ABC*+DE+
ABC*+DE+
ABC*+DE+F
ABC*+DE+F*+
STACK
kosong
kosong
+
+
+*
+*
+
+(
+(
+(+
+(+
+
+*
kosong
Contoh :
Penggunaan notasi postfix dalam stack, misal :
2 14 + 5 * = 80
push 2
push 14
pop 14
push 5
pop 2
push 2 +
14
pop 5
pop 80
pop 16
push 16
*5
14
2
5
16
16
Sumber Kepustakaan :
putuputraastawa.files.wordpress.com/.../pert
_5_sta...
80
25