Struktur Data & Algoritme (Data Structures & Algorithms)

dokumen-dokumen yang mirip
Review. Struktur Data & Algoritme (Data Structures & Algorithms) Objectives. Outline. Stacks & Queues

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

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

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

TIF 4201 Algoritma Dan Struktur Data

BAB III QUEUE (ANTRIAN)

DIG1G3 Implementasi Struktur Data

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Algoritma dan Struktur Data STACK

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

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

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

Pertemuan 7. REVIEW dan QUIS

QUEUE (ANTRIAN) Struktur Data - Queue

Algoritma dan Struktur Data. Queue

LOGO STRUKTUR DATA QUEUE

Struktur Data dan Analisa Algoritma

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

KUM 5 IMPLEMENTASI QUEUE

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Stack. Gambar 1.1 Stack

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

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

Struktur Data Array. Rijal Fadilah S.Si

BAB IV Antrian(Queue)

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

DIG1G3 Implementasi Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

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

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

Algoritma Pemrograman & Struktur Data

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

(3) BAHAN KAJIAN (materi ajar)

LAPORAN PRAKTIKUM RESMI QUEUE

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

BAB 3 STACK (TUMPUKAN)

Struktur Data & Algoritme (Data Structures & Algorithms)

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

KUM 3 IMPLEMENTASI LIST

Struktur Data & Algoritme (Data Structures & Algorithms)

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

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

SATUAN ACARA PENGAJARAN

Algoritma dan Struktur Data. Ramos Somya

KKKF33110 STRUKTUR DATA

Pemrograman Berorientasi. Array dan Collections

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

Struktur Data dan Algoritma

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

MODUL PEMROGRAMAN 2. Queue (Antrian)

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

Algoritma Pemrograman [BS204]

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

ANALISIS ALGORITMA BINARY SEARCH

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

BAB II STACK (TUMPUKAN)

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

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

05. Double Linked List

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

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktivitas Pembelajaran

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

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

Struktur Data & Algoritme (Data Structures & Algorithms)

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

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

=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

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

ALGORITMA DAN STRUKTUR DATA

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

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

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

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Modul Praktikum Algoritma dan Struktur Data

Struktur Data dan Algoritma

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

RENCANA PEMBELAJARAN

Transkripsi:

Struktur Data & Algoritme (Data Structures & Algorithms) Stacks & Queues 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 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 SDA/ST-Q/V2.0/2 1

Objectives Memahami cara kerja dan kegunaan Stack & Queue Dapat mengimplementasi stack dan queue SDA/ST-Q/V2.0/3 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/4 2

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). SDA/ST-Q/V2.0/5 Stack Semua akses dibatasi pada elemen yang paling akhir disisipkan Operasi-operasi dasar: push, pop, top. Operasi-operasi dasar memiliki waktu yang konstan push pop, top Stack SDA/ST-Q/V2.0/6 3

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). SDA/ST-Q/V2.0/7 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/8 4

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. SDA/ST-Q/V2.0/9 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/10 5

Performance Running time adalah O (N), yang mana N adalah jumlah data (jumlah token). Algoritma memproses input secara sikuensial, tidak perlu backtrack (mundur). SDA/ST-Q/V2.0/11 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/12 6

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 SDA/ST-Q/V2.0/13 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/14 7

Implementasi Array 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. SDA/ST-Q/V2.0/15 Stages Push A Push B B top(1) top(-1) A top(0) A SDA/ST-Q/V2.0/16 8

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 SDA/ST-Q/V2.0/17 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/18 9

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 d c b a topofstack SDA/ST-Q/V2.0/19 Queue Setiap akses dibatasi ke elemen yang paling terdahulu disisipkan Operasi-operasi dasar: enqueue, dequeue, getfront. Operasi-operasi dengan waktu konstan enqueue Queue dequeue getfront SDA/ST-Q/V2.0/20 10

Examples Line for 21 tickets Line printer queue Queue is a British word for line. Waktu operasi yang O(1) karena mirip dengan stack. SDA/ST-Q/V2.0/21 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/22 11

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 ). SDA/ST-Q/V2.0/23 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/24 12

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. SDA/ST-Q/V2.0/25 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/26 13

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. SDA/ST-Q/V2.0/27 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/28 14

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. SDA/ST-Q/V2.0/29 Further Reading Chapter 6, 15 SDA/ST-Q/V2.0/30 15

What s Next Application of stack & queue, or Tree SDA/ST-Q/V2.0/31 16