BAB I
PENDAHULUAN
1.1. Latar
Belakang Masalah
Queue/antrian adalah ordered list dengan
penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan
biasa disebut rear/tail, sedang ujung penghapusa disebut front/head. Fenomena
yang muncul adalah elemen yang lebih dulu disisipkan akan juga lebih dulu
diambil. Queue berdisiplin FIFO (First In, First Out).
Queue merupakan kasus khusus ordered list. Dengan karakteristik terbatas itu
maka kita dapat melakukan optimasi representasi ADT Queue untuk memperoleh
kerja paling optimal.
Karakteristik
Queue memang terbatas, tetapi Queue merupakan kakas dasar
penyelesaian masalah-masalah besar, seperti simulasi fenomena antrian di dunia
nyata, serta fenomena antrian di pengolahan data. Beberapa fenomena dunia nyata
berupa antrian diantaranya : antrian pembelian tiket di depan oket untuk bis,
kereta api, bioskop; antrian mobil di depan gerbang jalan tol; antrian
kendaraan di jalanan umum; dll.
Representasi
Queue dapat dilakukan dengan dua cara, yaitu:
- Representasi Sekuen
- Representasi Sekuen linear
- Representasi Sekuen Melingkar
2.
Representasi
Dinamis
Pembahasan
Representasi sekuen menggunakan array pada setiap pengoprasiannya, sedangkan
Representasi dinamis biasanya menempati memori berupa Record keduanya
dideklarasikan menggunakan bahasa pemograman pascal.
1.2.Judul
Makalah
Laporan
makalah ini berjudul “Queue (Antrian)”, laporan ini diharapkan dapat menjadi
literatur bagi proses belajar mengajar dalam perkuliahan, terutama mata kuliah
Struktur Data khususnya bagi mahasiswa/i secara cepat dan mudah dalam memahami
konsep antrian yang sesungguhnya.
1.3 Tujuan masalah
1. Memahami berbagai cara untuk merepresentasikan
queue secara sekuensial
maupun
dengan menggunakan linked list
2. Memahami implementasi queue dalam
menyelesaikan sebuah permasalahan
Karakteristik
yang membedakan queue (antrian) dari stack adalah cara
menyimpan dan mengambil data dengan
struktur first in first out (FIFO). Hal ini berarti elemen pertama yang
ditempatkan pada queue adalah yang pertama dipindahkan
BAB II
PEMBAHASAN
2.1.
DESKRIPSI QUEUE
Queue/antrian
adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan
di ujung lain. Ujung penyisipan biasa disebut rear/tail, sedang ujung
penghapusa disebut front/head. Fenomena yang muncul adalah elemen yang
lebih dulu disisipkan akan juga lebih dulu diambil. Queue berdisiplin FIFO
(First In, First Out). Queue merupakan kasus khusus ordered list.
Dengan karakteristik terbatas itu maka kita dapat melakukan optimasi
representasi ADT Queue untuk memperoleh kerja paling optimal.
Misalnya Queue
Q= (a1,a2,a3…,an), maka
- Elemen a1 adalah elemen paling depan
- Elemen ai adalah diatas elemen ai-1, di mana 1<i<n.
- Elemen an adalah elemen paling belakang
Head (atau front) menunjuk ke
awal antrian Q (atau elemen terdepan), sedangkan tail ( rear)
menunjuk akhir antrian Q (atau elemen paling belakang).
Disiplin
FIFO pada Queue berimplikasi jika elemen A, B, C, D, E dimasukkan ke
Queue, maka penghapusan/pengambilan elemen akan terjadi dengan urutan A, B, C,
D, E.
2.2
Karakteristik Queue
Karakteristik
penting antrian sebagai berikut :
- Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
- Head/front (elemen terdepan dari antrian ).
- Tail/rear (elemen terakhir dari antrian ).
- Jumlah elemen pada antrian (count).
- Status/kondisi antrian.
Kondisi
antrian yang menjadi perhatian adalah :
Penuh
Bila
elemen di antrian mencapai kapasitas maksimum antrian. Pada kondisi ini, tidak
mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi
kesalahan Overflow.
Kosong
Bila tidak
ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan
elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.
2.3
Operasi-Operasi Pokok di Queue
Operasi-operasi
pokok antrian sebagai berikut :
- createQueue (Q), atau constructor menciptakan antrian kosong Q.
- addQueue (Q, X) memasukkan elemen X sebagai elemen akhir di Q.
- removeQueue (Q, X)atau mengambil elemen depan di antrian Q ke elemenX.
Operasi-operasi
pengaksesan tambahan yang dapat dilakukan adalah :
- headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
- tailQueue (Q), mengirim elemen tanpa menghapusnya.
Operasi-0perasi
Query tambahan yang dapat dilakukan adalah :
- isEmptyQueue (Q), mengirim apakah antrian Q adalah kosong.
- isFullQueue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas antrian Q didefinisikan.
- isOverflowQueue (Q), mengirim apakah antrian Q telah mengalami overflow.
- isUnderflowQueue (Q), mengirim apakah antrian Q mengalami underflow.
Operasi-operasi
terhadap seluruh antrian Q antara lain adalah :
- sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
- isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
Jumlah
operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana
untuk menyatakan apa pun mengenai implementasinya.
2.4. Penggunaan
Queue
Meski Queue
sangat sederhana, namun Queue merupakan kakas dasar penyelesaian
masalah-masalah besar. penggunaan Queue yang utama adalah untuk simulasi
fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data.
Penggunaan
:
- Simulasi antrian di dunia nyata, antara lain :
- Lalu lintas pesawat udara tinggal landas (take-off) dan pendaratan (landing).
- Antrian pembelian tiket di depan oket untuk bis, kereta api, bioskop.
- Antrian mobil di depan gerbang jalan tol.
- Antrian kendaraan di jalanan umum.
- 2. System produksi
- Barisan bahan atau komponen yang akan diproses suatu mesin.
- Barisan bahan atau komponen yang akan diproses suatu manusia
- 3. System komputer
- Pemrosesan banyak job (tugas) pada system multiprogramming.
- 4. System jaringan komputer
- Pemrosesan banyak paket yang dating dari banyak koneksi pada suatu host, bridge, gateway dll.
2.5.
Representasi Queue
Representasi
Queue dapat dilakukan dengan dua cara, yaitu :
- Representasi sekuen
- Representasi sekuen linear
- Representasi sekuen melingkar merupakan implementasi statik yang lebih baik disbanding sekuen linear.
2. Representasi Dinamis (linked list).
2.6.
Representasi Sekuen
Representasi
queue secara sekuen lebih sulit disbanding stack. Untuk array
satu dimensi QElemen [1:n], memerlukan variable front dan rear.
Representasi sekuen linear tidak pernah digunakan karena representasi sekuen
melingkar lebih baik dan juga sederhana. Pembahasan representasi sekuen linear
berikut hanya digunakan untuk pembanding.
2.6.1.
Representasi Sekuen Linear
Kondisi
berikut akan berlaku :
Front = rear jika dan hanya jika
tidak terdapat elemen.
Kondisi
awal adalah front = rear = o.
Front dan
tail selalu
bergerak maju/naik sehingga
- Bila tail telah mencapai elemen terakhir array, antrian dianggap penuh walau sebenarnya mungkin elemen-elemen awal antrian telah dihapus (dikosongkan).
- Bila front dan tail mencapai nilai yang sama berarti antrian dalam keadaan kosong maka front dan tail dapat diinisialisasikan kembali ke kondisi semula.
Kelemahan
Representasi Linear
Kapasitas
penuh yang disediakan dapat terpakai seluruhnya yaitu bila telah terjadi
penghapusan elmen-elemen antrian awal.
2.6.2.
Representasi Melingkar
Representasi
queue lebih efisien dengan menganggap array QElemen [1;n] sebagai
cirkular, mendeklarasikan array QElemen sebagai QElemen [0:n-1].
Ketika rear = n-1, elemen dimasukkan ke QElemen [0] bila lokasi itu
telah dikosongkan.
Konvensi
Front selalu menunjuk satu posisi setelah
elemen pertama di queue searah jarum jam.
- Variable front = rear, jika dan hanya jika queue kosong.
- Awalnya front = rear = 1.
Asumsi
sirkular adalah dengan mengubah algritma AddQ dan DeleteQ. Untuk penambah
elemen, algoritma perlu memindahkan rear satu posisi searah jarum jam, yaitu:
if tail = n-1 then tail := 0 else
tail := tail * 1
|
Efek
sirkular dengan rear := (rear+1) mod n. operator modulo yang menghitung
sisa bagi. Serupa itu, perlu pemindahan front satu posisi searah jarum
jam tiap terjadi penghapusan. Penghapusan dapat dilakukkan dengan front :=
(front +1) mod n. algoritma dapat dilakukan dengan waktu tetap atau 0 (1).
Front dan
Tail Selalu Bergerak Maju/Naik
- Untuk penambahan
Bila tail
telah mencapai elemen terakhir array, akan memakai elemen pertama array
yang telah tidak digunakan (dihapus/dikeluarkan).
2.
Untuk
penghapusan
Bila front
telah mencapai elemen terakhir array, maka akan menuju elemen pertama
bila antrian masih berisi elemen.
2.7.
Representasi Linked List
Deklarasi queue menggunakan singly
linked list sebagai berikut:
|
Kita menyimpan count untuk
menyimpan jumlah elemen di queue karena menghitung jumlah elemen di linked list
adalah dengan menelusuri seluruh elemen. Penelusuran banyak memakan waktu.
Kalau tidak ada keperluan mengetahui jumlah elemen di queue, maka count dapat
dihilangkan.
Operasi-
operasi di Queue
- CreateQ (Q) menciptakan Q dengan queue kosong.
- AddQ (Q, x) menambah elemen x ke rear queue.
- RemoveQ (Q, x) menghilangkan elemen pada front dari queue Q.
- FrontQ (Q) mengirim elemen front dari queue Q.
- IsEmptyQ (Q) yang mengembalikan true if Q kosong else false.
- SizeQ (Q) mengirimkan jumlah elemen pada queue;
Operasi-
operasi tersebut diimplementasikan sebagai berikut:
2.8.
Dequeue
Representasi
dequeue;
- Repsentasi Sekuen
- Repsentasi Linked List
Operasi-
operasi pada dequeue antara lain:
- InitDQ, menciptakan dequeue kosong.
- InsertDQ, menyisipkan ekemen ke dequeue terdiri dari:
- Menyisipkan ke ujung kiri
- Menyisipkan ke ujung kanan
- RemoveDQ, mengambil elemen dari dequeue terdiri dari:
- Menghilangkan elemen di ujung kiri
- Menghilangkan elemen di ujung kanan
- LeftDQ, mengrim elemen di ujung kiri.
- RightDQ, mengrim elemen di ujung kanan.
- IsEmptyDQ, mengirim true jika dequeue kosong.
- SizeDQ, mengir im jumlah elemen di dequeue.
2.9.
Representasi Sekuen Dequue
Deklarasi
dalam pascal adalah:
BAHASA PASCAL
Const
N =
. . . ;
Type
Terror
= (NoError , Overflow, Underflow, NotAvailable) ;
Tdata
= . . . ;
Deque =
record
DQElemen
: array[0 . . (N – 1)] of TData ;
Count ,
Left ,
Right
: integer ;
ErrorCode
: Terror ;
End;
2.10.
Representasi Linked List Dequeue
Deque
- AddLeftDQ dilakukan dengan InsertFirst
- RemoveLeftDQ dilakukan dengan DeleteFirst
- AddRightDQ dilakukan dengan InsertLast
- RemoveRightDQ dilakukan dengan DeleteLast
BAB III
PENUTUP
3.1 KESIMPULAN
1. Antrian (qeue) adalah sebuah bentuk struktur
yang berdasarkan pada proses
FIFO
(First In First Out).
2.
Antrian dapat diimplementasikan dengan
menggunakan array atau linked list.
Kondisi
antrian yang menjadi perhatian adalah :
Penuh
Bila elemen di antrian mencapai kapasitas maksimum antrian.
Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan
elemen menyebabkan kondisi kesalahan Overflow.
Kosong
Bila tidak ada elemen di antrian. Pada kondisi ini, tidak
mungkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen
menyebabkan kondisi kesalahan Underflow.
DAFTAR PUSTAKA
Masyarakat Digital Gotong Royong (MDGR). 2008. Pengantar Sistem Operasi Komputer : Jilid Pertama. Jakarta : Fakultas Ilmu Komputer Universitas Indonesia
Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005 . Operating Systems Concepts. Seventh Edition. John Wiley & Sons.
Moonbase.1991.Scheduling- http://moonbase.wwc.edu/~aabyan/352/Scheduling.html. Diakses 20 Februari 2007.
Masyarakat Digital Gotong Royong (MDGR). 2008. Pengantar Sistem Operasi Komputer : Jilid Pertama. Jakarta : Fakultas Ilmu Komputer Universitas Indonesia
Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005 . Operating Systems Concepts. Seventh Edition. John Wiley & Sons.
Moonbase.1991.Scheduling- http://moonbase.wwc.edu/~aabyan/352/Scheduling.html. Diakses 20 Februari 2007.
Tidak ada komentar:
Posting Komentar