Pertemuan 3 - Notasi pada stack, Queue, DFS, BFS - 2101711122 - Bela Kristianti
Stack adalah struktur data penting yang menyimpan unsur-unsurnya secara teratur. Stack adalah struktur data linier yang dapat diimplementasikan dengan menggunakan array atau linked list.
Elemen dalam stack ditambahkan dan dihapus hanya dari satu ujung, disebut dengan top.
Data disimpan dalam cara Last In First Out (LIFO) yang berarti Benda yang terakhir masuk ke dalam
stack
akan menjadi yang pertama keluar dari stack.
Stack memiliki dua variabel:
TOP yang digunakan untuk menyimpan alamat elemen paling atas dari stack
MAX yang digunakan untuk menyimpan jumlah maksimum elemen yang dapat disimpan stack
Jika TOP = NULL, maka menunjukkan bahwa stack kosong
Jika TOP = MAX - 1, maka stack sudah penuh
TOP = 4, insertion dan deletion akan dilakukan pada
posisi ini
Operasi Stack
·
push (x) : digunakan untuk menaambah item
pada bagian atas tumpukan.
·
pop ()
: digunakan
untuk mengambil item dari tumpukan
paling atas.
·
top ()
: mengembalikan item teratas dari stack.
Infix, Postfix, dan Prefix
Ada tiga notasi aritmatika yang
diketahui :
1.
Notasi
prefix (dikenal sebagai notasi Reverse Polish) : operator
ditulis sebelum operand
2.
Notasi
infix : operator
ditulis antara operand
3.
Notasi
postfix : operator
ditulis setelah operand
Notasi tersebut terbentuk dari indikator :
·
Operand
: data/nilai yang membantu dalam proses.
·
Operasi
: fungsi yang digunakan dalam proses
Contohnya :
Operand
: angka dan huruf (abc..,123…)
Operator
: Penjumlahan, pengurangan, perkalian, pembagian, kurung, pangkat (+,-,*,/,(),^)
Depth First Search (DFS) adalah algoritma untuk mencari pada pohon atau grafik. DFS memiliki banyak aplikasi, seperti: Finding articulation point and bridge in a graph, finding connected component, topological sorting.
DFS dapat diimplementasikan
dengan fungsi rekursif atau prosedur iteratif dengan menggunakan stack,
hasilnya mungkin memiliki sedikit perbedaan pada urutannya namun
keduanya benar.
Contoh : Urutannya
adalah A,C,B, E, D
Stacks banyak digunakan untuk :
·
Membalik urutan data
·
Convert
infix ke
postfix
·
Convert
postfix menjadi
infix,
·
Backtracking
problem
·
Sistem
stack digunakan pada setiap fungsi rekursif,
·
Mengkonversi
angka desimal ke dalam padanan binernya.
Queue adalah struktur data penting yang menyimpan unsur-unsurnya secara terurut.
Contoh : Orang-orang
bergerak di atas eskalator,
Orang-orang yang naik eskalator pertama akan menjadi orang pertama yang
melangkah keluar dari situ.
Queue dapat diimplementasikan
dengan menggunakan array atau linked
list. Elemen dalam antrian ditambahkan di satu ujung disebut
belakang dan dihapus dari ujung yang lain disebut front. Data disimpan dalam
cara First In First Out (FIFO), ini adalah perbedaan utama antara stack dan
queue.
Queue memiliki dua variabel, depan dan belakang yang mengarah ke posisi
dimana penghapusan dan penyisipan bisa dilakukan masing-masing.
Operasi Queue
push (x) : digunakan untuk menambah item pada bagian belakang antrian.
pop () : digunakan untuk mengambil item pada bagian depan antrian.
top () : mengembalikan item terdepan dari antrian.
Ada 3 aplikasi yang menggunakan struktur data queue :
1. Deques
Deque
adalah daftar di mana elemen dapat disisipkan atau dihapus di kedua ujungnya.
Hal ini juga dikenal sebagai daftar terkait kepala ekor, karena elemen dapat
ditambahkan ke atau dikeluarkan dari bagian depan (kepala) atau belakang
(ekor).
Dua varian dari double-ended
queue, meliputi:
Input
restricted deque : Dalam sisipan dequeue ini bisa dilakukan hanya di salah satu
dequeue sementara penghapusan bisa dilakukan dari kedua ujungnya.
Output
restricted deque : Pada penghapusan dequeue ini bisa dilakukan hanya pada salah
satu dequeue sementara sisipan bisa dilakukan pada kedua ujungnya.
2. Priority Queues
Priority
queue adalah tipe data abstrak dimana masing-masing elemen diberi prioritas.
Aturan
umum elemen :
Elemen
dengan prioritas lebih tinggi diproses sebelum elemen dengan prioritas lebih
rendah.
Dua
elemen dengan prioritas yang sama diproses pada saat pertama datang pertama
dilayani, dasar (FCFS)
3. Breadth First Search
Breadth
First Search (BFS) sama
seperti DFS juga merupakan algoritma untuk mencari menggunakan pohon atau
grafik. Contoh : Urutannya A, B, C, D, E
·
Menemukan komponen yang terhubung dalam grafik
·
Menjelajahi jalur terpendek dalam grafik yang tidak
tertahan
·
Metode Fulton untuk komputasi
maximum flow
·
Perbedaan antara implementasi DFS dan BFS hanyalah struktur
data yang digunakan.
DFS menggunakan stack sementara BFS menggunakan queue.





Komentar
Posting Komentar