Kode MK/ Pemrograman Terstruktur 2

Slides:



Advertisements
Presentasi serupa
Pertemuan 5 Struktur Data
Advertisements

STRUKTUR DATA (7) single linked list circular
bentuknya, yang dapat berubah pada saat runtime.
LINKED LIST.
QUEUE II. IMPLEMENTASI QUEUE
STRUKTUR DATA PERTEMUAN 6
QUEUE.
LINKED LIST.
LINK LIST Latifah Rifani.
PENCARIAN (SEARCHING)
STACK (Tumpukan).
Struktur Data List Linear : Linked List (Double Linkedlist)
Pertemuan ketujuh Struktur data st3telkom.ac.id
Struktur Data List Linear : Linked List (Single Linkedlist)
LINKED LIST.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Pertemuan : Algoritma & Struktur Data
Stack.
CS1023 Pemrograman Komputer Lecture 20 Array / Tabel [2]
Program Studi Teknik Informatika
KUG1E3/ Pemrograman Terstruktur 1
4. Linked List (List Linier)
QUEUE Denny Agustiawan,M.pd
KUG1E3/ Pemrograman Terstruktur 1
Pencarian pada Array Tim PHKI Modul Dasar Pemrograman
Program Studi Teknik Informatika
Defri Kurniawan QUEUE DENGAN LIST Defri Kurniawan
Struktur Organisasi Data 2
Queue.
STRUKTUR DATA QUEUE (Antrian)
QUEUE Anifuddin Azis.
LIST (SENARAI) Anifuddin Azis.
KUG1E3/ Pemrograman Terstruktur 1
STACK (Tumpukan).
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.
2. Stack (Tumpukan) 2.1. Definisi
Program Studi Teknik Informatika
NAMA : SITI HAJAR NIM : UNIT : B NO.HP : 0852 – 2000 – 3786.
Array Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
Nama : Siti Hajar Nim : Unit : B/III No.Hp : 0852 –
Stack (Tumpukan).
Program Studi Teknik Informatika
Circular QUEUE 6.3 & 7.3 NESTED LOOP.
STACK (Tumpukan).
Menghapus Simpul dan Travelsal
KUG1E3/ Pemrograman Terstruktur 1
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
KUG1E3/ Pemrograman Terstruktur 1
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
Algoritma dan Struktur Data
STRUKTUR DATA PERTEMUAN 7
Single Linked List Circular (SLLC)
Dasar Algoritma dan Pemrograman
Defri Kurniawan VARIASI LIST Defri Kurniawan
9 ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA (LAB) OLEH :
KUG1E3/ Pemrograman Terstruktur 1
Kode MK/ Pemrograman Terstruktur 2
STRUKTUR DATA Teknik Informatika S1
Queue Algoritma dan Struktur Data.
QUEUE (Antrian).
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
Defri Kurniawan QUEUE DENGAN LIST Defri Kurniawan
SINGLE LINKED LIST (SLL)
Stack dan Queue dengan Respresentasi Linked List
Transcript presentasi:

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

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 11/11/2018

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 11/11/2018

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 11/11/2018

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 11/11/2018

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} 11/11/2018

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 11/11/2018

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 : 11/11/2018

Alternatif 1 Ilustrasi Queue kosong 11/11/2018

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. 11/11/2018

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/11/2018

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 11/11/2018

Alternatif II Ilustrasi Queue kosong 11/11/2018

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 11/11/2018

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 11/11/2018

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. 11/11/2018

Alternatif III Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD “sedang” berada di posisi awal: 11/11/2018

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 11/11/2018

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 11/11/2018

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. 11/11/2018

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”. 11/11/2018

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 2 4 5 7 10 Setelah penghapusan sebuah elemen (Head=2, Tail=6) 3 6 9 15 1 2 4 5 7 8 10 11/11/2018

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

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} 11/11/2018

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

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 if Q.Tail<NMax then Q.Tail  Q.Tail + 1 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.TabQ[Q.Tail]  X {menyisipkan X} 11/11/2018

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 11/11/2018

Latihan Buatlah ADT queue untuk representasi fisik berkait dengan pointer Carilah referensi tentang priority queue, buatlah ADT-nya 11/11/2018

Referensi Diktat Kuliah IF2181 Struktur Data, Inggriani Liem, ITB, 2003. 11/11/2018

11/11/2018