Struktur Data dan Analisa Algoritma
Mahasiswa mampu menjelaskan teknik dasar abstraksi data, dalam bentuk struktur data Mahasiswa mampu menyelesaikan permasalahan dengan memanfaatkan struktur data Mahasiswa mampu menganalisis algoritma, dari sisi waktu komputasi dan kebutuhan memori
Representasi informasi merupakan dasar imu komputer Tujuan utama dari sebagian besar program komputer lebih pada bagaimana menyimpan (store) dan mendapatkan kembali (retrieve) informasi yang telah disimpan daripada melakukan perhitungan. Dikaitkan dengan kebutuhan penyimpanan dan running time, program harus mengorganisasikan datanya supaya dapat dilakukan pemrosesan yang efisien.
Struktur data mengorganisasikan data sehingga menjadikan program lebih efisien Permasalahan yang kompleks memerlukan komputasi yang lebih banyak sehingga efisiensi masih sangat diperlukan Pemilihan struktur data dan algoritma dapat membuat perbedaan running program yang signifikan
Permasalahan umum dalam suatu compiler dan text editor adalah menentukan apakah suatu tanda kurung dalam suatu text seimbang dan properly nested. Sebagai contoh, string “((())())()” adalah string dengan tanda kurung seimbang dan properly nested, sedangkan “)()(” tidak. Berikan suatu pendekatan dengan algoritma global untuk menyelesaikan permasalahan diatas, apakah suatu string (text) input seimbang dan properly nested atau tidak.
Misalkan Anda diminta untuk merancang suatu program untuk operasi-operasi terhadap dua polynomial (dengan derajat terbatas) yang diinputkan. Berikan alternatif bagaimana Anda menyimpan dua polynomial itu dalam suatu Tipe Data Abstrak sehingga operasi-operasi yang diminta bisa dilakukan
Diberikan array yang berisi record-record yang telah diurutkan berdasarkan salah satu field (key) yang ada pada setiap record. Berikan dua algoritma yang berbeda untuk mencari record dengan nilai field key tertentu yang ditentukan. Bandingkan kedua algoritma tersebut, mana yang lebih baik, mengapa ?
Suatu graf memuat himpunan objek (yang disebut vertex) dan himpunan edge yang masing-masing menghubungkan dua vertex. Gambarkan dua pendekatan berbeda untuk merepresentasikan keterhubungan vertex dalam graf.
Sederhana: List Stack Queue Kompleks: Tree Graph
Analisa masalah untuk menentukan operasi2 dasar yang harus didukung Tentukan kendala sumberdaya (time and space) untuk setiap operasi Pilih struktur data yang sesuai untuk memenuhi kebutuhan di atas
Suatu solusi dikatakan efisien jika dia dapat menyelesaikan permasalahan dan masih memenuhi kendala sumberdaya (time and space) ‘Cost/biaya’ dari suatu solusi adalah jumlah sumberdaya yang diperlukan oleh solusi untuk menyelesaikan permasalahan
Setiap struktur data mempunyai ‘cost and benefits’ Jarang sekali suatu struktur data lebih baik dari struktur data yang lain untuk semua keadaan Setiap struktur data memerlukan: Space (memori) untuk menyimpan item data Waktu untuk melakukan operasi-operasi dasar Programming effort
Adalah suatu definisi untuk sebuah tipe data, biasanya terkait dengan suatu himpunan nilai dan himpunan operasi pada tipe data tersebut Pada setiap operasi ADT, didefinisikan input dan output
Sruktur data adalah implementasi fisik dari sebuah ADT Dalam implementasi, setiap operasi dalam ADT
diimplementasikan dengan satu atau lebih subroutine
Struktur data selalu mengacu pada organisasi data dalam memori utama Struktur file: organisasi data pada memori sekunder
Item data mempunyai bentuk logik dan fisik Bentuk logik: definisi item dalam sebuah ADT
Ex: Integers in mathematical sense: +, Bentuk fisik: implementasi item data dalam sebuah struktur data Ex: 16/32 bit integers, overflow.
Data Type ADT: Type Operations
Data Items: Logical Form
Data Structure: Storage Space Subroutines
Data Items: Physical Form