Anda di halaman 1dari 9

Algoritma Pemrograman dan Stukur Data

MODUL 6 QUEUE (ANTRIAN) 1. Pendahuluan

Tri Daryanto, S.Kom, MT.

Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang lain. Karena itu, queue bersifat FIFO(First In First Out). Saat ini, kita akan mencoba membuat queue dan operasioperasi yang dapat dilakukannya. Antrian (Queue) merupakan suatu kumpulan data yang penambahan elemennya (masuk antrian) hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang/rear) atau disebut juga enqueue yaitu apabila seseorang masuk ke dalam sebuah antrian. Jika seseorang keluar dari antrian/penghapusan (pengambilan elemen) dilakukan lewat ujung yang lain (disebut dengan sisi depan/front) atau disebut juga dequeque yaitu apabila seseorang keluar dari antrian. Jadi, dalam antrian menggunakan prinsip masuk pertama keluar pertama atau disebut juga dengan prinsip FIFO (first in first out). Dengan kata lain, urutan keluar akan sama dengan urutan masuknya. Contoh : antrian mobil saat membeli karcis di pintu jalan tol, antrian di bioskop dan sebagainya. 2. Algoritma Sistem Antrian Pelayan Tunggal Sederhana Contoh antrian : car wash, kantor pos, bank Gambaran Masalah :

Komponen Simulasi antrian (Queue) :

1.
2. 3.

Ukuran buffer (ruang antrian) Skema pelayanan FIFO Variabel acak

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Tri Daryanto, S.Kom. MT.

ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data


Variabel Acak dan Fungsi Probabilitas : 1. Pola kedatangan : berurutan equivalen dengan waktu setiap kedatangan ~ fA = fungsi probabilitas waktu kedatangan 2. Pola pelayanan : durasi pelayanan ~ fS = fungsi probabilitas durasi pelayanan Contoh:

Tri Daryanto, S.Kom, MT.

selang waktu antar dua kedatangan

Perkirakan jumlah rata-rata entitas dalam sebuah sistem antrian pelayan tunggal dengan buffer berukuran tak hingga dan skema pelayanan FIFO. Membangun model dari contoh soal :

3. 4.

Spesifikasi input : bentuk fungsi fA dan fS Spesifikasi ukuran kinerja : jumlah rata-rata entitas dalam sebuah sistem antrian : Qav = (1/t)St Q(u) du, denganQ(u) adalah jumlah entitas dalam antrian pada waktu u

5.

Variabel output : jumlah kumulatif entitas dalam antrian : Q = St Q(u) du

6. Hubungan Masukan-keluaran : Dilakukan oleh simulator (a) Peristiwa : - entitas masuk antrian - entitas masuk pelayanan - entitas meninggalkan pelayanan Daftar_Peristiwa E(tA, tD) tA tD : daftar peristiwa berikut : waktu kedatangan berikut, : waktu kepergian berikut

(b) Keadaan : n jumlah entitas dalam sistem antrian

7. Kriteria akhir simulasi : T (durasi simulasi keseluruhan)


(bisa juga yang lain, misalnya nA, atau M = kapasitas buffer) Algoritma_Utama (Computer code dapat dilihat di lecture note) /*Inisialisasi*/ n = 0; t = 0; Q = 0; E(tA = ?, tD = ?) tA = t + X (X ~ fA) /*loop utama*/
PUSAT PENGEMBANGAN BAHAN AJAR-UMB Tri Daryanto, S.Kom. MT.
ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data


while (t ? T) tE = min(tA, tD) if (tE = tA) call Prosedur_Kedatangan else call Prosedur_Kepergian end return Qav = Q/t Prosedur_Kedatangan /*Update Variabel*/ Q = Q + n ? (tE - t) /* Update Keadaan*/ n=n-1 /* Update Waktu*/ t = tE /* Penjadwalan Peristiwa Baru*/ tA = t + X (X ~ fA) if (n = 1) tD = t + Y (Y ~ fS) Prosedur_Kepergian /*Update Variabel*/ Q = Q + n ? (tE - t) /* Update Keadaan*/ n=n+1 /* Update Waktu*/ t = tE /* Penjadwalan Peristiwa Baru*/ if (n ? 1) tD = t + Y (Y ~ fS) else tD = ?

Tri Daryanto, S.Kom, MT.

Contoh penggunaan Dari suatu proses antrian diketahui kedatangan berdistribusi eksponensial dengan rata-rata waktu kedatangan 60 detik. Dengan cara simulasi bilangan acak yang sesuai didapat untuk 10 kedatangan, dalam tabel waktu antar kedatangan :
PUSAT PENGEMBANGAN BAHAN AJAR-UMB Tri Daryanto, S.Kom. MT.

ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data

Tri Daryanto, S.Kom, MT.

Waktu pelayanan berdistribusi eksponensial dengan rata-rata waktu pelayanan 40 detik. Dengan cara simulasi bilangan acak yang sesuai didapat untuk 10 pelayanan pelanggan yang datang, dalam tabel.

Untuk mengetahui peristiwa dalam antrian dengan pelayanan tunggal ini, dibuat tabel hasil simulasi.

Penjelasan tabel : Waktu kedatangan Kedatangan dihitung dari waktu pelayanan mulai buka ( t =0). waktu kedatangannya Pelanggan ke 1 = waktu antar kedatangan Pelanggan ke 1. waktu kedatangannya Pelanggan ke (i+1) = waktu kedatangannya Pelanggan ke i ditambah waktu antar kedatangan Pelanggan ke (i+1). Waktu selesai dilayani Waktu selesai dilayani Pelanggan ke 1 = waktu kedatangannya ditambah waktu pelayanannya. Jika waktu kedatangan < waktu pelanggan sebelumnya selesai dilayani, maka waktu selesai dilayani Pelanggan ke (i+1) = waktu selesai dilayani Pelanggan ke i ditambah waktu pelayanan Pelanggan ke (i+1). Dalam hal lain, maka waktu selesai dilayani Pelanggan ke (i+1) = waktu kedatangannya. Pelanggan ke (i+1) ditambah waktu pelayanan Pelanggan ke (i+1). Waktu tunggu dilayani

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Tri Daryanto, S.Kom. MT.

ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data


Waktu tunggu dilayani Pelanggan ke 1 = 0.

Tri Daryanto, S.Kom, MT.

Jika waktu kedatangan < waktu pelanggan sebelumnya selesai dilayani, maka waktu tunggu dilayani Pelanggan ke (i+1) = waktu selesai dilayani Pelanggan ke i dikurangi waktu kedatangan Pelanggan ke (i+1). Dalam hal lain, maka waktu tunggu dilayani Pelanggan ke (i+1) = 0 Waktu menunggu pelanggan (idle) Waktu menunggu Pelanggan ke 1 = Waktu kedatangan pelanggan ke 1. Jika waktu kedatangan < waktu pelanggan sebelumnya selesai dilayani, maka waktu menunggu pelanggan = 0 Dalam hal lain, maka waktu menunggu Pelanggan ke (i+1) = Waktu kedatangan pelanggan ke (i+1) dikurangi waktu selesai dilayani Pelanggan ke i. Waktu proses pelayanan pelanggan Lamanya pelanggan menunggu dilayani sampai selesai dilayani. Waktu proses pelayanan pelanggan ke i = waktu tunggu dilayani Pelanggan ke i ditambah waktu pelayanan Pelanggan ke i.

Hasil simulasi Dari 10 pelanggan Rata-rata waktu tunggu dilayani = 725 / 10 = 72,5 detik Rata-rata waktu proses pelayanan pelanggan = 1157 / 10 = 115,7 detik Rata-rata banyak pelanggan dalam antrian = 725 / 684 = 1,06 = 1 pelanggan Rata-rata banyaknya pelanggan dlm sistem = 1157 / 684 = 1,69 = 2 pelanggan Rasio waktu menunggu pelanggan( RIT) = 252 / 684 = 0,37 Dengan kata lain pelayanan yang dioperasikan dari seluruh waktu pelayanan 37 % merupakan waktu kosong (luang). 3. Operasi dasar pada Antrean (Queue) - CREATE(Q) Operator untuk membentuk suatu antrean hampa
PUSAT PENGEMBANGAN BAHAN AJAR-UMB Tri Daryanto, S.Kom. MT.
ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data


Q = [,.,] NOEL(CREATE(Q)) = 0 FRONT(CREATE(Q)) = tidak didefinisikan REAR(CREATE(Q)) = tidak didefinisikan - ISEMPTY(Q) Operator yang menentukan apakah antrean Q hampa atau tidak. Operand dari operator ISEMPTY adalah antrean. Hasilnya bertipe data Boolean ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0) FALSE jika Q bukan antrean kosong (NOEL(Q) ? 0) - INSERT(E,Q) Operator yang menyisipkan elemen E ke dalam antrean Q Catt :

Tri Daryanto, S.Kom, MT.

Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang

Q = [ A, B, C, D] REAR(INSERT(E,Q)) = E FRONT(Q) = A NOEL(Q) = 5 ISEMPTY(INSERT(E,Q)) = FALSE - REMOVE(Q) Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek Jika NOEL(Q) = 0 maka REMOVE(Q) = ERROR ( UNDERFLOW) 4. Penyajian dari antrean (Queue) a. b. One way list Array

Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen . Antrean mula-mula terdiri dari elemen AAA, BBB, CCC, DDD
Tri Daryanto, S.Kom. MT.
ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Algoritma Pemrograman dan Stukur Data

Tri Daryanto, S.Kom, MT.

AAA BBB CCC DDD


1 2 3 4 5 6 7

.
8 9

FRONT(Q) = AAA : 1 REAR(Q) = DDD : 4 REMOVE(Q)

BBB CCC DDD


4 5 6 7 8 9

.
12 3

FRONT(Q) = BBB : 2 REAR(Q) = DDD : 4 INSERT(EEE,Q)

BBB CCC DDD EEE 1 . 2 3N


FRONT(Q) = BBB : 2 REAR(Q) = EEE : 5 KESIMPULAN :

..
4 5 6 7 8 9

Untuk setiap kali penghapusan nilai FRONT bertambah Untuk setiap kali penambahan nilai REAR akan bertambah Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular. 1. Pada Awal Hampa FRONT : 0 REAR : 0 1 2 3 4 5 FRONT a. . A dan B dimasukkan

A
1

B N
2 3 4 5

:1 REAR : 2

3. C, D , dan E dimasukkan

A
1

B
2

C
3

D
4

E
5

FRONT :1 REAR : 5

4. A, B, dan C dihapus
PUSAT PENGEMBANGAN BAHAN AJAR-UMB Tri Daryanto, S.Kom. MT.
ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data D


REAR :5 1 2 3 4 5

Tri Daryanto, S.Kom, MT.


FRONT :4

5. F dimasukkan FRONT

:4 REAR : 1 1 2 FRONT : 5

6. D dihapus

F
1 2 3 4

E
REAR :1 5

7. G dan H dimasukkan

F
REAR : 3 1

G
2

H
3 4

E
FRONT : 5 5

8. E dihapus

F
1

G
2

H
3 4 5

FRONT :1 REAR : 3

ALGORITMA QINSERT QINSERT(QUEUE, N, FRONT, DATA) 1. {Apakah antrean penuh} Jika FRONT = 1 dan REAR = N atau Jika FRONT = REAR+1, maka Write : OVERFLOW, return. 2 . Jika FRONT = NULL maka FRONT := 1, REAR := 1 Dalam hal ini Jika FRONT = N maka REAR := 1 Dalam hal lain REAR := REAR + 1 3. QUEUE(REAR) := DATA ( masukkan elemen baru) Return
PUSAT PENGEMBANGAN BAHAN AJAR-UMB Tri Daryanto, S.Kom. MT.

ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Algoritma Pemrograman dan Stukur Data

Tri Daryanto, S.Kom, MT.

ALGORITMA QDELETE QDELETE(QUEUE, N, FRONT, REAR, DATA) 1. {Apakah antrean kosong} Jika FRONT = NULL, maka Write : UNDERFLOW, return. 2. DATA := QUEUE(FRONT) 3. (FRONT mendapat nilai baru) Jika FRONT =REAR maka FRONT := NULL REAR := NULL Dalam hal ini Jika FRONT := N maka FRONT := 1 Dalam hal lain FRONT := FRONT + 1 4. Return Latihan Terbimbing Queue Buatlah fungsi utama untuk menjalankan queue pada modul dengan menggunakan menu. (untuk alurnya, hampir sama dengan flowchart untuk stack diatas. Hanya saja fungsi diganti dengan fungsi-fungsi queue.) Carilah total, rata-rata, nilai terkecil, nilai terbesar dari nilai yang telah di inputkan pada queue Latihan Mandiri Kelas Queue 1. 2. 3. 4. Tambahkanlah function untuk mencari suatu elemen dalam queue & stack Tambahkan function untuk mengedit suatu elemen dalam queue & stack Buatlah suatu fungsi untuk mencetak elemen stack ganjil Buatlah suatu fungsi untuk mencetak elemen queue genap

Latihan Mandiri Rumah /Tes Queue Buatlah program untuk membuat kalkulator scientific! Buatlah program untuk membalikkan kata yang berguna untuk membalik susunan elemen dalam queue Q dengan menggunakan bantuan sebuah stack . Buatlah program untuk menentukan apakah kata yang dimasukan merupakan palindrome atau bukan.

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Tri Daryanto, S.Kom. MT.

ALGORITMA PEMOGRAMAN DAN STRUKTUR DATA

Anda mungkin juga menyukai