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

dokumen-dokumen yang mirip
ANALISA RUNNING TIME

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

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

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

Logika dan Algoritma Yuni Dwi Astuti, ST 2

ALGORITHM. 2 Analysis Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Analisis Kecepatan Sorting Dengan Notasi Big O

Design and Analysis of Algorithm

Outline STRUKTUR DATA. VII. Sorting

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

BAB 2 LANDASAN TEORI

Sorting (Bubble Sort)

Pengantar Analisa Algoritma

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

BAB I PENDAHULUAN Latar Belakang

Array. Pengantar. int a, b, c, d, e;

Kompleksitas Algoritma

Design and Analysis of Algorithm

Algoritma dan Struktur Data

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

Kompleksitas Algoritma

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

Menyelesaikan Puzzle Matematika Braingle dengan Algoritma Brute Force

Modul 15 Searching. 1.1 Kompetensi

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Dasar-dasar Pemrograman

Powered by icomit.wordpress.com

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

Modul Praktikum 6 Pemograman Berorientasi Objek

BAB II TINJAUAN PUSTAKA

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

PERTEMUAN 8 MATRIX. Introduction Definition How is matrix stored in memory Declaration Processing

Design and Analysis Algorithm

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Algoritma dan Struktur Data. Performansi Algoritma

Struktur Data dan Algoritma

PENGANTAR KOMPUTER & SOFTWARE 2 MATRIX

Penerapan Algoritma Bucket Sort Untuk melakukan Pengurutan n buah Bilangan Mata Kuliah Pemrosesan Paralel

Kompleksitas Algoritma

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

BAB 2 LANDASAN TEORI

REKURSIF. Arkham Zahri Rakhman, S.Kom., M.Eng. Rev.: Dr. Fazat Nur Azizah

BAB II TINJAUAN PUSTAKA. Kriptografi adalah ilmu sekaligus seni untuk menjaga keamanan pesan (message).

BAB 3 ANALISA SISTEM

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

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

03-Pemecahan Persamaan Linier (2)

Algoritma Bubble Sort dan Quick Sort

ARRAY. 7 th week Estu Sinduningrum ST,MT

Kompleksitas Komputasi

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

BAB 2 LANDASAN TEORI

RENCANA PEMBELAJARAN SEMESTER (RPS)

Struktur Data & Algoritma

BAB 2 TINJAUAN PUSTAKA

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

Gambar 13.1 Ilustrasi proses algoritma sorting

6 Sistem Persamaan Linear

OPERASI MATRIKS. a 11 a 12 a 13 a 14 A = a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44

Matriks. Tim Pengajar KU1072. KU1072/Pengenalan Teknologi Informasi B Tahap Tahun Pertama Bersama Institut Teknologi Bandung

Algoritma dan Struktur Data. Searching dan Sorting

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

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

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

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

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

Perbandingan Performa Kombinasi Algoritma Pengurutan Quick-Insertion Sort dan Merge-Insertion Sort

Analisis Algoritma Bubble Sort

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UGM MATA KULIAH : PEMROGRAMAN I HARI, TANGGAL : RABU, 5 OKTOBER 2016 : BUKU TERBUKA

Modul Praktikum 4 Pemograman Berorientasi Objek

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

Pendahuluan. Ukuran input (input s size)

Sorting Algorithms. Definisi

Algoritma Sorting (Selection Insertion)

REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

Kontrak Perkuliahan & Introduction

BAB 2 LANDASAN TEORI

Algoritma dan Pemrograman

STRATEGI DIVIDE AND CONQUER

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

A. TEORI ARRAY 1 DIMENSI

Pertemuan 5: Pengenalan Variabel Array

Struktur Data & Algoritme (Data Structures & Algorithms)

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

BAB 8 Argumen dari Command-line

PENGENALAN BINARY INDEXED TREE DAN APLIKASINYA

Algoritma Brute Force dalam Pattern Matching pada Aplikasi Pendeteksian Potongan Citra

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

UNIVERSITAS GUNADARMA

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

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

STRUKTUR DATA KULIAH KE : 3 ALGORITMA

Transkripsi:

Setelah mempelajari topik Analisis Algoritma di kuliah SDA, ada beberapa kompetensi yang perlu Anda kuasai: Menentukan kompleksitas waktu (Big-Oh) dari beberapa algoritma (logaritmik, linier, kuadratik, kubik, dsb). Memikirkan versi yang lebih efisien dari solusi (algoritma) yang sudah Anda implementasikan karena terkadang sebuah permasalahan dapat diselesaikan dengan beberapa algoritma yang mempunyai kompleksitas waktu yang berbeda-beda. Menghitung prediksi running time sebuah algoritma Problem 1. Konsep Big-Oh - Misal, f(n) adalah sebuah fungsi yang menyatakan banyaknya basic operation sebuah algoritma jika diberikan ukuran input N. Sebuah algoritma ternyata mempunyai fungsi f(n) = 4N 3 + 1000N. Berapa kompleksitas (asimtotik) algoritma tersebut dalam notasi Big-Oh? - Sebuah algoritma mempunyai kompleksitas waktu O(N 3 ). Dengan kata lain, algoritma tersebut mempunyai orde kubik (fungsi running time algoritma tumbuh dalam orde kubik). Apa maksudnya? - Mengapa notasi Big-Oh hanya memperhatikan suku paling dominan? - Mengapa notasi Big-Oh tidak memperhatikan koefisien pada suku paling dominan? - Jadi, Apa yang direpresentasikan oleh notasi Big-Oh? Problem 2. Menghitung Running Time Selection Sort vs Quick Sort Di kuliah DDP, Anda sudah mempelajari ide dari algoritma Selection Sort dan Quick Sort. Anda juga sudah mengetahui bahwa algoritma Quick Sort terbukti lebih efisien dibandingkan Selection Sort. Anda juga sudah mengamati bahwa algoritma Selection Sort mempunyai kompleksitas O(N 2 ), dan nanti Anda akan

mempelajari bahwa kompleksitas dari Quick Sort adalah O(N log N). Jelas bahwa orde O(N log N) < O(N 2 ). Untuk menghitung running time di Java, Anda bisa menggunakan System.nanoTime(). Di soal ini, Anda akan diajak untuk melakukan eksperimen kecil untuk membandingkan running time antara kedua algoritma tersebut jika diberikan beberapa ukuran input array (panjang array). Array akan di-generate secara random. Gunakan kode Problem2.java untuk melengkapi tabel berikut: 10 100 10000 100000 Panjang Array Selection Sort (miliseconds) Quick Sort (miliseconds) Dari hasil eksperimen, Apa yang dapat Anda simpulkan? dan Apa yang Anda pelajari? Problem 3. Prediksi Running Time Problem 2 sebelumnya menyuruh Anda untuk menghitung running time yang sesungguhnya menggunakan mesin/komputer. Misal, Anda sudah mengetahui running time yang sesungguhnya untuk ukuran input N = 100. Anda juga bisa memprediksi running time untuk, misal N = 1000, dengan menggunakan kalkulasi tangan jika diketahui kompleksitasnya dalam notasi Big-Oh. Untuk soal-soal terkait prediksi running time, Silakan Anda kerjakan soal nomor 1 dan 2 pada Latihan 2 analisis algoritma.

Problem 4. Simple Problem Diberikan sebuah matriks berukuran N x N, sebuah method mampu menghitung jumlah semua elemen pada bagian diagonal. Berikut adalah implementasi dari method tersebut? public static int sumdiagonal(int[][] m) { int sum = 0; for (int i = 0; i < m.length; i++) { for (int j = 0; j < m[i].length; j++) { if (i == j) { sum += m[i][j]; return sum; - Berapakah kompleksitas dari algoritma di atas dalam notasi Big-Oh? - Apakah algoritma tersebut sudah efisien? jika belum efisien, buatlah versi lain yang lebih efisien dan tentukan pula kompleksitasnya! Problem 5. Banyaknya Bits Angka 3 direpresentasikan dengan 2 digit: 11. Angka 8 direpresentasikan dengan 4 digit biner: 1000, dan 13 juga direpresentasikan dengan 4 digit biner: 1101. Angka 23 direpresentasikan dengan 5 digit biner: 10111. Berikut adalah method yang digunakan untuk menghitung berapa banyak digit biner yang dibutuhkan untuk merepresentasikan sebuah bilangan bulat positif. public static int numbiner(int n) {... Implementasikan method numbiner tersebut, dan tentukan berapa kompleksitas dari method tersebut dalam notasi Big-Oh!

Problem 6. Perkalian Matriks Di persoalan sebelumnya, Anda belajar untuk mengimplementasikan ADT Matrix yang merepresentasikan sebuah matriks dengan operasi-operasinya. Anda juga sudah mengimplementasikan method untuk melakukan perkalian matriks. Sekarang, jika matriks pertama berukuran N x M dan matriks kedua berukuran M x K, berapakah kompleksitas dari algoritma perkalian matriks tersebut? Jika Anda belum menyelesaikan persoalan ADT Matrix pada latihan sebelumnya, Anda bisa mulai dengan mengimplementasikan method perkalian matriks berikut: //m1 : N x M, m2 : M x K public static int[][] mult(int[][] m1, int[][] m2) { //kembalikan matriks baru hasil perkalian m1 dan m2 Berapakah kompleksitas algoritma tersebut, seandainya matriks pertama dan matriks kedua mempunyai dimensi yang sama, yaitu N x N? Problem 7. More on Big-Oh Di kelas, Anda pernah diberikan persoalan untuk mencari pasangan bilangan bulat a dan b, dimana a < b < N dan (a 2 + b 2 + 1)/(ab) adalah bilangan bulat. Dimana N adalah input yang merupakan sebuah bilangan bulat (ketika di kelas, N = 1000). Salah satu solusinya adalah: for (int a = 1; a < N; a++) { for (int b = a + 1; b < N; b++) { if ((a * a + b * b + 1) % (a * b) == 0) { System.out.println (a + " " + b); Berapakah kompleksitas dari solusi tersebut dalam notasi Big-Oh?

Problem 8. Problem Solving Buatlah program yang dapat menjawab permasalahan berikut! A 5 + B 5 + C 5 + D 5 + E 5 = F 5 Dimana, 0 < A B C D E F 75 Hanya ada satu solusi! yaitu ketika A, B, C, D, E, dan F bernilai berapa? Berapakah kompleksitas algoritma dari solusi program yang Anda usulkan? Apakah Anda yakin solusi Anda itu adalah versi yang paling efisien? Problem 9. Orde yang Lebih Besar? Urutkan dari yang orde paling kecil ke orde paling besar! O(N), O(N!), O(N log N), O(N log log N), O(N log 2 N), O(N log (N 2 )), O(2 N )