Langsung ke konten utama

QUEUE (ANTRIAN)

 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 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.


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).
    • 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. 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 :
  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.
    1. 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
      Sumber :  : nbbajry.blog.com

      Komentar

      Postingan populer dari blog ini

      HSI-SILSILAH 01- HALAQOH 22 - TAKUT KEPADA ALLAH

      السّلام عليكم ورحمة الله و بر كاته  ... الحمد لله و الصلاة والسلام على رسول الله و على اله و صحبه اجمعين ꜜꜜꜜ     Diantara keyakinan seorang muslim, bahwa manfaat dan mudhorot adalah di tangan Allah semata. Seorang muslim tidak takut kecuali kepada Allah dan tidak bertawakal kecuali hanya kepada Allah.     Takut kepada Allah yang dibenarkan adalah takut yang membawa pelakunya kepada merendahkan diri dihadapan Allah, mengagungkan-Nya dan membawanya untuk menjauhi larangan Allah dan melaksanakan perintah-Nya.     Bukan takut yang berlebihan yang membawa kepada keputusasaan terhadap Rahmat Allah dan juga bukan takut yang terlalu tipis yang tidak membawa pemiliknya kepada ketaatan kepada Allah.      Takut seperti ini adalah ibadah, tidak boleh sekali-kali seorang muslim menyerahkan takut seperti ini kepada selain Allah, barangsiapa menyerahkannya kepada selain Allah, maka dia telah terjerumus kedalam syirik besar yang dapat men...

      HSI-SILSILAH 05 - HALAQOH 14 - Tanda-Tanda Besar Dekatnya Hari Kiamat

       السّلام عليكم ورحمة الله و بر كاته  ... الحمد لله و الصلاة والسلام على رسول الله و على اله و صحبه اجمعين ꜜꜜꜜ Tanda-tanda besar dekatnya hari kiamat adalah 10 tanda menjelang datangnya hari kiamat. Yang apabila sudah muncul 10 tanda tersebut, maka akan terjadilah hari kiamat. Tanda-tanda besar tersebut apabila muncul satu, maka akan segera diikuti oleh yang lain. Suatu saat Nabi Muhammad shallallāhu ‘alayhi wa sallam melihat para Shahābat sedang saling berbicara.      Maka Beliau bertanya, “Apa yang sedang kalian bicarakan?”      Merekapun menjawab, “Kami sedang mengingat hari kiamat.”      Maka, Beliau Shallallāhu ‘Alayhi wa Sallam bersabda : إِنَّهَا لَنْ تَقُومَ حَتَّى تَرَوْنَ قَبْلَهَا عَشْرَ آيَاتٍ “Sesungguhnya tidak akan bangkit hari kiamat tersebut sampai kalian melihat sebelumnya 10 tanda-tanda.” Kemudian Beliau Shallallāhu ‘Alayhi wa Sallam menyebutkan 10 tanda tersebut. Asap Dajjal Daabbah (seekor hewan melata) Terbitnya...

      HSI-SILSILAH 01- HALAQOH 19 - BERSUMPAH DENGAN SELAIN NAMA ALLAH

        السّلام عليكم ورحمة الله و بر كاته   ... الحمد لله و الصلاة والسلام على رسول الله و على اله و صحبه اجمعين ꜜꜜꜜ     Sumpah adalah menguatkan perkataan dengan menyebutkan sesuatu yang dinamakan baik oleh yang berbicara maupun yang di ajak bicara.     Kalau bahasa arab makan menggunakan huruf 'و' atau 'ب' atau 'ت' adapun bahasa indonesia maka menggunakan kara 'demi'.     Bersumpah hanya diperbolehkan dengan nama Allah semata, misalnya dengan mengatakan : ' Wallahi ' , Demi Rabb yang menciptakan langit dan bumi, Demi Dzat yang jiwaku berada di tangan-Nya, Dan lain-lain.     Adapun makhluk, bagaimanapun agungnya di mata manusia, maka tidak boleh kita bersumpah dengan namanya. Misalnya dengan mengatakan ; Demi Rasulullah, Demi Ka'bah, Demi Jibril, Demi langit dan bumi, Demi bulan dan bintang, Dan lain-lain.     Ini semua termasuk jenis pengagungan terhadap makhluk yang terlarang.     Rasulullah Sholallahu 'alayhi Wa S...