Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

dokumen-dokumen yang mirip
SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Analisis Algoritma Bubble Sort

Algoritma dan Struktur Data

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Kompleksitas Komputasi

Sorting Algorithms. Buble Sort

Algoritma Bubble Sort dan Quick Sort

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Design and Analysis Algorithm

Analisis Kecepatan Sorting Dengan Notasi Big O

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Pengantar Analisa Algoritma

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

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

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Outline STRUKTUR DATA. VII. Sorting

SORTING (BAGIAN II) Proses kelima

Kompleksitas Algoritma Dalam Algoritma Pengurutan

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma

Langkah Awal menuju Analisis Kompleksitas Algoritma

BAB 2 LANDASAN TEORI

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Kompleksitas Algoritma

Kompleksitas Algoritma

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

BAB VI SORTIR ATAU PENGURUTAN

Sorting Algorithms. Definisi

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

MAKALAH ALGORITMA, PSEUDOCODE DAN FLOWCHART TENTANG YUFI EKO FIRMANSYAH 1 D3 IT B OLEH

Analisa Kompleksitas Algoritma. Sunu Wibirama

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Kompleksitas Algoritma Rank Sort dan Implementasi pada Parallel Programming Dengan Menggunakan OpenMP

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Algoritma Sorting (Selection Insertion)

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

STRUKTUR DATA KULIAH KE : 3 ALGORITMA

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

BAB 2 LANDASAN TEORI

BAB VII ALGORITMA DIVIDE AND CONQUER

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Simple Sorting Techniques

Algoritma dan Struktur Data. Performansi Algoritma

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Konstruksi Dasar Algoritma

Kompleksitas Algoritma (1)

Pendahuluan. Ukuran input (input s size)

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014


BAB II PEMBAHASAN. A. USE CASE 1. Pengertian Use Case

APLIKASI PERENCANA BELANJA DENGAN PENGURUTAN SKALA PRIORITAS BERBASIS ANDROID

SORTING (PENGURUTAN DATA)

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

METODE DEVIDE AND CONQUER (DANDC)

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Kompleksitas Algoritma Sorting yang Populer Dipakai

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

PENGANTAR KOMPUTER & SOFTWARE II

Bab 2. Teori Dasar. 2.1 Definisi Graf

SEARCHING & SORTING. Pendahuluan

BAB II TINJAUAN PUSTAKA

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

ANALISIS ALGORITMA BINARY SEARCH

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Journal Speed Sentra Penelitian Engineering dan Edukasi Volume 9 No

BAB 2 LANDASAN TEORI

Algoritma Divide and Conquer (Bagian 2)

ALGORITMA PENGURUTAN & PENCARIAN

S O R T I R 6.1 SORTIR TERHADAP RECORD

Algoritma Brute Force

Algoritma dan Kompleksitas Algoritma

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

Kompleksitas Algoritma

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Langkah Awal menuju Analisis Kompleksitas Algoritma

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

Algoritma Brute Force

Algoritma Divide and Conquer. (Bagian 2)

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Algoritma Pemrograman

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Sorting Algorithms. Divide and Conquer

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Transkripsi:

Analisa dan Perancangan Algoritma Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Apakah algoritma itu? Asal istilah: Al Khwarizmi (± 800 M), matematikawan dan astronomer Persia. Pengertian umum: "suatu urutan langkah-langkah atau instruksi untuk menyelesaikan suatu masalah".

Kriteria algoritma yang "benar" Urutan langkah/instruksi dapat dikatakan algoritma yang "benar" jika memenuhi kriteria berikut: 1.Untuk setiap input yang valid menghasilkan output 2.Efektif (tepat guna/menuju pada solusi yang dicari) 3.Jumlah langkah berhingga 4.Langkah-langkah berakhir pada kondisi tertentu (diperoleh/tidaknya solusi)

Masalah: memeriksa apakah integer n memiliki akar integer Algoritma: 1. Input n 2. Tetapkan i = 0 3. Hitung h = i x i 4. Jika h = n maka tampilkan i dan berhenti 5. i = i + 1 6. Kembali ke langkah 3 Apakah algoritma di atas adalah algoritma yang benar?

Algoritma "terbaik" Sebuah permasalahan dapat diselesaikan oleh beberapa alternatif algoritma. Dari sekian banyak alternatif, bagaimanakah membandingkan kinerja beragam algoritma tersebut, sehingga dapat ditentukan manakah algoritma yang terbaik di antara yang ada?

Algoritma terbaik Suatu algoritma harus menghasilkan output yang tepat guna (efektif) dalam waktu yang relatif singkat dan penggunaan sumber daya yang relatif sedikit (efisien) dengan langkah yang berhingga banyaknya dan prosesnya berakhir dalam kondisi memperoleh/tidak memperoleh solusi.

Bagaimana mengetahui algoritma terbaik? Kinerja suatu algoritma diukur dengan indikator yang disebut "kompleksitas komputasi" dari algoritma tersebut (singkatnya disebut "kompleksitas") Untuk masalah yang sama, algoritma terbaik adalah algoritma yang terbukti memiliki kompleksitas terbaik. Dalam hal ini, algoritma tersebut dikatakan algoritma yang paling efisien.

Analisis algoritma Usaha/proses untuk menemukan kompleksitas suatu algoritma dan/atau membandingkan sebuah algoritma dengan algoritma yang lain berdasarkan kompleksitasnya, disebut sebagai "analisis algoritma". Hasil dari analisis dari suatu algoritma dapat digunakan untuk memperbaiki algoritma tersebut sehingga memiliki kinerja yang lebih baik.

Mengapa perlu analisis algoritma? Sebagai alat perbandingan algoritma, sehingga dapat diperoleh algoritma terbaik Hasil dari analisis dari suatu algoritma dapat digunakan untuk memperbaiki algoritma tersebut sehingga memiliki kinerja yang lebih baik.

Namun... Terdapat permasalahan yang algoritma paling efisiennya belum diketahui/ditemukan Walaupun demikian, belum terbukti ada/tidaknya algoritma paling efisien untuk permasalahan demikian

Skema penyelesaian masalah Masalah Model Fokus pembahasan Algoritma Program Eksekusi Hasil

Rancanglah algoritma untuk menjumlahkan bilangan dari 1 sampai n Input: integer n, Output: jumlah bilangan dari 1 sampai n

Studi tentang algoritma 1. Merencanakan algoritma membuat model penyelesaian masalah 2. Merepresentasikan algoritma langkah-langkah penyelesaian model dengan menggunakan diagram alur ataupun pseudo code 3. Menentukan validitas algoritma outputnya adalah solusi masalah 4. Menganalisa algoritma menentukan tingkat efisiensi algoritma dari sisi waktu maupun penggunaan memori 5. Menguji program dari algoritma

Analisis Algoritma Kompleksitas algoritma mencakup 2 hal: 1.Waktu yang digunakan 2.Memori yang digunakan

Waktu yang digunakan Bergantung pada: 1.banyaknya langkah 2.besar dan jenis data yang digunakan (termasuk input data) 3.jenis operasi 4.komputer dan kompiler yang digunakan

Memori yang digunakan Banyaknya langkah yang digunakan dan jenis variabel/data yang dipakai dalam algoritma berbanding lurus dengan penggunaan memori.

Kompleksitas waktu Kompleksitas yang mewakiliwaktu tempuh dan kebutuhan memoridengan ukuran waktu adalah sebuah fungsi n input data f ( n)

Notasi Big-O f ( n) merupakan big O dari O( g( n))jika dan hanya jika g( n), terdapat dua bulat positif c dan n0 sedemikian sehingga 0 f ( n) cg( n) untuk setiap n n dinotasikan sebagai 0 konstanta

Contoh 2n 10 adalah O(n) 2n 10 cn (c 2) n 10 n 10 (c 2) Ambil c 3 and n 0 10 n 2 bukan O(n) 7n-2 adalah O(n) 3n 3 + 20n 2 + 5 adalah O(n 3 ) 3 log n + log log n adalah O(log n)

Aturan Big-O Jika f(n) adalah polinomial berderajat d, maka f(n) adalah O(n d ), yaitu 1. Abaikan suku dengan derajat kurang dari d 2. Abaikan koefisien

Notasi lain untuk kompleksitas big-omega f(n) adalah (g(n)) jika terdapat konstanta c > 0 dan sebuah integer n 0 1 sedemikian sehingga f(n) c g(n) untuk n n 0 big-theta f(n) adalah (g(n)) terdapat konstanta c > 0 dan c > 0 dan sebuah integer n 0 1 sedemikian sehingga c g(n) f(n) c g(n) untuk n n 0 little-o f(n) adalah o(g(n)) jika, untuk sebarang konstanta c > 0, terdapat integer n 0 0 sedemikian sehingga f(n) c g(n) untuk n n 0 little-omega f(n) adalah (g(n)) jika, untuk sebarang konstanta c > 0, terdapat integer n 0 0 sedemikian sehingga f(n) c g(n) untuk n n 0

Contoh kasus: Insertion sort Step 1 If it is the first element, it is already sorted. return 1; Step 2 Pick next element Step 3 Compare with all elements in the sorted sub-list Step 4 Shift all the elements in the sorted sub-list that is greater than the value to be sorted Step 5 Insert the value Step 6 Repeat until list is sorted

for i 1 to length(a) j i while j > 0 and A[j-1] > A[j] swap A[j] and A[j-1] j j - 1 end while end for

Urutkanlah barisan berikut dengan menggunakan algoritma insertion sort 3 7 4 8 5 2 6 1 6 5 3 1 8 7 2 4 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1

Insertion Sort: Number of Comparisons # of Sorted Elements 0 1 2 n-1 Best case 0 1 1 1 n-1 Worst case 0 1 2 n-1 n(n-1)/2 Remark: we only count comparisons of elements in the array.

Kompleksitas Insertion sort Best case (array sudah terurut): O(n) Worst case (array terurut secara terbalik): O(n 2 ) Average case: O(n 2 )

Bubble Sort Simplest sorting algorithm Idea: 1. Set flag = false 2. Traverse the array and compare pairs of two consecutive elements 1.1 If E1 E2 -> OK (do nothing) 1.2 If E1 > E2 then Swap(E1, E2) and set flag = true 3. repeat 1. and 2. while flag=true.

procedure bubblesort( A : list of sortable items ) n = length(a) repeat swapped = false for i = 1 to n-1 inclusive do if A[i-1] > A[i] then swap(a[i-1], A[i]) swapped = true end if end for n = n - 1 until not swapped end procedure

Urutkanlah barisan berikut dengan menggunakan algoritma bubble sort 3 7 4 8 5 2 6 1 6 5 3 1 8 7 2 4 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1

Kompleksitas Bubble sort Best case (array sudah terurut): O(n) Worst case (array terurut secara terbalik): O(n 2 ) Average case: O(n 2 )

Membangkitkan permutasi Rancanglah algoritma untuk membentuk seluruh permutasi yang mungkin dari himpunan {1,2,...,n}, dimulai dari permutasi 12...n Setiap permutasi dihasilkan dengan jumlah komputasi yang sama (kompleksitas O(1)) Kompleksitas O(N), di mana N adalah banyaknya permutasi dengan panjang n

Steinhaus Johnson Trotter algorithm 1. Generate initial permutation 12... n, and set all symbols movable, and to have direction left. 2. Swap the largest movable symbol L with the adjacent symbol according to the current direction of L. 3. Reverse the direction of all symbol larger than L. 4. Back to step 2 until there is no movable symbol.