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,
- Dan Lain-lain.
- Representasi Sekuen
- Representasi Sekuen linear
- Representasi Sekuen Melingkar
- Representasi Dinamis
↺ Representasi dinamis biasanya menempati memori berupa Record keduanya dideklarasikan menggunakan bahasa pemograman pascal.
1.2.Judul Makalah
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.
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
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.
↪ 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
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.
- headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
- tailQueue (Q), mengirim elemen tanpa menghapusnya.
- 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.
- sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
- isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
2.4. Pengunaan 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.
- 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.
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).
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
Kelemahan Representasi Linear
Kapasitas penuh yang disediakan dapat terpakai seluruhnya yaitu bila telah terjadi penghapusan elmen-elemen antrian awal.
2.6.2. Representasi Melingkar
- 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.
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
2. Untuk penghapusan
2.7. Representasi Linked List
- Untuk penambahan
2. Untuk penghapusan
2.7. Representasi Linked List
Deklarasi queue menggunakan singly linked list sebagai berikut:
|
↪ 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;
2.8. Dequeue
Representasi dequeue;
2.9. Representasi Sekuen Dequue
- Repsentasi Sekuen
- Repsentasi Linked List
- 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
ConstN = . . . ;TypeTerror = (NoError , Overflow, Underflow, NotAvailable) ;Tdata = . . . ;Deque = recordDQElemen : 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
Komentar
Posting Komentar