STRUKTUR DATA QUEUE QUEUE Antrian Definisi Queue Antrian

  • Slides: 23
Download presentation
STRUKTUR DATA QUEUE

STRUKTUR DATA QUEUE

QUEUE (Antrian) Definisi: Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi

QUEUE (Antrian) Definisi: Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi yang lainnya, yang disebut dengan sisi depan (FRONT). Pemrosesan elemen bersifat FIFO (First In First Out) REAR FRONT

QUEUE (Antrian) � Suatu antrian Q = [Q 1, Q 2, Q 3, …,

QUEUE (Antrian) � Suatu antrian Q = [Q 1, Q 2, Q 3, …, QN] FRONT(Q) = Q 1; REAR(Q) = QN NOEL(Q) = jumlah elemen dalam antrian pada suatu saat tertentu. Operasi-Operasi dasar pada struktur Queue: CREATE(Q) = membentuk struktur antrian Q. FRONT(Q) dan REAR(Q) tidak terdefinisi ISEMPTY(Q) =menentukan apakah antrian Q kosong (true/false) INSERT(E, Q) = menambahkan elemen E ke dalam antrian Q. REMOVE(Q) =menghapus elemen pada FRONT

QUEUE (Antrian) CREATE(Q) Antrian Q = [] FRONT: Tak terdefinisi REAR: Tak terdefinisi NOEL(Q)

QUEUE (Antrian) CREATE(Q) Antrian Q = [] FRONT: Tak terdefinisi REAR: Tak terdefinisi NOEL(Q) = 0 INSERT(A, Q) Antrian Q = [A] FRONT: A REAR: A NOEL(Q) = 1 INSERT(B, Q) Antrian Q = [A, B] FRONT: A REAR: B NOEL(Q) = 2 1 2 A A B 3 4 5 6 7 … N

QUEUE (Antrian) INSERT(C, Q) Antrian Q = [A, B, C] FRONT: A REAR: C

QUEUE (Antrian) INSERT(C, Q) Antrian Q = [A, B, C] FRONT: A REAR: C NOEL(Q) = 3 REMOVE(Q) Antrian Q = [B, C] FRONT: B REAR: C NOEL(Q) = 2 REMOVE(Q) Antrian Q = [C] FRONT: C REAR: C NOEL(Q) = 1 A B C 1 2 3 B C C 4 5 6 7 … N

Kasus #1 Jika sebuah bank memiliki nasabah sebanyak 1500 orang, apakah bank tersebut perlu

Kasus #1 Jika sebuah bank memiliki nasabah sebanyak 1500 orang, apakah bank tersebut perlu menyediakan kursi sebanyak 1500 agar nasabahnya dapat dilayani semuanya? ?

Queue (Antrian) dengan Array Sirkular FRONT=0 REAR = 0 INSERT A dan B 1

Queue (Antrian) dengan Array Sirkular FRONT=0 REAR = 0 INSERT A dan B 1 2 FRONT = 1 A B REAR = 2 3 4 5 C D E D E INSERT C, D dan E FRONT = 1 REAR = 5 REMOVE A, B dan C FRONT = 4 REAR = 5 INSERT F FRONT = 4 REAR = 1 F REMOVE FRONT = 5 E INSERT G dan H FRONT = 5 REAR = 3 F G H REMOVE FRONT = 1 E

Algoritma Enqueue (Array Sirkular) QINSERT(QUEUE, N, FRONT, DATA) 1. {Apakah Antrian Penuh} Jika FRONT=1

Algoritma Enqueue (Array Sirkular) QINSERT(QUEUE, N, FRONT, DATA) 1. {Apakah Antrian 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 lain jika REAR = N, maka REAR: =1 dalam hal lain REAR: =REAR + 1 3. QUEUE(REAR) : = DATA {masukkan elemen baru} 4. RETURN

Algoritma Dequeue QDELETE(QUEUE, N, FRONT, REAR, DATA) 1. {Apakah antrian kosong} Jika FRONT=NULL maka

Algoritma Dequeue QDELETE(QUEUE, N, FRONT, REAR, DATA) 1. {Apakah antrian kosong} Jika FRONT=NULL maka write “UNDERFLOW”; RETURN 2. DATA : = QUEUE(FRONT) 3. (FRONT mendapat nilai baru) Jika FRONT = REAR, maka (Antrean memuat hanya 1 elemen) FRONT: =NULL; REAR: =NULL; dalam hal lain jika FRONT = N, maka FRONT: =1 dalam hal lain FRONT : = FRONT + 1 4. RETURN

Kasus #2 ? Pada bagian ICU (Intensive Care Unit) sebuah rumah sakit, sudah antri

Kasus #2 ? Pada bagian ICU (Intensive Care Unit) sebuah rumah sakit, sudah antri pasien dengan jenis masalah terurut sbb: 1. keseleo, 2. disengat lebah, 3. digigit pacar. Terakhir datang pasien gagal jantung. Apakah pasien terakhir harus antri sampai gilirannya? PRIORITY

PRIORITY QUEUE (Antrian Berprioritas) Antrian Berprioritas adalah himpunan elemen yang setiap elemennya diberikan tingkat

PRIORITY QUEUE (Antrian Berprioritas) Antrian Berprioritas adalah himpunan elemen yang setiap elemennya diberikan tingkat prioritas tertentu, dan urutan pemrosesan elemennya didasarkan atas prioritas tersebut sbb: 1. Elemen yang prioritasnya lebih tinggi diproses lebih dulu. 2. Dua elemen dengan prioritas yang sama diproses berdasarkan urutan kedatangannya, yaitu yang datang lebih dulu diproses lebih dulu (FIFO).

PRIORITY QUEUE dengan ONE-WAY LIST Representasi antrian berprioritas antara lain dilakukan dengan one-way list,

PRIORITY QUEUE dengan ONE-WAY LIST Representasi antrian berprioritas antara lain dilakukan dengan one-way list, sbb: a. Setiap simpul memiliki 3 field, yaitu: INF (informasi), PRN (nomor prioritas), dan LINK (penunjuk ke elemen berikutnya) b. Simpul X mendahului simpul Y dalam list : - jika prioritas X lebih tinggi daripada prioritas Y - jika prioritas keduanya sama, tetapi X lebih dulu masuk ke dalam antrian.

PRIORITY QUEUE with One-Way List INFO PRN LINK 1 AA 2 5 2 BB

PRIORITY QUEUE with One-Way List INFO PRN LINK 1 AA 2 5 2 BB 4 3 3 CC 4 7 4 DD 1 1 5 EE 2 8 6 FF 5 0 7 GG 4 6 8 HH 2 2 Urutan kedatangan STAR T 4 9 10 11 12

PRIORITY QUEUE with One-Way List START DDD 1 HHH AAA 2 2 BBB EEE

PRIORITY QUEUE with One-Way List START DDD 1 HHH AAA 2 2 BBB EEE 2 4 CCC GGG 4 4 FFF 5 X

Algoritma untuk Menghapus Elemen pada Priority Queue dengan One-Way List 1. 2. 3. 4.

Algoritma untuk Menghapus Elemen pada Priority Queue dengan One-Way List 1. 2. 3. 4. 5. ITEM : = INFO(START) {Langkah ini untuk menyimpan data dalam simpul pertama} START : = LINK(START) Hapus Simpul Pertama dari List Proses ITEM Exit

Algoritma untuk Menambah Elemen pada Priority Queue dengan One-Way List a. b. Telusuri one-way

Algoritma untuk Menambah Elemen pada Priority Queue dengan One-Way List a. b. Telusuri one-way list sampai ditemukan suatu Simpul X yang nomor prioritasnya melebihi N. Sisipkan ITEM di depan Simpul X. Jika tidak ditemukan Simpul semacam ini, sisipkan ITEM sebagai elemen terakhir List.

PRIORITY QUEUE with One-Way List START DDD XXX 2 1 HHH AAA 4 2

PRIORITY QUEUE with One-Way List START DDD XXX 2 1 HHH AAA 4 2 BBB EEE 2 4 CCC GGG 4 4 FFF 5 X

PRIORITY QUEUE dengan Array Dimensi 2 � Penyajian lain Antrian Berprioritas adalah dengan menggunakan

PRIORITY QUEUE dengan Array Dimensi 2 � Penyajian lain Antrian Berprioritas adalah dengan menggunakan Array dimensi 2. � Tiap baris array berisi elemen yang prioritasnya sama dan dikelola secara sirkular. � Diperlukan array lain untuk menyimpan FRONT dan REAR dari setiap baris.

FRON T REAR 1 2 3 1 2 2 1 AAA 2 1 3

FRON T REAR 1 2 3 1 2 2 1 AAA 2 1 3 2 BBB CCC XXX 3 0 0 3 4 5 1 4 5 4 FFF 5 6 DDD EEE GG G

PRIORITY QUEUE dengan Array Dimensi 2 Algoritma REMOVE 1. Cari Antrian Tidak Hampa Yang

PRIORITY QUEUE dengan Array Dimensi 2 Algoritma REMOVE 1. Cari Antrian Tidak Hampa Yang Pertama. 2. Cari K (nilai prioritas) yang tertinggi, sedemikian sehingga FRONT(K) tidak NULL. 3. Hapus dan proses elemen dari baris K. 4. Exit.

PRIORITY QUEUE dengan Array Dimensi 2 Algoritma INSERT 1. Sisipkan ITEM sebagai elemen belakang

PRIORITY QUEUE dengan Array Dimensi 2 Algoritma INSERT 1. Sisipkan ITEM sebagai elemen belakang dari baris M (nilai prioritas). 2. Exit.

Perbandingan antara implementasi Priority Queue menggunakan One-Way List dan Array. � Keunggulan menggunakan Array

Perbandingan antara implementasi Priority Queue menggunakan One-Way List dan Array. � Keunggulan menggunakan Array : Efisiensi Waktu � Keunggulan menggunakan one-way list: Efisiensi Space (Ruang)

Terima Kasih

Terima Kasih