Jumat, 16 Mei 2014

Apa itu Queue???


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:
  1. 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
  1. Elemen a1 adalah elemen paling depan
  2. Elemen ai adalah diatas elemen ai-1, di mana 1<i<n.
  3. 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 :
  1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
  2. Head/front (elemen terdepan dari antrian ).
  3. Tail/rear (elemen terakhir dari antrian ).
  4. Jumlah elemen pada antrian (count).
    1. 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 :
  1. createQueue (Q), atau constructor menciptakan antrian kosong Q.
  2. addQueue (Q, X) memasukkan elemen X sebagai elemen akhir di Q.
  3. removeQueue (Q, X)atau mengambil elemen depan di antrian Q ke elemenX.
Operasi-operasi pengaksesan tambahan yang dapat dilakukan adalah :
  1. headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
  2. tailQueue (Q), mengirim elemen tanpa menghapusnya.
Operasi-0perasi Query tambahan yang dapat dilakukan adalah :
  1. isEmptyQueue (Q), mengirim apakah antrian Q adalah kosong.
  2. isFullQueue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas antrian Q didefinisikan.
  3. isOverflowQueue (Q), mengirim apakah antrian Q telah mengalami overflow.
  4. isUnderflowQueue (Q), mengirim apakah antrian Q mengalami underflow.
Operasi-operasi terhadap seluruh antrian Q antara lain adalah :
  1. sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
  2. 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 :
  1. 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
  1. 3. System komputer
  • Pemrosesan banyak job (tugas) pada system multiprogramming.
  1. 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 :
  1. 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
  1. Bila tail telah mencapai elemen terakhir array, antrian dianggap penuh walau sebenarnya mungkin elemen-elemen awal antrian telah dihapus (dikosongkan).
  2. 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.
  1. Variable front = rear, jika dan hanya jika queue kosong.
  2. 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
  1. 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:
BAHASA PASCAL
Type
TData = . . . ;
TKey = . . . ;
PNode = ^Node ;
Node = record
Key : Tkey ;
Data : TData ;
Next : PNode ;
end ;
Queue = record
count : integer ;
front,            {sama dengan first}
tail : PNode ;    {sama dengan last}
end ;
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
  1. CreateQ (Q) menciptakan Q dengan queue kosong.
  2. AddQ (Q, x) menambah elemen x ke rear queue.
  3. RemoveQ (Q, x) menghilangkan elemen pada front dari queue Q.
  4. FrontQ (Q) mengirim elemen front dari queue Q.
  5. IsEmptyQ (Q) yang mengembalikan true if Q kosong else false.
  6. SizeQ (Q) mengirimkan jumlah elemen pada queue;
Operasi- operasi tersebut diimplementasikan sebagai berikut:

2.8.  Dequeue
Representasi dequeue;
  1. Repsentasi Sekuen
  2. Repsentasi Linked List
Operasi- operasi pada dequeue antara lain:
  1. InitDQ, menciptakan dequeue kosong.
  2. InsertDQ, menyisipkan ekemen ke dequeue terdiri dari:
  • Menyisipkan ke ujung kiri
  • Menyisipkan ke ujung kanan
  1. RemoveDQ, mengambil elemen dari  dequeue terdiri dari:
  • Menghilangkan elemen di ujung kiri
  • Menghilangkan elemen di ujung kanan
  1. LeftDQ, mengrim elemen di ujung kiri.
  2. RightDQ, mengrim elemen di ujung kanan.
  3. IsEmptyDQ, mengirim true jika dequeue kosong.
  4. 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.

Tidak ada komentar:

Posting Komentar