Kompleksitas Komputasi

dokumen-dokumen yang mirip
Kompleksitas Algoritma

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

Kompleksitas Algoritma

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

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

Algoritma dan Struktur Data

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

Kompleksitas Algoritma

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Algoritma dan Kompleksitas Algoritma

Kompleksitas Algoritma

ANALISIS ALGORITMA BINARY SEARCH

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

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

Algoritma dan Struktur Data. Performansi Algoritma

Kompleksitas Algoritma dalam menentukan Solvabilitas Sliding N-Puzzle

Pendahuluan. Ukuran input (input s size)

STRATEGI DIVIDE AND CONQUER

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

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

BAB VII ALGORITMA DIVIDE AND CONQUER

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Kompleksitas Algoritma

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

Analisis Kecepatan Sorting Dengan Notasi Big O

Kompleksitas Algoritma Euclidean dan Stein(FPB Biner)

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

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

FUNGSI. setiap elemen di dalam himpunan A mempunyai pasangan tepat satu elemen di himpunan B.

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

BAB 2 LANDASAN TEORI

Design and Analysis Algorithm

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

BAB II TINJAUAN PUSTAKA

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

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

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

Definisi Percabangan

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

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

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

JURNAL KHATULISTIWA INFORMATIKA, VOL. IV, NO. 2 DESEMBER 2016

Algoritma Pemrograman

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

2.4. Struktur Branching

Konstruksi Dasar Algoritma

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

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

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

BAB 2 LANDASAN TEORI

LEMBAR AKTIVITAS SISWA INDUKSI MATEMATIKA

Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang

Strategi Algoritma Penyelesaian Puzzle Hanjie

BAB 2 LANDASAN TEORI. Algoritma Optimal Mismatch ini mencari data secara berurut pada tiap

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Algoritma Brute Force (lanjutan)

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Algoritma dan Struktur Data

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Teori Algoritma. Struktur Algoritma

MUHAMMAD BURHANUDDIN. Teknik Industri Universitas Borobudur (NIM # )

BAB 1 PENDAHULUAN. dapat menyelesaikan masalah maka perlu dirumuskan terlebih dahulu langkahlangkah

Design and Analysis of Algorithm

Aplikasi OBE Untuk Mengurangi Kompleksitas Algoritma Program Penghitung Determinan Matriks Persegi

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

BAB 2 LANDASAN TEORI

Algoritma Pemrograman

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

Pengantar Analisa Algoritma

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

Sieve of Eratosthenes, Algoritma Bilangan Prima

Searching [pencarian] Algoritma Pemrograman

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Kompleksitas Algoritma dari Algoritma Pembentukan pohon Huffman Code Sederhana

Struktur Data. PDE - Struktur Data 1

PERBANDINGAN KOMPLEKSITAS PENERAPAN ALGORITMA GREEDY UNTUK BEBERAPA MASALAH

BAB IV HASIL PENELITIAN DAN PEMBAHASAN

24/09/2017 PERCABANGAN

Analisis Algoritma Bubble Sort

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Design and Analysis Algorithm

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

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

BAB XI Manipulasi Binary Tree

BAB 2 LANDASAN TEORI. 2.1 Algoritma Genetika

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

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

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Transkripsi:

Kompleksitas Komputasi Big O Notation O(f(n))

Kompleksitas komputasi pada sebuah algoritma dibagi menjadi dua bagian, yaitu Kompleksitas Waktu T(n) Kompleksitas Ruang S(n)

Kompleksitas Waktu diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n

Kompleksitas Ruang diukur dari memori yang digunakan oleh struktur data yang terdapat dalam algoritma sebagai fungsi dari ukuran masukan n

Pada saat melakukan pengukuran kompleksitas dari sebuah algoritma pada kompleksitas waktu, dapat dilakukan perkiraan salah satunya dengan menggunakan fungsi notasi Big O.

Notasi tersebut digunakan untuk menjelaskan dan menggambarkan tentang performansi terburuk yang berkaitan dengan jumlah permasalahan dari sebuah algoritma ketika jumlah data yang digunakan berjumlah sangat besar, dapat juga disebut sebagai asymtotic performance.

Lima aturan dasar yang digunakan untuk perhitungan algoritma dengan menggunakan notasi Big O

Pertama Jika sebuah algoritma melakukan urutan langkah tertentu sebanyak f(n) kali untuk fungsi matematika f, maka dibutuhkan O(f(N)) langkah.

Contoh algoritma dalam pseudo-code Integer: FindLargest(Integer: array[]) Integer: largest = array[0] For i = 1 To <largest index> If (array[i] > largest) Then largest = array[i] Next i Return largest End FindLargest

Kedua Jika sebuah algoritma melakukan operasi yang membutuhkan O(f(N)) langkah dan kemudian melakukan operasi kedua yang membutuhkan O(g(N)) langkah untuk fungsi f dan g, maka total performansi algoritma tersebut adalah O(f(N)+g(N))

Contoh algoritma dalam pseudo-code Integer: FindLargest(Integer: array[]) Integer: largest = array[0] // O(1) For i = 1 To <largest index> // O(N) If (array[i] > largest) Then largest = array[i] Next i Return largest // O(1) End FindLargest

Ketiga Jika sebuah algoritma melakukan operasi O(f(N)+g(N)) dan fungsi f(n) lebih besar dari fungsi g(n) dengan N dalam jumlah besar, maka algoritma tersebut dapat disederhanakan kedalam fungsi O(f(N))

Contoh algoritma dalam pseudo-code Integer: FindLargest(Integer: array[]) Integer: largest = array[0] // O(1) For i = 1 To <largest index> // O(N) If (array[i] > largest) Then largest = array[i] Next i Return largest // O(1) End FindLargest

Keempat Jika sebuah algoritma melakukan operasi yang membutuhkan O(f(N)) langkah dan untuk setiap langkah pada operasi tersebut melakukan operasi lain sebesar O(g(N)) langkah, maka total performansi dari algoritma tersebut adalah O(f(N) x g(n))

Contoh algoritma dalam pseudo-code Boolean: ContainsDuplicates(Integer: array[]) For i = 0 To <largest index> For j = 0 To <largest index> If (i!= j) Then If (array[i] == array[j]) Then Return True End If Next j Next i Return False End ContainsDuplicates

Kelima Mengabaikan faktor pengali tetapan. Jika C adalah tetapan, O(C x f(n)) sama dengan O(f(N)) dan O(f(C x N)) sama dengan O(f(N))

Aturan-aturan tersebut terasa terlalu formal, dengan adanya f(n) dan g(n), tetapi dengan mudah dapat diterapkan. Selain aturan diatas, juga terdapat aturan yang sering digunakan untuk notasi Big O.

O(1) Algoritma dengan performansi O(1) membutuhkan jumlah waktu tetapan yang sama tidak perduli dengan seberapa besar data yang diolah. Algoritma ini cenderung untuk melakukan tugas yang relatif sepele karena tidak memiliki kemampuan untuk melihat seluruh input dalam satu waktu. Algoritma ini hanya melakukan sedikit langkah tetap denganperformansi sebesar O(1) dan waktu larian tidak bergantung kepada

Integer: DividingPoint(Integer: array[]) Integer: number1 = array[0] Integer: number2 = array[<last index of array>] Integer: number3 = array[<last index of array> / 2] If (<number1 is between number2 and number3>) Return number1 If (<number2 is between number1 and number3>) Return number2 Return number3 End MiddleValue

O(Log N) Algoritma dengan performansi O(log N) secara umum membagi proses kedalam sejumlah pecahan dengan bagian sama besar untuk setiap proses yang dilakukan. Salah satu contoh dari algoritma ini adalah algoritma binary tree. Pada algoritma binary tree, setiap simpul memiliki paling banyak dua cabang pada bagian kanan dan kiri

Node: FindItem(Integer: target_value) Node: test_node = <root of tree> Do Forever If (test_node == null) Return null If (target_value == test_node.value) Then Return test_node Else If (target_value < test_node.value) Then test_node = test_node.leftchild Else test_node = test_node.rightchild End If End Do End FindItem

O(Sqrt N) Beberapa algoritma memiliki performansi O(sqrt (N)) dengan sqrt adalah fungsi akar kuadrat. Algoritma dengan fungsi ini tidak umum digunakan. Fungsi ini tumbuh dengan sangat lambat tetapi lebih cepat dibandingkan dengan Log (N)

O(N) Algoritma pada aturan pertama untuk penentuan Big O memiliki performansi O(N). Pertumbuhan algoritma fungsi N lebih cepat daripada log (N) dan sqrt (N) tetapi masih belum sangat cepat, Sebagian besar algoritma yang memiliki performansi O(N) dapat diimplementasikan dengan baik pada saat dilakukan pengujian

O(N Log N) Misalkan sebuah algoritma melakukan proses ikal terhadap keseluruhan butir di dalam himpunan permasalahan kemudian melakukan proses ikal semacam proses kalkulasi O(log N) pada butir tersebut. Pada kasus ini, algoritma tersebut memiliki performansi O(N x log N) atau O(N log N)

O(N 2 ) Algoritma yang melakukan proses ikal terhadap keseluruhan masukan kemudian untuk setiap masukan melakukan proses ikal terhadap masukan kembali memiliki performansi O(N 2 ). Selain dari performansi O(N 2 ), terdapat performansi yang lain, yaitu O(N 3 ) dan O(N 4 ). O(N 3 ) dan O(N 4 ) lebih lambat daripada O(N 2 ). Algoritma dapat juga dikatakan memiliki deret suku banyak jika melibatkan N, seperti O(N), O(N 2 ), O(N 6 ), O(N 4000 )

O(2 N ) Fungsi eksponensial 2 N mengalami pertumbuhan sangat pesat, sehingga hanya cocok untuk permasalahan berukuran kecil. Secara umum, algoritma ini digunakan untuk mencari seleksi masukan yang optimal. Untuk permasalahan eksponensial biasanya digunakan algoritma heuristik yang biasanya memberikan hasil yang baik tetapi tidak memiliki jaminan memberikan hasil terbaik

O(N!) Fungsi faktorial (N!) didefinisikan untuk bilangan bulat lebih besar dari 0 yang dinyatakan dengan N! = 1 x 2 x3 x... x N. Fungsi ini berkembang jauh lebih cepat daripada fungsi 2 N. Secara umum, algoritma dengan faktorial digunakan untuk mencari susunan optimal dari masukan. Salah satu contohnya adalah Traveling Salesman Problem (TSP). Pada permasalahan TSP, tujuannya adalah mencari rute dengan mengunjungi kota tepat satu kali dan kembali ke titik keberangkatan ketika meminimalisasikan jumlah jarak yang ditempuh

Tugas Mandiri Carilah Contoh Algoritma minimal 3 sesuai dengan Big O notation yang telah disebutkan sebelumnya. Buktikan dengan menggunakan analisis Big O Notation pada Kompleksitas Waktu dan Kompleksitas Ruang dengan mengukur waktu komputasi dengan input 1.000, 10.000, 100.000 dan 1.000.000 dan besar memori maksimal pada input tersebut dengan menggunakan screenshoot. Analisis dan jelaskan apabila hasil anda berbeda dengan hasil secara teoritis dan teman anda yang lainnya

Materi Selanjutnya Latihan analisis Big O Notation pada Kompleksitas Waktu dan Kompleksitas Ruang

Terima Kasih