Antrian (Queue) Membentuk Antrian 5 4 Depan 3 2 1 Belakang.

Slides:



Advertisements
Presentasi serupa
Antrian (Queue) Desain dan Analisis Algoritma
Advertisements

Pointer Struktur Data.
STRUKTUR DATA Struktur Data - Gerlan A. Manu, ST.,MKom 1.
Queue (Antrian).
Dr. Anto Satriyo Nugroho, M.Eng
MATRIKS 1. PENDAHULUAN Sebuah larik yang setiap elemennya adalah larik disebut matriks. Dibawah ini contoh matriks identitas Sebuah system persamaan.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Rahmat Deddy Rianto Dako, ST, M.Eng
PERTEMUAN KE-7 Kamis, 14 Oktober QUEUE (Antrian) Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (insertion)
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
Kuliah Ke-4 Antrian / Queue (Bab 4)
STRUKTUR DATA PERTEMUAN 6
QUEUE.
keLompok 3 … by : Ayu Dwi Asnantia Indah Yuniawati Khairiah 1.7 Rasio Pembagian Segmen Garis 1.8 titik tengah segmen garis 1.9 titik berat dari segitiga.
Queue.
Ihr Logo 3. SISTEM OPERASI Manajemen Proses by
Pertemuan (6) QUEUE (ANTREAN) IMAM SIBRO MALISI NIM :
Learning Vector Quantization (LVQ)
Queue.
Queue.
QUEUE (ANTRIAN).
Queue.
Chapter 12 Antrian (Queue) Program Studi Ekstensi DTE FTUI Slides©2007.
QUEUE / ANTRIAN Queue / antrian adalah sebuah bentuk list dengan operasi penyisipan hanya dapat dilakukan pada satu sisi yang disebut belakang (REAR) dan.
4 QUEUE (ANTREAN) BAB Definisi Queue (antrean)
Mempelajari tipe data queue dan bagaimana menggunakan fungsi insert, remove, is_empty dan is_full. Mempelajari bagaimana mengimplementasikan queue dengan.
Linear Data Structures (Queue)
Circular Queue.
ANTRIAN ( QUEUE ) Fajrizal.
ANTRIAN Farid Wajdi Yusuf Pendidikan Teknik Informatika dan Komputer
STRUKTUR DATA Queue atau Antrian.
Pertemuan : Algoritma & Struktur Data
Queue By Serdiwansyah N. A. 1. Queue Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain.
QUEUE hms_sept.
Program Studi Teknik Informatika
BAB3 QUEUE 6.3 & 7.3 NESTED LOOP.
QUEUE Copyright 2008 by Yohana.
QUEUE Denny Agustiawan,M.pd
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Program Studi Teknik Informatika
Defri Kurniawan QUEUE Defri Kurniawan
Antrian (Queue).
Struktur Organisasi Data 2
Queue.
STRUKTUR DATA QUEUE (Antrian)
QUEUE (ANTRIAN ) Disusun Oleh : Kelompok 2 Siti Hajar ( )
Program Studi Teknik Informatika
Program Studi Teknik Informatika
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
Struktur Data Khoiriya Latifa, M.Kom.
Program Studi Teknik Informatika
Program Studi Teknik Informatika
Circular QUEUE 6.3 & 7.3 NESTED LOOP.
ARRAY.
STRUKTUR DATA PERTEMUAN 8
STRUKTUR DATA TUMPukAN (STACK).
Queue(Antrian).
STACK & QUEUE Struktur Data.
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
STRUKTUR DATA PERTEMUAN 7
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
Rahmady Liyantanto liyantanto.wordpress.com
Pertemuan – 7 Antrian / Queue (Bab 4).
TIF 4201 Algoritma Dan Struktur Data Abstract Data Type
STRUKTUR DATA Teknik Informatika S1
STACK (Tumpukan) Tumpukan Koin.
Queue Algoritma dan Struktur Data.
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
Defri Kurniawan QUEUE DENGAN LIST Defri Kurniawan
Transcript presentasi:

Antrian (Queue) Membentuk Antrian 5 4 Depan 3 2 1 Belakang

Masuk Keluar

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

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

Jaringan Komputer Server User 5 User 1 User 3 User 4 User 2

Jaringan Komputer Server User 5 Tabel Proses User 1 P1 x1 y1 P2 x2 y2

Antrian Dengan Larik A B C D E Deklarasi struktur data Queue = record 0 1 2 3 4 5 depan Belakang Deklarasi struktur data Queue = record isi : array[1..n] of tipe data depan,belakang : integer end

Inisialisasi Queue Q Posisi awal Q : Queue Q.Depan = 1 Q.Belakang = 0 0 1 2 3 4 5 B D Operasi Pada Antrian Menambah Elemen ( Add (x,q)) menambah elemen x kedalam Antrian Q Menghapus Elemen ( Del(q)) Menghapus elemen dari antrian Q

Menambah Elemen (Add(x,Q)) Add(Mobil,Q) 0 1 2 3 4 5 B D

Menambah Elemen (Add(x,Q)) Add(Mobil,Q) 0 1 2 3 4 5 B D

Menambah Elemen (Add(x,Q)) Add(Mobil,Q) 0 1 2 3 4 5 B D D Q B Add(Mobil,Q) 0 1 2 3 4 5 B D Q Add(Mobil,Q) 0 1 2 3 4 5

Menambah Elemen (Add(x,Q)) Penambahan elemen dapat dilakukan pada saat Antrian belum penuh, dimana antrian belum penuh jika posisi belakang (Q.Belakang<n) 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

Menghapus Elemen(Del(Q)) Sifat antrian adalah FIFO (First In First Out), sehingga data yang dihapus duluan adalah data yang duluan masuk B D Q Del(Q) 0 1 2 3 4 5 Q D B Del(Q) 0 1 2 3 4 5

Del(q) Q Q Q Del(Q) Del(Q) Del(Q) D B 0 1 2 3 4 5 D B 0 1 2 3 4 5 D B 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

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 + 1 Else Antrian Kosong fi

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 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 D Q B 0 1 2 3 4 5 D Q B 0 1 2 3 4 5 6

Bus Sudah penuh 40 Loket

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

Add(x,q) A A B Add(A,Q) Add(B,Q) Q.Depan =1 Q.Belakang =1 Q.Depan =1

A B C A B C D A B C D E Add(C,Q) Add(D,Q) Add(E,Q) Q.Depan =1 Q.Belakang =3 A B C D Add(D,Q) Q.Depan =1 Q.Belakang =4 A B C D E Add(E,Q) Q.Depan =1 Q.Belakang =5

Del(Q) A B C D E B C D E C D E Del(Q) Del(Q) Q.Depan =1 Q.Belakang =5

Del(Q) D E E Del(Q) Del(Q) Del(Q) Q.Depan =1 Q.Belakang =2 Q.Depan =1

Latihan Misalkan jumlah data yang boleh antri adalah 6, lakukan langkah-langkah berikut (dengan menggunakan konsep antrian bergeser) Add(10,Q) 2. Add(15,Q) 3.Add(20,Q) Add(25,Q) 5. Del(Q) 6.Del(Q) 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)

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

Masalah

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)

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.

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

Antrian Berputar B 06 D 5 1 2 4 3

Insialisasi struktur data N = Jumlah elemen Antrian = record Isi : array [ 1..N] of tipe data Depan,belakang : integer Count : integer; End Insialisasi Antrian Q.depan =1 Q.Belakang = 0 Q.Count = 0

Add(x,q) & Del(q)

Procedure Del(Q) If Q.count > 0 Then Write Q.isi[Q.depan] If Q.depan = N Q.depan = 1 Else Q.Depan = Q.depan +1 Fi Q.count = Q.Count -1 Antrian Kosong Procedure Add ( x : Tipe data, Q : Antrian) If Q.Count < N Then If Q. belakang = N Q.belakang = 1 Else Q.belakang = Q.belakang + 1 Fi Q.isi[q.belakang] = X Q.count = Q.count + 1 Antrian Penuh

Tugas Buat simulasi antrian seperti yang digunakan oleh bank Waktu 1 Bulan