Review. Struktur Data & Algoritme (Data Structures & Algorithms) Objectives. Outline. Stacks & Queues

dokumen-dokumen yang mirip
Struktur Data & Algoritme (Data Structures & Algorithms)

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

Struktur Data dan Algoritma

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

Struktur Data & Algoritme (Data Structures & Algorithms)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Outline. Apa itu Recursion? Recursion

Algoritma Dan Struktur Data II. Queue

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

TIF 4201 Algoritma Dan Struktur Data

Outline. Struktur Data & Algoritme (Data Structures & Algorithms) Pengantar. Definisi. 2-3 Trees

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

BAB III QUEUE (ANTRIAN)

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

DIG1G3 Implementasi Struktur Data

Struktur Data & Algoritma

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

Algoritma Dan Struktur Data II

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Algoritma Dan Struktur Data II

ARNA FARIZA YULIANA SETIOWATI

Algoritma dan Struktur Data STACK

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

Pertemuan 7. REVIEW dan QUIS

LOGO STRUKTUR DATA QUEUE

Struktur Data dan Analisa Algoritma

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

KUM 5 IMPLEMENTASI QUEUE

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Stack. Gambar 1.1 Stack

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

Struktur Data Array. Rijal Fadilah S.Si

QUEUE (ANTRIAN) Struktur Data - Queue

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Algoritma dan Struktur Data. Queue

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

DIG1G3 Implementasi Struktur Data

Algoritma Pemrograman & Struktur Data

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

(3) BAHAN KAJIAN (materi ajar)

S T A C K ( T U M P U K A N )

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

BAB II STACK Atau TUMPUKAN

BAB IV Antrian(Queue)

KUM 3 IMPLEMENTASI LIST

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

BAB 3 STACK (TUMPUKAN)

Struktur Data & Algoritme (Data Structures & Algorithms)

KKKF33110 STRUKTUR DATA

Struktur Data & Algoritme (Data Structures & Algorithms)

Struktur Data dan Algoritme. Struktur Data & Algoritme (Data Structures & Algorithms) Struktur Data dan Algoritme. Objectives.

SATUAN ACARA PENGAJARAN

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

Algoritma dan Struktur Data. Ramos Somya

LAPORAN PRAKTIKUM RESMI QUEUE

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

Struktur Data dan Algoritma

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

MODUL PEMROGRAMAN 2. Queue (Antrian)

Algoritma Pemrograman [BS204]

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

1. E = a + 2b d + dh f g. Ubah ke dalam notasi postfix: a. Menggunakan Algoritma b. Secara manual c. Dari pohon biner menggunakan Stack

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

ANALISIS ALGORITMA BINARY SEARCH

BAB II STACK (TUMPUKAN)

05. Double Linked List

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

Data Structures. Class 3 Pengenalan Struktur Data dan ADT. Copyright 2006 by The McGraw-Hill Companies, Inc. All rights reserved.

BAB 2 LANDASAN TEORI

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktivitas Pembelajaran

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Pemrograman Berorientasi. Array dan Collections

Setelah mempelajari topik Analisis Algoritma di kuliah SDA, ada beberapa kompetensi yang perlu Anda kuasai:

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

RENCANA PEMBELAJARAN SEMESTER (RPS)

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

Struktur Data & Algoritme (Data Structures & Algorithms)

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

=il= ''#i&kwi. ' "*-ttt-{ut%:* lj %"q:dlrulrfi iil fl RENCANA PROGRAM DAN KEGIATAN PEMBELAJARAN SEMESTER (RPKPS) STRUKTUR DATA DISUSUN OLEH:

STRUKTUR DATA Pertemuan 1 s.d 8

ALGORITMA DAN STRUKTUR DATA

LIST LINIER & STACK. Pertemuan 6 Yani sugiyani, M.Kom

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO).

Modul Praktikum Algoritma dan Struktur Data

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Kuliah Online : TEKKOM [2013/VI]

# NINE Queue dengan Array

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

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

Transkripsi:

Struktur Data & Algoritme (Data Structures & Algorithms) Stacks & Queues Review Abstract data type (ADT) Kumpulan obyek dan metoda operasi yang mempresentasikan sifat-sifat abstrak bagi "user" dengan menyembunyikan bagaimana semua itu direpresentasikan dalam representasi data level yang lebih rendah Denny (denny@cs.ui.ac.id) Suryana Setiawan (setiawan@cs.ui.ac.id) Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2004/2005 Version 2.0 - Internal Use Only SDA/ST-Q/V2.0/2 Objectives Memahami cara kerja dan kegunaan Stack & Queue Dapat mengimplementasi stack dan queue Outline ADT Stacks Basic operations Examples of use Implementations Array-based and linked list-based ADT Queues Basic operations Examples of use Implementations Array-based and linked list-based SDA/ST-Q/V2.0/3 SDA/ST-Q/V2.0/4 1

Struktur data linear kumpulan komponen-komponen yang tersusun membentuk satu garis linear Stack: struktur data linear dimana penambahan atau pengurangan komponen dilakukan di satu ujung saja. Queue: struktur data linear dimana penambahan komponen dilakukan di satu ujung, sementara pengurangan dilakukan di ujung lain (yang satu lagi). Kedua struktur tersebut merupakan struktur data abstrak dimana implementasi pada tingkat lebih rendah dapat menggunakan struktur sequential (array) atau struktur berkait (linear linked-list). Stack Semua akses dibatasi pada elemen yang paling akhir disisipkan Operasi-operasi dasar: push, pop, top. Operasi-operasi dasar memiliki waktu yang konstan push Stack pop, top SDA/ST-Q/V2.0/5 SDA/ST-Q/V2.0/6 Contoh-contoh di dunia luar komputer Stack of papers Stack of bills Stack of plates Waktu O ( 1 ) per operasi stack. (Dengan kata lain, waktu konstan per operasi, tidak bergantung berapa banyak item yang tersimpan dalam stack). Aplikasi-aplikasi Stack dapat digunakan untuk memeriksa pasangan tanda kurung (Balanced Symbol), pasanganpasangan seperti {}, (), []. Misalnya: {()} boleh, dan {(}) tidak boleh (tidak dapat dilakukan dengan penghitungan simbol secara sederhana). Saat mendapatkan tanda kurung tutup, ia harus merupakan pasangan kurung buka yang paling terakhir ditemukan. Jadi, stack akan membantu pemeriksaan ini. SDA/ST-Q/V2.0/7 SDA/ST-Q/V2.0/8 2

Balanced Symbol Algorithm Buat stack baru yang kosong. Secara berulang baca token-token; jika token mrpk Kurung buka, push token ke dalam stack Kurung tutup, maka If stack kosong, then beri pesan error; otherwise pop stack dan periksa apakah simbol yang dipop dari stack merupakan pasangannya (jika tidak beri pesan error) Di akhir file, jika stack tidak kosong, beri pesan salah. Contoh Input: {()} Push { Push ( ; lalu stack berisikan {, ( Pop; popped item adalah ( yang adalah pasangan dari ). Stack sekarang berisikan {. Pop; popped item adalah { yang adalah pasangan dari }. End of file; stack kosong, jadi input benar. SDA/ST-Q/V2.0/9 SDA/ST-Q/V2.0/10 Performance Running time adalah O (N), yang mana N adalah jumlah data (jumlah token). Algoritma memproses input secara sikuensial, tidak perlu backtrack (mundur). Pemanggilan Stack Matching symbol serupa dengan method call dan method return, karena saat terjadi suatu method return, ia kembali ke method aktif yang paling akhir. Call stack dapat digunakan untuk menangani hal ini. Abstract idea: ketika suatu method call terjadi, simpan current state dalam stack. Saat return, kembalikan state dengan melakukan pop stack. SDA/ST-Q/V2.0/11 SDA/ST-Q/V2.0/12 3

Activation Records Actual implementation is slightly different (note that text describes the abstract implementation). The top of stack can store the current method environment. When method is called, the new environment is pushed onto stack. On return, old environment is restored by pop Applikasi Lainnya Penghapusan Recursion dapat dilakukan memanfaatkan stack Operator precedence parsing (di kuliah berikutnya: TBA) Pembalikan urutan (Reversing) dapat dengan mudah dilakukan dengan bantuan stack SDA/ST-Q/V2.0/13 SDA/ST-Q/V2.0/14 Implementasi Array Stages Stack dapat diimplementasi dengan suatu array dan suatu integer top yang mencatat indeks dalam array dari top of the stack. Untuk stack kosong maka top berharga -1. Saat terjadi push, lakukan dengan increment counter top, dan tulis ke dalam posisi top tsb dalam array. Saat terjadi pop, lakukan dengan decrement counter top. Push A top(-1) Push B B A top(0) A top(1) SDA/ST-Q/V2.0/15 SDA/ST-Q/V2.0/16 4

Array Doubling Jika stack full (karena semua posisi dalam array sudah terisi), kita dapat memperbesar array, menggunakan array doubling. Kita mengalokasi yang array baru dengan ukuran dua kali lipat semula, dan menyalin isi array yang lama ke yang baru: Object [] oldarray = array; array = new Object [oldarray.length * 2 ]; for (int j = 0; j < oldarray.length; j++) array[j] = oldarray[j]; Amortization technique Running Time Tanpa adanya array doubling, setiap operasi memiliki waktu konstan, dan tidak bergantung pada jumlah item di dalam stack. Dengan adanya array doubling, satu operasi push dapat (namun jarang) menjadi O(N). Namun, pada dasarnya adalah O(1) karena setiap array doubling yang memerlukan N assignments didahului oleh N/2 kali push yang non-doubling. SDA/ST-Q/V2.0/17 SDA/ST-Q/V2.0/18 Implementasi Linked-List item pertama dalam list = top of stack push: create suatu node baru Sisipkan sebagai elemen pertamadalam list pop: Memajukan top ke item kedua dalam list Queue Setiap akses dibatasi ke elemen yang paling terdahulu disisipkan Operasi-operasi dasar: enqueue, dequeue, getfront. Operasi-operasi dengan waktu konstan d c b a enqueue Queue dequeue getfront topofstack SDA/ST-Q/V2.0/19 SDA/ST-Q/V2.0/20 5

Examples Line for 21 tickets Line printer queue Queue is a British word for line. Waktu operasi yang O(1) karena mirip dengan stack. Applikasi-aplikasi Queues berguna untuk menyimpan pekerjaan yang tertunda. Kita kelak akan melihat beberapa contoh penggunaannya dalam kuliah-kuliah selanjutnya: Shortest paths problem (minimize the number of connecting flights between two arbitrary airports) Topological ordering: given a sequence of events, and pairs (a,b) indicating that event a MUST occur prior to b, provide a schedule. SDA/ST-Q/V2.0/21 SDA/ST-Q/V2.0/22 Queues: Simple Idea Simpan item-iten dalam suatu array dengan item terdepan pada index nol and item terbelakang pada index Back. Enqueue dengan mudah: increment Back. Dequeue tidak efisien: setiap elemen harus digeserkan ke depan. Akibatnya: waktu Dequeue akan menjadi O( N ). Better Idea Menggunakan Front untuk mencatat index terdepan. Dequeue dilakukan dengan increment Front. a b c d Front Back a b c d Front Back SDA/ST-Q/V2.0/23 SDA/ST-Q/V2.0/24 6

Circular Implementation Implementasi sebelumnya adalah O(1) per operasi. Tapi, setelah elemen di-enqueue pada posisi Array.length-1, array sekarang penuh, sekalipun queue secara lojik hampir kosong. Solusi: gunakan wraparound untuk menggunakan kembali sel-sel di awal array yang sudah kosong akibat dequeue. Jadi setelah increment, jika index keluar dari array maka kembali ke 0. Circular Example Kedua index Front dan Back melakukan wraparound jika melalui akhir array. b c d e f Front Back g b c d e f Back Front SDA/ST-Q/V2.0/25 SDA/ST-Q/V2.0/26 Implementasi Java Mostly straightforward; maintain Front Rear Current number of items in queue Bagian yang masih tricky adalah array doubling jika jumlah item dalam queue melebihi ukuran array. Linked-List Application front back enqueue: create a new node if empty, front = back else attach it as the new back dequeue: get node at the front a b c d front back SDA/ST-Q/V2.0/27 SDA/ST-Q/V2.0/28 7

Summary Kedua versi, baik array maupun linked-list berjalan dengan O(1) Linked-list memiliki overhead akibat diperlukannya reference pada setiap node Khususnya untuk Queues, implementasi array lebih sulit dilakukan Doubling space dalam implementasi array memerlukan space sekurangnya 3 kali jumlah item data. Further Reading Chapter 6, 15 SDA/ST-Q/V2.0/29 SDA/ST-Q/V2.0/30 What s Next Application of stack & queue, or Tree SDA/ST-Q/V2.0/31 8