Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

dokumen-dokumen yang mirip
QUEUE Antrian 1. DEFINISI

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Struktur Data. Queue (Antrian)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

IKG2A3/ Pemrograman Terstruktur 2

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Representasi Logic List Linier

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

Kode MK/ Pemrograman Terstruktur 2

LIST LINIER 1. DEFINISI

CCH1A4 / Dasar Algoritma & Pemrogramanan

CCH1A4 / Dasar Algoritma & Pemrogramanan

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Pengantar Struktur Data

BAB 1 PENGANTAR KE STRUKTUR DATA

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

Lab. Teknik Informatika Struktur Data 1

CCH1A4 / Dasar Algoritma & Pemrogramanan

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

CCH1A4 / Dasar Algoritma & Pemrogramanan

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

BAB IX LINKED LIST (SENARAI BERANTAI)

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

Bagian I. Studi Kasus [82] Tanda tangan:

CCH1A4 / Dasar Algoritma & Pemrogramanan

MODUL 6 SINGLE & DOUBLE LINKED LIST

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

LOGO STRUKTUR DATA QUEUE

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Variasi List Linier (Bagian 2)

QUEUE (ANTRIAN) Struktur Data - Queue

BAB III QUEUE (ANTRIAN)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

BAB XI Manipulasi Binary Tree

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Pertemuan 7. REVIEW dan QUIS

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

ALGORITMA & PEMROGRAMAN

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

BAB II STACK Atau TUMPUKAN

Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Pemrograman & Struktur Data

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

LAPORAN PRAKTIKUM RESMI QUEUE

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

BAB IX LINKED LIST (SENARAI BERANTAI)

Pendahuluan Struktur Data. Nisa ul Hafidhoh

CCH1A4 / Dasar Algoritma & Pemrogramanan

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

Abstract Data Type (ADT)

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

(3) BAHAN KAJIAN (materi ajar)

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

CCH1A4 / Dasar Algoritma & Pemrogramanan

KONSEP POINTER DAN LINKED LIST

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

LAPORAN PRAKTIKUM IX. Oleh:

LATIHAN UTS Tim Pengajar KU1071 Sem

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

KONSEP POINTER DAN LINKED LIST

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

Variasi List Linier. Nisa ul Hafidhoh, MT

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

KERUGIAN DAN KEUNTUNGAN LINKED LIST

Algoritma dan Struktur Data

KKKF33110 STRUKTUR DATA

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Algoritma Dan Struktur Data II. Queue

RENCANA PEMBELAJARAN SEMESTER (RPS)

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

A. Bagian I. Studi Kasus

Transkripsi:

Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Queue (Antrian) 1 8/25/2015

Pendahuluan Pada bab ini kita akan membahas queue, yang sebenarnya mempunyai ADT hampir sama dengan ADT list linier, hanya saja, insert hanya dapat dilakukan pada elemen terakhir, dan delete hanya pada elemen pertama Struktur data queue banyak dipakai dalam informatika, misalnya untuk merepresentasi : antrian job yang harus ditangani oleh sistem operasi antrian dalam dunia nyata Struktur data ini juga sering digunakan untuk membantu algoritma pada struktur data nonlinier 2 8/25/2015

Pendahuluan Pada bab ini akan lebih difokuskan pada pembahasan representasi fisik queue secara kontigu dengan tabel, karena representasi ini unik, dikarenakan sifat alokasi statis dari tabel 3 8/25/2015

DEFINISI QUEUE (Antrian) adalah list linier yang : Dikenali elemen pertama (HEAD) dan elemen terakhirnya (TAIL), Aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut: Penyisipan selalu dilakukan setelah elemen terakhir Penghapusan selalu dilakukan pada elemen pertama Satu elemen dengan yang lain dapat diakses melalui informasi NEXT 4 8/25/2015

DEFINISI Secara lojik, sebuah QUEUE dapat digambarkan sebagai list linier yang setiap elemennya adalah type ElmtQ : < Info : InfoType, Next :address> Alamat elemen pertama (HEAD) dan elemen terakhir(tail) dicatat 5 8/25/2015

DEFINISI FUNGSIONAL QUEUE IsEmpty: Q boolean { Test terhadap Q: true jika Q kosong, false jika Q tidak kosong} IsFull : Q boolean { Test terhadap Q: true jika memori Q sudah penuh, false jika memori Q tidak penuh} NBElmt(Q) : Q integer { Mengirimkan banyaknya elemen Q } CreateEmpty : Q {Membuat sebuah antrian kosong } Add :ElmtQ x Q Q { Menambahkankan sebuah elemen setelah elemen ekor QUEUE } Del : Q Q x ElmtQ { Menghapus kepala QUEUE, } { mungkin Queue menjadi kosong} 6 8/25/2015

Representasi Fisik Queue Pada bab ini kita akan membahas representasi fisik queue secara kontigu dengan tabel Memori tempat penyimpan elemen adalah sebuah tabel dengan indeks 1.. IdxMax. IdxMax dapat juga dipetakan ke kapasitas Queue. Representasi field Next: Jika i adalah address sebuah elemen, maka suksesor i adalah Next dari elemen Queue 7 8/25/2015

Representasi Fisik Queue Alternatif I : Tabel dengan hanya representasi TAIL adalah indeks elemen terakhir, HEAD selalu diset sama dengan 1 jika Queue tidak kosong. Jika Queue kosong, maka HEAD=0. Ilustrasi Queue tidak kosong, dengan 5 elemen : 8 8/25/2015

Alternatif 1 Ilustrasi Queue kosong 9 8/25/2015

Alternatif 1 Algoritma paling sederhana untuk penambahan elemen jika masih ada tempat adalah dengan memajukan TAIL. Kasus khusus untuk Queue kosong karena HEAD harus diset nilainya menjadi 1. Algoritma paling sederhana untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen HEAD, geser semua elemen mulai dari HEAD+1 s/d TAIL (jika ada), kemudian TAIL mundur. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. 10 8/25/2015

Alternatif II Tabel dengan representasi HEAD dan TAIL, HEAD bergerak ketika sebuah elemen dihapus jika Queue tidak kosong. Jika Queue kosong, maka HEAD=0. Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama HEAD sedang berada di posisi awal: 11 8/25/2015

Alternatif II Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama HEAD tidak berada di posisi awal. Hal ini terjadi akibat algoritma penghapusan yang dilakukan 12 8/25/2015

Alternatif II Ilustrasi Queue kosong 13 8/25/2015

Alternatif II Algoritma untuk penambahan elemen sama dengan alternatif I: jika masih ada tempat adalah dengan memajukan TAIL. Kasus khusus untuk Queue kosong karena HEAD harus diset nilainya menjadi 1. Algoritmanya sama dengan alternatif I Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen HEAD, kemudian HEAD maju. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI Algoritma ini TIDAK mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi efisien 14 8/25/2015

Alternatif II Namun suatu saat terjadi keadaan Queue penuh tetapi semu sebagai berikut : Jika keadaan ini terjadi, haruslah dilakukan aksi menggeser elemen untuk menciptakan ruangan kosong. Pergeseran hanya dilakukan jika dan hanya jika TAIL sudah mencapai IndexMax 15 8/25/2015

Alternatif III Tabel dengan representasi HEAD dan TAIL yang berputar mengelilingi indeks tabel dari awal sampai akhir, kemudian kembali ke awal. Jika Queue kosong, maka HEAD=0. Representasi ini memungkinkan tidak perlu lagi ada pergeseran yang harus dilakukan seperti pada alternatif II pada saat penambahan elemen. 16 8/25/2015

Alternatif III Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD sedang berada di posisi awal: 17 8/25/2015

Alternatif III Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD tidak berada di posisi awal, tetapi masih lebih kecil atau sebelum TAIL. Hal ini terjadi akibat algoritma penghapusan /Penambahan yang dilakukan 18 8/25/2015

Alternatif III Ilustrasi Queue tidak kosong, dengan 5 elemen, HEAD tidak berada di posisi awal, tetapi lebih besar atau sesudah TAIL. Hal ini terjadi akibat algoritma penghapusan/penambahan yang dilakukan 19 8/25/2015

Alternatif III Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilaielemen HEAD, kemudian HEAD maju. Penentuan suatu suksesor dari indeks yang diubah/ maju dibuat Seperti pada algoritma penambahan elemen: jika HEAD mencapai IdxMAx, maka suksesor dari HEAD adalah 1. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. 20 8/25/2015

Alternatif III Algoritma ini efisien karena tidak perlu pergeseran, dan seringkali strategi pemakaian tabel semacam ini disebut sebagai circular buffer, dimana tabel penyimpan elemen dianggap sebagai buffer. 21 8/25/2015

Contoh kasus Alternatif 2 Antrian kosong (Head=0, Tail=0) 1 2 3 4 5 6 7 8 9 10 Setelah penambahan elemen 8,3,6,9,15,1 (Head=1, Tail=6) 8 3 6 9 15 1 1 2 3 4 5 6 7 8 9 10 Setelah penghapusan sebuah elemen (Head=2, Tail=6) 3 6 9 15 1 1 2 3 4 5 6 7 8 9 10 22 8/25/2015

Contoh kasus Alternatif 2 Setelah penghapusan sebuah elemen (Head=3, Tail=6) 6 9 15 1 1 2 3 4 5 6 7 8 9 10 Setelah penambahan elemen 3, 6, 8,10 (Head=3, Tail=10) 6 9 15 1 3 6 8 10 1 2 3 4 5 6 7 8 9 10 Setelah penambahan elemen 2 (Head=1, Tail=9) 6 9 15 1 3 6 8 10 2 1 2 3 4 5 6 7 8 9 10 23 8/25/2015

Contoh kasus Alternatif 2 Kamus Umum constant NMax: integer = 100 constant Nil: integer = 0 type infotype = integer type Queue = <TabQ: array[1..nmax] of infotype; Head,Tail: integer> Function EmptyQ(Q:Queue) boolean {True jika Q antrian kosong} Procedure CreateEmpty(output Q:Queue) {I.Q. F.Q. Terdefinisi antrian kosong Q} 24 8/25/2015

Contoh kasus Alternatif 2 function IsFullQ(Q:Queue) boolean {True Q penuh} kamus: algoritma (Q.Head = 1) and (Q.Tail=NMax) 25 8/25/2015

Procedure AddQ(input/output Q:Queue; input X:infotype) {I.Q. Q antrian, terdefinisi, mungkin kosong} {F.Q. X elemen terakhir Q jika antrian tidak penuh} Kamus i:integer Algoritma if IsFull(Q) then output( Antrian penuh ) else if Empty(Q) then Q.Head 1 Q.Tail 1 else if Q.Tail<NMax then Q.Tail Q.Tail + 1 else for i Q.Head to Q.Tail do Q.TabQ[i-Q.Head+1] Q.TabQ[i] Q.Tail Q.Tail-Q.Head+2 Q.Head 1 Q.TabQ[Q.Tail] X {menyisipkan X} 26 8/25/2015

Contoh kasus Alternatif 2 Procedure DelQ(input/output Q:Queue; output X:infotype) {I.Q. Q antrian, terdefinisi, tidak kosong} {F.Q. X elemen antrian yang dihapus} Kamus i:integer Algoritma X Q.TabQ[Q.Head] if Q.Head=Q.Tail then CreateEmpty(Q) else Q.Head Q.Head+1 27 8/25/2015

Latihan Buatlah ADT queue untuk representasi fisik berkait dengan pointer Carilah referensi tentang priority queue, buatlah ADT-nya 28 8/25/2015

Referensi Diktat Kuliah IF2181 Struktur Data, Inggriani Liem, ITB, 2003. 29 8/25/2015

30 8/25/2015 THANK YOU