33
Antrian (Queue) 1 2 3 4 5 Membentuk Antrian Depa n Belaka ng

Antrian (Queue)

  • Upload
    varian

  • View
    166

  • Download
    3

Embed Size (px)

DESCRIPTION

Antrian (Queue). Membentuk Antrian. 5. 4. Depan. 3. 2. 1. Belakang. Masuk. Keluar. Defenisi. - PowerPoint PPT Presentation

Citation preview

Page 1: Antrian (Queue)

Antrian (Queue)

12

34

5

Membentuk Antrian

Depan

Belakang

Page 2: Antrian (Queue)

Keluar

Masuk

Page 3: Antrian (Queue)

Defenisi

• Antrian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan (pengambilan elemen ) dilakukan lewat ujung lain (disebut dengan sisi depan atau front

• maka pada antrian prinsip yang digunakan adalah “masuk pertama keluar pertama”atau FIFO (First in First Out). Dengan kata lain, urutan keluar elemen akan sama dengan urutan masuknya

Page 4: Antrian (Queue)

• Contoh lain yang lebih relevan dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time – sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak. Karena sistem ini biasanya menggunakan sebuah prosesor dan sebuah pengingat utama, maka jika prosesor sedang dipakai oleh seorang pemakai, pemakai-pemakai lain harus antri sampai gilirannya tiba. Antrian ini mungkin tidak akan dilayani secara FIFO murni, tetapi didasarkan pada suatu proritas tertentu

Page 5: Antrian (Queue)

Jaringan Komputer

Server

User 1

User 2

User 3

User 4

User 5

Page 6: Antrian (Queue)

Jaringan Komputer

Server

User 1

User 2

User 3

User 4

User 5Tabel Proses

P1 x1 y1

P2 x2 y2

P3 x3 y3

P4 x4 y4

P5 x5 y5

Page 7: Antrian (Queue)

Antrian Dengan Larik

A B C D E 0 1 2 3 4 5

depa

n

Bel

akan

g

Deklarasi struktur data

Queue = record

isi : array[1..n] of tipe data

depan,belakang : integer

end

Page 8: Antrian (Queue)

Inisialisasi Queue

Posisi awalQ : QueueQ.Depan = 1Q.Belakang = 0

0 1 2 3 4 5

Q

DB

Operasi Pada Antrian

1. Menambah Elemen ( Add (x,q))

menambah elemen x kedalam Antrian Q

2. Menghapus Elemen ( Del(q))

Menghapus elemen dari antrian Q

Page 9: Antrian (Queue)

Menambah Elemen (Add(x,Q))

0 1 2 3 4 5

Q

DB

Add(Mobil,Q)

Page 10: Antrian (Queue)

Menambah Elemen (Add(x,Q))

0 1 2 3 4 5

Q

D B

Add(Mobil,Q)

Page 11: Antrian (Queue)

Menambah Elemen (Add(x,Q))

0 1 2 3 4 5

Q

D B

Add(Mobil,Q)

0 1 2 3 4 5

QD B

Add(Mobil,Q)

0 1 2 3 4 5

QDB

Add(Mobil,Q)

Page 12: Antrian (Queue)

Penambahan elemen dapat dilakukan pada saat Antrian belum penuh, dimana antrian belum penuh jika posisi belakang (Q.Belakang<n)

Menambah Elemen (Add(x,Q))

Algoritma :

Procedure Add(x : tipe data, Q: stack)

If Q.belakang < n then

Q.belakang= Q.Belakang+1

Q.isi[Q.belakang] = x

Else

Antrian Sudah Penuh

fi

Page 13: Antrian (Queue)

Menghapus Elemen(Del(Q))

Sifat antrian adalah FIFO (First In First Out), sehingga data yang dihapus duluan adalah data yang duluan masuk

0 1 2 3 4 5

QDB

Del(Q)

0 1 2 3 4 5

QD B

Del(Q)

Page 14: Antrian (Queue)

Del(q)

0 1 2 3 4 5

Q D B

Del(Q)

0 1 2 3 4 5

Q D B

Del(Q)

0 1 2 3 4 5

Q DB

Del(Q)

Page 15: Antrian (Queue)

Del(Q)Penghapusan elemen dapat dilakukan terhadap antrian jika komponen ada dalam antrian, untuk mengetahui bahwa elemen dalam antrian adalah jika posisi Depan <= belakang

(Q.depan <= Q.belakang)

Procedure Del (q: Antrian)If Q.depan<= q.belakang Then Write Q.isi[q.depan] q.depan = q.depan + 1Else Antrian Kosongfi

Page 16: Antrian (Queue)

Masalah

Pada saat posisi belakang berada pada posisi belakang dan Depan berada pada posisi n (hanya ada satu elemen), maka ketika kita lakukan Add(x,q) maka informasi mengatakan antrian penuh

0 1 2 3 4 5

QD

B

Algoritma :

Procedure Add(x : tipe data, Q: stack)

If Q.belakang < n then

Q.belakang= Q.Belakang+1

Q.isi[Q.belakang] = x

Else

Antrian Sudah Penuh

fi

QD

B

0 1 2 3 4 5 6

Page 17: Antrian (Queue)

40

Loket

BusSudah penuh

Page 18: Antrian (Queue)

Pergeseseran Elemen

Pergeseran nilai depan ketika terjadi penghapusan akan mengakibatkan antrian yang masih kosong dinyatakan penuh dimana jika posisi belakang berada posisi n, dan posisi depan berada pada n+1, dimana jika belakang < depan adalah antrian kosong ( tidak ada elemen)

Untuk menghindarinya adalah ketika terjadi penghapusan, maka elemen yang lain akan bergerak mengisi posisi yang dihapus, dengan demikian posisi depan akan tetap bernilai 1, dan posisi belakang akan berkurang 1. (q.belakang = q.belakang – 1).

Untuk menambah komponen tetap sama

Page 19: Antrian (Queue)

Add(x,q)

Add(A,Q) A

Q.Depan =1

Q.Belakang =0

Q.Depan =1

Q.Belakang =1

Add(B,Q) A BQ.Depan =1

Q.Belakang =2

Page 20: Antrian (Queue)

Add(C,Q) A B CQ.Depan =1

Q.Belakang =3

Add(D,Q) A B C DQ.Depan =1

Q.Belakang =4

Add(E,Q) A B C D EQ.Depan =1

Q.Belakang =5

Page 21: Antrian (Queue)

Del(Q)

Del(Q)

A B C D EQ.Depan =1

Q.Belakang =5

B C D EQ.Depan =1

Q.Belakang =4

Del(Q) C D EQ.Depan =1

Q.Belakang =3

Page 22: Antrian (Queue)

Del(Q)Del(Q) D E

Q.Depan =1

Q.Belakang =2

EQ.Depan =1

Q.Belakang =1

Del(Q)

Q.Depan =1

Q.Belakang =0

Del(Q)

Page 23: Antrian (Queue)

Latihan

Misalkan jumlah data yang boleh antri adalah 6, lakukan langkah-langkah berikut (dengan menggunakan konsep antrian bergeser)

1. Add(10,Q) 2. Add(15,Q) 3.Add(20,Q)4. Add(25,Q) 5. Del(Q) 6.Del(Q)7. Del(Q) 8. Add(10,Q) 9.Del(Q)10. Add(20,Q) 11.Add(10,Q) 12.Del(Q)

Buat Algoritma untuk Menghapus (Del Q)

Page 24: Antrian (Queue)

Procedure Del(Q)

If q.belakang>0 then

write q.isi[q.depan] // q.isi[1]

//lakukan pergeseran elemen

I = 1

while I < Q.belakang do

q.isi[i] = q.isi[i+1]

I = I + 1

e-while

q.belakang = q.belakang -1

Else

Antrian Kosong

fi

Page 25: Antrian (Queue)

Masalah

Page 26: Antrian (Queue)

• Misalkan jika pada antrian terdapat 1000 data, jika penghapusan dilakukan, maka waktu yang paling banyak digunakan adalah untuk melakukan pergeseran elemen yaitu menggeser 999 elemen yang ada dalam antrian.

• Untuk menghindari masalah itu, maka dapat digunakan antrian berputar (circular array)

Page 27: Antrian (Queue)

Antrian Berputar• Cara penghapusan dengan pergeseran elemen

kelihatannya sudah memecahkan persoalan yang kita miliki. Tetapi jika kita tinjau lebih lanjut, maka ada sesuatu yang harus dibayar lebih mahal, yaitu tentang penggeseran elemen itu sendiri. Jika kita mempunyai antrian dengan 10000 elemen, maka waktu terbanyak yang dihabiskan sesungguhnya hanya untuk melakukan proses penggeseran. Hali ini tentu saja sangat tidak efisien.

• Dengan melihat gambar-gambar ilustrasi, proses penambahan dan penghapusan elemen antrian sebenarnya hanya mengoperasikan sebuah elemen, sehingga tidak perlu ditambah dengan sejumlah operasi lain yang justru menyebabkan tingkat ketidak-efesienan bertambah.

Page 28: Antrian (Queue)

Antrian Berputar• Pemecahan lain adalah dengan memperlakukan

larik yang menyimpan elemen antrian sebagai larik yang memutar (circular), bukan lurus (straight), yakni dengan membuat elemen pertama larik terletak berdekatan langsung dengan elemen terakhir larik. Dengan cara ini, meskipun elemen terakhir telah terpakai, elemen baru masih tetap bisa ditambahkan pada elemen pertama, sejauh elemen pertama dalam keadaan kosong. Gambar berikut ini menunjukan ilustrasi antrian Q yang diimplementasikan dengan larik yang memutar

Page 29: Antrian (Queue)

Antrian BerputarB

D

Page 30: Antrian (Queue)

Insialisasi struktur data N = Jumlah elemen Antrian = record

Isi : array [ 1..N] of tipe dataDepan,belakang : integerCount : integer;

End

Insialisasi AntrianQ.depan =1Q.Belakang = 0Q.Count = 0

Page 31: Antrian (Queue)

Add(x,q) & Del(q)

Page 32: Antrian (Queue)

Procedure Add ( x : Tipe data, Q : Antrian)If Q.Count < N Then If Q. belakang = N Then Q.belakang = 1 Else Q.belakang = Q.belakang + 1 Fi Q.isi[q.belakang] = X Q.count = Q.count + 1Else Antrian PenuhFi

Procedure Del(Q)If Q.count > 0Then Write Q.isi[Q.depan] If Q.depan = N Then Q.depan = 1 Else Q.Depan = Q.depan +1 Fi Q.count = Q.Count -1Else Antrian KosongFi

Page 33: Antrian (Queue)

Tugas

• Buat simulasi antrian seperti yang digunakan oleh bank

• Waktu 1 Bulan