pertemuan 7 - Farid Wajdi

Download Report

Transcript pertemuan 7 - Farid Wajdi

ANTRIAN
Farid Wajdi Yusuf
Pendidikan Teknik Informatika dan Komputer
Jurusan Pendidikan Teknik Elektro
Fakultas Teknik – Universitas Negeri Makassar
Contoh Antrian
•
Contoh antrian :
 Antrian
printer
 Antrian
tiket bioskop
 Antrian
pada kasir sebuah bank.
Ketika seorang pelanggan datang, akan menuju ke
belakang dari antrian. Setelah pelanggan dilayani, antrian
yang berada di depan akan maju.
PERLU DIINGAT
Suatu
item yang
ditambahkan di belakang
antrian tidak bisa dihapus
sebelum item di depannya
dihapus.
 Queue
(antrian) adalah struktur data dimana
proses pengambilan dan penambahan element
dilakukan pada ujung yang berbeda.
 Queue mengikuti konsep FIFO.
 FIFO (First In First Out) : elemen yang pertama masuk
akan menjadi elemen yang pertama kali keluar.
Tail:
Head
Alat
mailbox elektronik
(berdasarkan kronologi).
Mesin antrian pada toko atau
bank.
Proses menunggu untuk run pada
prosessor pada sistem komputer.
QUEUE DAN STACK
 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 ditempat-kan
pada queue adalah yang pertama dipindahkan.


Enqueue :
yaitu proses penambahan
elemen pada queue.
Elemen ditempatkan pada ujung
(tail)
•
•
Dequeue
yaitu proses pengambilan
elemen pada queue.
Memindahkan elemen dari
kepala (head) sebuah
queue.
•
Penambahan dilakukan
pada bagian belakang.
Sedangkan pengambilan
dilakukan pada bagian
depan (element yang
pertama masuk).
enqueue
Queue
dequeue
GAMBAR
A
B
A
B
C
D
PROSES
QUEUE
C
D
ENQUEUE
DEQUEUE
• Kondisi
awal ada
sebuah queue dan
ATURAN MEMASUKKAN
QUEUE
dibuat sebuah elemen baru yang
akan dimasukkan ke dalam queue.
last
first
Elemen baru
Antrian (queue)
• Elemen baru dimasukkan ke dalam
queue
last
first
Antrian (queue)
• Penunjuk last diubah menunjuk ke
elemen baru sebagai elemen paling
belakang.
last
first
Antrian (queue)
ATURAN MENGELUARKAN
ELEMEN
• Kondisi awal ada sebuah queue yang
berisi elemen.
last
first
Antrian (queue)
• Penunjuk first diubah ke elemen di
belakang elemen paling depan.
last
first
Antrian (queue)
• Elemen paling depan dikeluarkan dari
queue.
last
first
keluar
Antrian (queue)
ANTRIAN BERPRIORITAS
• Yaitu mengeluarkan elemen dari
queue berdasarkan prioritas pada
elemen itu.
• Elemen pada antrian berprioritas harus
menyimpan nilai prioritas pada setiap
elemen.
• Untuk memasukkan elemennya, tidak
harus melalui sisi belakang antrian,
tetapi disisipkan dan diurutkan
berdasarkan prioritas elemen.
KETENTUAN QUEUE
BERPRIORITAS
• Elemen yang memiliki prioritas lebih
tinggi akan lebih dahulu keluar dari
queue.
• Jika ada dua elemen yang memiliki
prioritas sama, maka yang akan keluar
terlebih dahulu dari antrian adalah
yang terlebih dahulu masuk ke dalam
antrian.
• Kondisi awal ada sebuah antrian
OPERASIPADA ANTRIAN
berprioritas
yangBERPRIORITAS
berisi elemen dan
ada sebuah elemen baru yang akan
dimasukkan ke dalam antrian.
last
first
baru
9
7
6
4
2
3
Antrian (queue)
1
• Mencari tempat yang sesuai untuk
elemen baru sesuai dengan prioritas
elemen baru pada antrian.
Tempat elemen baru
Di belakang elemen 2
last
first
baru
9
7
6
4
2
3
Antrian (queue)
1
• Menyisipkan elemen baru ke dalam
antrian.
last
first
9
7
6
4
3
2
Antrian (queue)
1
Bagaimana
dengan
operasi mengeluarkan
sebuah elemen dari
antrian berprioritas???
KARAKTERISTIK QUEUE
 Elemen
antrian yaitu item-item data
yang terdapat di elemen antrian
 Front
 Rear
 Jumlah elemen pada antrian (Count)
 Status antrian
: pointerDAN
bantu yang
digunakan untuk
FRONT
REAR
 Front
menunjuk element yang paling depan.
 Rear : pointer bantu yang digunakan untuk
menunjuk element yang paling belakang.
Enqueue
Rear
Queue
Dequeue
Front
Status antrian
Penuh
 Bila
elemen pada 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 pada antrian.
 Pada kondisi ini, tidak mungkin dilakukan
pengambilan elemen dari antrian.
 Pengambilan elemen menyebabkan
kondisi kesalahan Underflow.
•
Queue berguna untuk
menyimpan pekerjaan yang
tertunda.
GAMBARAN PROSES QUEUE
(ANTRIAN)
DEKLARASI
Deklarasi







Deklarasi
Inisialisasi
Cek kosong
Cek penuh
Pengambilan
Penambahan
Pengaksesan
DEKLARASI
 Proses
yang harus dilakukan pertama kali adalah
deklarasi/menyiapkan tempat.
 Langkah yang harus dilakukan adalah :





Deklarasi class
Deklarasi struktur data (menggunakan array atau linked list)
Deklarasi pointer front dan rear
Deklarasi variabel size untuk menyimpan besar array.
Deklarasi variabel jumlah untuk mengetahui banyak item
yang disimpan pada queue.
CEK KOSONG (ISEMPTY)
 Operasi
yang digunakan untuk mengecek kondisi
queue dalam keadaan kosong.
 Pada array : menggunakan pengecekan pada
variabel jumlah_item. Jika nilainya = 0 berarti queue
dalam kondisi kosong.
 Pada linked list : dapat menggunakan pengecekan
front atau rear jika nilainya null berarti queue
kosong.
 Operasi ini harus dapat mengembalikan nilai true
jika queu kosong dan false jika sebaliknya.
CEK PENUH (ISFULL)
 Operasi
yang hanya dapat diterapkan pada
queue yang menggunakan array.
 Operasi ini digunakan untuk mengecek kondisi
queue dalam keadaan penuh.
 Caranya : melihat nilai pada variabel jumlah
item. Jika nilainya = size-1 (dimana size adalah
ukuran array) maka dapat diindikasikan queue
dalam kondisi penuh.
 Operasi ini harus dapat mengembalikan nilai
true jika queue penuh dan false jika sebaliknya.
ANTRIAN
BERPRIORITAS
Dalam antrian yang telah dibahas
sebelum, semua elemen yang
masuk dalam antrian dianggap
mempunyai prioritas yang sama,
sehingga elemen yang masuk
lebih dahulu akan diproses lebih
dahulu.
 Dalam
praktek, elemen-elemen yang akan masuk
dalam suatu antrian ada yang dikatakan
mempunyai prioritas yang lebih tinggi dibanding
yang lain.
 Antrian yang demikian ini disebut dengan antrian
berprioritas (priority queue).
 Salah
satu cara untuk
mengimplementasikan antrian
berprioritas adalah dengan
menggunakan linked list.
 Jika kita menggunakan linked list,
khususnya single linked list atau double
linked list, maka ada ketentuan lain
yang perlu diperhatikan, yaitu:


Setiap node dari linked list terdiri tiga
bagian, yaitu bagian informasi, angka
prioritas dan bagian-bagian penyambung
ke simpul lain.
Simpul X mendahului (terletak di sebelah
kiri) simpul Y, jika prioritas X lebih tinggi
dibanding prioritas Y atau jika prioritas X
dan Y sama, maka simpul X datang lebih
dahulu dibanding dengan Y.
 Biasanya
dibuat suatu perjanjian bahwa angka
prioritas yang lebih kecil menunjukkan derajad
prioritas yang lebih tinggi.
 Sebagai contoh, jika angka prioritas pada simpul X
adalah 1 dan pada simpul Y adalah 2, maka
dikatakan bahwa simpul X berprioritas lebih tinggi
dibanding dengan simpul Y.