• Tidak ada hasil yang ditemukan

Struktur Data & Algoritme (

N/A
N/A
Protected

Academic year: 2023

Membagikan "Struktur Data & Algoritme ("

Copied!
6
0
0

Teks penuh

(1)

Struktur Data & Algoritme (

Data Structures & Algorithms

)

Denny ([email protected]) Suryana Setiawan ([email protected])

Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2004/2005

Version 2.0 - Internal Use Only

Wrap Up

SDA/WRAP-UP/V2.0/2

Objectives

„ Mengulas kembali dan merangkum konsep-konsep penting dalam kuliah Struktur Data dan Algoritme

SDA/WRAP-UP/V2.0/3

Struktur Data dan Algoritme

„ Data structure (aka ADT – Abstract Data Type) = representation + operations

„ operation allowed may vary between data structure

• insert

• delete

• access (find / get)

• update

„ Algoritme

„ Suatu set instruksi yang harus diikuti oleh computer untuk memecahkan suatu masalah.

„ Program harus berhenti dalam batas waktu yang wajar (reasonable)

„ Tidak terikat pada programming languageatau bahkan paradigma pemrograman (mis. Procedural vs Object-Oriented)

SDA/WRAP-UP/V2.0/4

Struktur Data dan Algoritme

„ Mengapa dalam penyimpanan data diperlukan sebuah struktur?

„ Supaya lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut

„ Mengapa struktur data penting? Bukankan hanya algoritme saja yang menentukan running time?

„ Problem: mencari sebuah integer dalam data-data yang terurut

„ Algoritme: binary search!!!

„ Struktur data:

• binary search pada array?

• binary search pada linked list? doubly linked list?

„ Struktur data mana yang lebih efisien?

(2)

SDA/WRAP-UP/V2.0/5

Struktur Data dan Algoritme

„ Contoh Lain:

„ Problem: mengevaluasi ekspresi: (5 + 2) * 7

„ menggunakan struktur data Stack

„ struktur data + algoritme = program

„ Algorithms require the use of a proper representation of data to achieve efficiency

„ Struktur data membantu tercapainya Component Reusability.

„ Menerapkan konsep OO paradigm: encapsulation, information-hiding dan abstraction.

Analisa Algoritme: what?

„ Mengukur jumlah sumber daya (time dan space) yang diperlukan oleh sebuah algoritme

„ Waktu yang diperlukan (running time) oleh sebuah algoritme cenderung tergantung pada jumlah input yang diproses.

ÎRunning timedari sebuah algoritme adalah fungsi dari jumlah inputnya

„ Selalu tidak terikat pada platform (mesin + OS), bahasa pemrograman, kualitas kompilator atau bahkan paradigma pemrograman (mis. Procedural vs Object-Oriented)

SDA/WRAP-UP/V2.0/7

Analisa Algoritme: how?

„ Notasi O (sering disebut sebagai “notasi big-Oh”)

„ Digunakan sebagai bahasa untuk membahas efisiensi dari sebuah algoritme: log n, linier, n log n, n2, n3, ...

„ Big Oh digunakan untuk merepresentasikan laju pertumbuhan (growth rate)

„ Dominant Term

„ Mengapa hanya suku yang memiliki pangkat tertinggi/dominan saja yang diperhatikan?

„ Untuk n yang besar, suku dominan lebih mengindikasikan perilaku dari algoritme.

„ Untuk n yang kecil, suku dominan tidak selalu mengindikasikan perilakunya, tetapi program dengan input kecil umumnya berjalan sangat cepat sehingga kita tidak perlu perhatikan.

Orde Fungsi Running-Time

Function Name c Constant log N Logarithmic

log

2

N Log-squared

N Linear N log N N log N

N

2

Quadratic

N

3

Cubic

2

N

Exponential

N! Factorial

(3)

SDA/WRAP-UP/V2.0/9

Fungsi Running-Time

„ Untuk input yang sedikit, beberapa fungsi lebih cepat dibandingkan dengan yang lain.

SDA/WRAP-UP/V2.0/10

Fungsi Running-Time (2)

„ Untuk input yang besar, beberapa fungsi running- time sangat lambat - tidak berguna.

SDA/WRAP-UP/V2.0/11

Sorting

„ Sorting = pengurutan

„ Sorted = terurut menurut kaidah tertentu

„ Sorting umumnya dipakai dalam pre-processing untuk mempercepat proses-proses berikutnya.

„ misalnya:

• mencari elemen Îbinary search

• menghilangkan duplikasi

SDA/WRAP-UP/V2.0/12

Bubble Sort

„ Idea: Gelembung udara (ringan) dalam air akan naik ke atas, air (berat) yang di atasnya akan turun.

„ Worst case: O(n2)

„ Best case: O(n) -- when? why?

(4)

SDA/WRAP-UP/V2.0/13

Selection sort & Insertion sort

„ Incremental approach

„ 2 array: terurut dan tidak terurut

„ Awalnya array yang terurut kosong. Kosong Æsorted

„ Ambil 1 elemen dari array yang tidak terurut, masukkan ke array yang terurut sedemikian rupa sehingga tetap menjaga keterurutan data (invariant).

„ Lakukan sebanyak n kali.

„ Selection:

„ Ambil 1 element yang terkecil dari array yang tidak terurut ÎO(n)

„ letakkan di paling belakang di array yang terurut Î O(1)

„ Insertion:

„ Ambil 1 element (yang mana saja) dari array yang tidak terurut ÎO(1)

„ sisipkan di posisi yang benar dalam array yang terurut supaya array tetap terurut ÎO(n)

Merge Sort & Quick sort

„ Divide and Conquer approach ÎRecursive

„ Merge sort:

„ Divide: bagi array menjadi 2 bagian yang sama besar ÎO(1)

„ Conquer:

• kalau panjang array 0 atau 1 Æsudah terurut

• menggabungkan (merge) dua array yang sudah terurut ÎO(n)

„ Dilakukan log n kali (best case dan worst case)

„ Quick sort:

„ Divide: bagi array menjadi 2 bagian ÎO(n)

• bagian 1 berisi elemen < pivot

• bagian 2 berisi elemen >= pivot

„ Conquer:

• menyambungkan bagian 1 dan bagian 2 ÎO(1)

Dilakukan log n kali (best case), n kali (worst case) Î

SDA/WRAP-UP/V2.0/15

Other Sorting Algorithms

„ Shell Sort

„ Heap Sort

„ Menggunakan struktur data heap

„ Heapify ÎO(n)

„ Percolate Down O(log n) dilakukan nkali

„ Total: O(n log n)

„ Bucket Sort / Postman Sort

„ Tukang Pos mengurutkan surat berdasarkan kode pos (5 digit).

„ Running time: O(nk)

• k = jumlah digit

„ External Sorting Algorithms

„ Jumlah data >>> jumlah memory yang tersedia

Struktur Data

„ Linked List vs. Array

„ representation/storage:

• contiguous vs. non-contiguous

• growable (dynamic size) vs. static

• overhead?

„ Access?

„ Stack vs. Queue

„ Access?

„ Implementation of Stack and Queue

• Linked List vs. Array

(5)

SDA/WRAP-UP/V2.0/17

Struktur Data

„ Tree

„ Binary Tree

• Representation?

• Traversing:

• DFS: Pre-Order, In-Order, Post-Order

• BFS: Level-Order

„ Binary Search Tree (BST)

„ Balanced BST

• AVL Tree: Height as balancing information

• Red-Black Tree: Colour as balancing information

„ n-ary Tree

„ Balanced n-ary Tree

• Complete Tree: but node can have x children or y children

• 2-3 Tree, a-b Tree

• External Data Structure: B Tree, B+Tree

„ Trie

SDA/WRAP-UP/V2.0/18

Struktur Data

„ Hash Table

„ Hash Function: map key to address

„ Collition resolution:

• Closed Hashing (aka Open addressing)

• Linear Probing Æprimary clustering

• Quadratic Probing Æsecondary clustering

• Double Hashing

• Open Hasing (aka Separate Chaining)

„ Priority Queue

„ Implemented using Heap

• Insert: Percolate Up – O(log n)

• Delete: Percolate Down – O(log n)

• Heapify

SDA/WRAP-UP/V2.0/19

Graph

„ Terminology

„ vertices/nodes (simpul)

„ edges (sisi/busur)

„ adjacent vertices

„ undirected vs. directed graph

„ degree (of a vertex), for directed graph: in-degree, out- degree

„ unweighted vs. weighted graph

„ path, simple path, cycle

„ DAG (Directed Acyclic Graph)

„ connected graph

„ subgraph

SDA/WRAP-UP/V2.0/20

Graph

„ Representation

„ Edge List

„ Adjancency List

„ Adjancency Matrix

„ Which representation is the best?

„ Graph Problem:

„ Topological Sorting

„ Shortest Path: Djikstra

„ Minimum Spanning Tree: Prim, Kruskal

(6)

SDA/WRAP-UP/V2.0/21

Selamat Ujian!

Referensi

Dokumen terkait

Dependent Variable: Manajemen Laba Sumber: Hasil olah data sekunder SPSS 28 Pada tabel IV.10 diatas dapat diperoleh persamaan regresi yang terjadi ialah: ML = 0.015 + 0.000 UP -0.002

Penelitian ini bertujuan untuk melakukan analisis performansi dari teknik entity matching menggunakan Fuzzy Wuzzy dengan penambahan blocking stop word removal dan size blocking pada