QUEUE / ANTRIAN Queue / antrian adalah sebuah bentuk list dengan operasi penyisipan hanya dapat dilakukan pada satu sisi yang disebut belakang (REAR) dan penghapusan hanya dapat dilakukan hanya pada satu sisi lainnya yang disebut sisi depan (FRONT). Rachmansyah,S.Kom
QUEUE / ANTRIAN Sebuah contoh antrian Q = [Q1,Q2,…Qn]. Kita notasikan bagian depan dari antrian sebagai FRONT(Q) dan bagian belakang sebagai REAR(Q). Jadi untuk antrian Q = [Q1,Q2,…Qn] FRONT(Q) = Q1 dan REAR(Q) = Qn Untuk menyatakan jumlah elemen dinotasikan dengan NOEL(Q). Rachmansyah,S.Kom
QUEUE / ANTRIAN Operasi penyisipan (insertion) disebut INSERT. Operasi penghapusan (deletion) disebut REMOVE. Rachmansyah,S.Kom
QUEUE / ANTRIAN Dimulai dengan antrian Q hampa. Q = [ ] NOEL(Q) = 0 Contoh: Dimulai dengan antrian Q hampa. Q = [ ] NOEL(Q) = 0 FRONT(Q) = tidak terdefenisi REAR(Q) = tidak terdefinisi Rachmansyah,S.Kom
QUEUE / ANTRIAN NOEL(Q) = 1 FRONT(Q) = A REAR(Q) = A Insert elemen A sehingga Q = [A] A NOEL(Q) = 1 FRONT(Q) = A REAR(Q) = A Rachmansyah,S.Kom
QUEUE / ANTRIAN NOEL(Q) = 2 FRONT(Q) = A REAR(Q) = B Insert elemen B sehingga Q = [A,B] A B NOEL(Q) = 2 FRONT(Q) = A REAR(Q) = B Rachmansyah,S.Kom
QUEUE / ANTRIAN NOEL(Q) = 3 FRONT(Q) = A REAR(Q) = C Insert elemen C sehingga Q = [A,B,C] A B C NOEL(Q) = 3 FRONT(Q) = A REAR(Q) = C Rachmansyah,S.Kom
QUEUE / ANTRIAN NOEL(Q) = 2 FRONT(Q) = B REAR(Q) = C Remove sebuah elemen, sehingga Q = [B,C] B C NOEL(Q) = 2 FRONT(Q) = B REAR(Q) = C Rachmansyah,S.Kom
QUEUE / ANTRIAN Kondisi underflow dapat terjadi jika dilakukan penghapusan pada antrian hampa. Kondisi overflow dapat terjadi jika dilakukan penyisipan pada saat kapasitas antrian sudah penuh. Antrian beroperasi dengan cara FIFO (First In First Out) Rachmansyah,S.Kom
QUEUE / ANTRIAN Ada 4 operasi dasar yang dapat dilakukan terhadap antrian: CREATE(Antrian) ISEMPTY(Antrian) INSERT(elemen,Antrian) REMOVE(Antrian) Rachmansyah,S.Kom
QUEUE / ANTRIAN Misalkan antrian Q = [Q1,Q2,…,Qnoel], maka: CREATE(Antrian) Create(Q) adalah suatu operator untuk membentuk dan menunjukkan suatu Antrian Hampa Q. Berarti: NOEL(CREATE(Q)) = 0 FRONT(CREATE(Q)) = tak terdefenisi REAR(CREATE(Q)) = tak terdefenisi Rachmansyah,S.Kom
QUEUE / ANTRIAN ISEMPTY(Q) ISEMPTY(Q) adalah suatu operator yang menentukan apakah Antrian Q hampa atau tidak. Operand dari operator ini adalah antrian dan hasilnya merupakan tipe data boolean. ISEMPTY(Q) = true, jika Q hampa, NOEL(Q) = 0 = false,jika Q tidak hampa Rachmansyah,S.Kom
QUEUE / ANTRIAN INSERT(elemen,antrian) Insert(E,Q) adalah suatu operator yang menginsert elemen E ke dalam antrian Q. Elemen E akan ditempatkan di bagian belakang antrian. Hasil dari operasi ini adalah antrian yang lebih panjang Rachmansyah,S.Kom
QUEUE / ANTRIAN REAR(INSERT(E,Q)) = E Qnoel = E ISEMPTY(INSERT(E,Q)) = false Rachmansyah,S.Kom
QUEUE / ANTRIAN REMOVE(Q) Remove(Q) adalah suatu operator yang menghapus bagian depan dari antrian Q. Hasilnya merupakan elemen yang lebih pendek. Pada setiap operasi ini, harga dari NOEL(Q) berkurang satu dan elemen kedua dari Q menjadi elemen terdepan. Rachmansyah,S.Kom
QUEUE / ANTRIAN Jika : NOEL(Q) = 0, maka REMOVE(Q) memberikan suatu kondisi error yaitu underflow error. Begitu juga dengan REMOVE(CREATE(Q)), akan menghasilkan underflow error. Rachmansyah,S.Kom
QUEUE / ANTRIAN Penyajian dari Antrian Antrian dapat disajikan dengan berbagai cara. Biasanya denganmenggunakan one-way-list (linier linked list) ataupun menggunakan array. Jika tidak disebutkan lain, maka antrian disajikan dalam bentuk array QUEUE. Rachmansyah,S.Kom
QUEUE / ANTRIAN Array QUEUE dilengkapi dengan dua variabel penunjuk. FRONT berisi lokasi dari elemen depan antrian REAR berisi lokasi dari elemen belakang antrian Nilai FRONT = null menunjukkan bahwa antrian adalah hampa. Rachmansyah,S.Kom
QUEUE / ANTRIAN AAA BBB CCC DDD BBB CCC DDD FRONT : 1 REAR : 4 REMOVE FRONT : 2 REAR : 4 BBB CCC DDD 1 2 3 4 5 6 7 …… N Rachmansyah,S.Kom
QUEUE / ANTRIAN Penggunaan Array Sirkular Pada awal hampa FRONT = 0 REAR = 0 1 2 3 4 5 INSERT A dan B FRONT = 1 REAR = 2 A B 1 2 3 4 5 Rachmansyah,S.Kom
QUEUE / ANTRIAN Penggunaan Array Sirkular INSERT C,D,E FRONT = 1 REAR = 5 A B C D E 1 2 3 4 5 REMOVE A,B,C FRONT = 4 REAR = 5 D E 1 2 3 4 5 Rachmansyah,S.Kom
QUEUE / ANTRIAN Penggunaan Array Sirkular INSERT F FRONT = 4 REAR = 1 D E 1 2 3 4 5 REMOVE D FRONT = 5 REAR = 1 F E 1 2 3 4 5 Rachmansyah,S.Kom
QUEUE / ANTRIAN Penggunaan Array Sirkular INSERT G,H FRONT = 5 REAR = 3 F G H E 1 2 3 4 5 REMOVE E FRONT = 1 REAR = 3 F G H 1 2 3 4 5 Rachmansyah,S.Kom
Antrian Berprioritas Antrian berprioritas adalah himpunan elemen, yang setiap elemennya telah diberikan prioritas. Urutan penghapusan elemen berdasarkan aturan berikut: Elemen yang prioritasnya lebih tinggi, diproses lebih dahulu dibandingkan dengan elemen yang prioritasnya lebih rendah. Dua elemen dengan prioritas yang sama. Diproses sesuai dengan urutan mereka sewaktu masuk ke dalam antrian.
Antrian Berprioritas Ada bermacam cara penyajian antrian ini, diantaranya: One-way List Multiple Queue Kemudahan dan kesulitasn dalam operasi penambahan/penghapusan tergantung pada penyajian mana yang akan dipilih.
Antrian Berprioritas Penyajian One-way List Ketentuan penyajian one-way list: Setiap simpul dalam list akan berisi tiga buah data yaitu: Informasi(INFO) Nomor Prioritas(PRN) Nomor Link (LINK)
Antrian Berprioritas b. Simpul X mendahului simpul Y dalam list bila: * X mempunyai prioritas lebih tinggi dari Y. * keduanya memiliki prioritas yang sama, tapi X masuk ke dalam antrian lebih dahulu dari pada Y.
Diagram skematik Antrian berprioritas AAA 1 BBB 2 EEE 4 DDD 4 CCC 2 GGG 5 x FFF 4 START Diagram skematik Antrian berprioritas
Antrian berprioritas dalam memori INFO PRN LINK BBB 2 6 DDD 4 4 FFF 4 8 EEE 4 9 CCC 2 3 AAA 1 1 GGG 5 0 7 12 11 10 11 10 9 8 7 6 5 4 3 2 1 START AVAIL 12
Antrian Berprioritas Algoritma penghapusan: Hapus ITEM. LINK(START) = LINK(ITEM) Algoritma penambahan: Telusuri list sampai ditemukan suatu simpul yang nilai prioritasnya lebih tinggi dari nilai prioritas ITEM.Sisipkan ITEM di depannya. Jika tidak ditemukan simpul seperti itu, sisipkan sebagai elemen terakhir dari list.
Antrian Berprioritas PENGAPUSAN START AAA 1 BBB 2 EEE 4 DDD 4 CCC 2 GGG 5 x FFF 4
Antrian Berprioritas PENYISIPAN START XXX 2 AAA 1 BBB 2 CCC 2 DDD 4 EEE 4 FFF 4 GGG 5 x