05tugas 5, Desain & Analisa Algoritma
05tugas 5, Desain & Analisa Algoritma
Nim : 1644190062
Jurusan : Teknik Informatika S1
Efisiensi Algoritma
Setiap bidang memiliki permasalahanya sendiri dan membutuhkan algoritma yang efisien.
Masalah yang berkaitan di satu bidang terkadang dipelajari Bersama. Beberapa contoh yaitu,
algoritma pencarian, algoritma penggaungan, algoritma numerik, algoritma grafik, algoritma
daret, algoritma komputasi geometri, algoritma kombinatorial alagoritma medis, mesin belajar,
kriptografi, algoritma kompresi data dan Teknik penguraian.
Terkadang bidang-bidang tersebut saling tumpang tindih, dan perkembangan algoritma di satu
bidang bisa meningkatkan bidang lainnya yang terkadang malah tidak saling berkaitan
Algoritma menyelesaikan masalah tanpa memberatkan bagian lain dari aplikasi. Sebuah
algoritma yang tidak efisien akan menggunakan suber daya (mempri, CPU) yang besar dan
memberatkan aplikasi yang mengimplementasikan algoritma tersebut.
Efisiensi Algoritma
Algoritma yang dapat dikatakan sebagai algoritma yang efisien, merupakan algoritma
yang dimana pada saat pemrosesan algoritma tersebut tidak memakan banyak waktu dan juga
tidak memakan banyak memori dalam pemrosesannya.
Walaupun algoritma memberikan keluaran yang benar (paling mendekati kenyataan),
tetapi jika harus menunggu berjam-jam atau mungkin berhari-hari untuk mendapatkkan
outputnya (dalam hal ini dimaksud adalah efisiensi dalam waktu), algoritma tersebut bisanya
tidak akan di pakai. Kebanyakan orang lebih menginginkan algoritma yang memiliki pengeluaran
atau hasil output yang lebih cepat.
Banyak Langkah
1. Sequensial
1 oprasi
x=0
y=1
x+y
Branching / Percabangan
K = kondisi dengan banyak Langkah c
s1, s2 = blok statement dengan banyak langak p1, p2
Tipe data
Dua nilai yang sama dengan operator yang sama tetapi dengan variable yang berbeda,
maka terdapat perbedaan kecepatan / proses penyelesaian nya.
Interger
250 + 17 = 267 1 langkah
Real
Operator
Urutan penggunaan operator / penempatan operator bisa mempengaruhi efisiensi.
Contoh perkalian (*) lebih lama dari penjumlahan (+). Yang perlu di perlu di perhatikan
adalah banyaknya operasi aritmatika yang logika yang di butuhkan.
Contoh :
x = 2<5 tidak ada operasi
x = True tidak ada operasi
y=5 tidak ada operasi
y=5+0 1 operasi
y = 3 * 5+2 2 operasi
Alokasi memory
Algoritma yang memakan banyak memori merupakan algoritma yang dapat di katakana
sebagai algoritma yang memiliki kualitas buruk. Semakin besar memori yang terpakai untuk
algoritma tersebut maka akan semakin buruk algoritma tersebut.
Missal :
Satuan variable dan konstanta yang bertipe : int, real/float besarnya di anggap
sama (missal 4 byte atau 8 byte) Char di anggap 1 byte Float array [2] [2] = 4*4 byte = 16
byte
Kompleksitas Algortima
Efisiensi algoritm dapat di ukur dari waktu eksekusi algoritma dan kebutuhan ruang
memori. Algoritma yang efisien adalah algoritma yang meminimum kan kebutuhan waktu
dan ruang. Dengan menganalisis beberapa algoritma untuk suatu masalah, dapat di
identifikasikan sebuah satu algoritma yang efisien. Besaran yang di gunakan untuk
menjelaskan model pengukuran waktu dan ruang ini adalah kompleksitas algoritma.
Besaran yang di gunakan untuk menjelaskan model pengukuran waktu dan ruang ini
adalah kompleksitas algoritma. Kompleksitas dari suatu algoritma merupakan ukuran
seberapa banyak komputasi yang di butuhkan algoritma tersebut untuk menyelesaikan
masalah, secara informal, algoritma yang dapat menyelesaikan suatu permasalah dalam
waktu yang singkat memiliki kopleksitas yang rendah, sementara algoritma yang
membutuhkan waktu lama untuk menyelsaikan masalahnya mempunyai kompleksitas yang
tinggi.
Terdapat banyak cara untuk mengukur efisiensi sebuah algoritma. Mari kita lihat cara
mengukur efisiensi yang paling sederhana terlebih dahulu : melihat berapa Langkah yang
perlu dijalankan untuk menyelesaikan algoritma tersebut. Jika kita memanggil fungsi pangkat
seperti berikut :
Pangkat (2,1)
Maka kode yang akan di eksekusi sebagai berikut :
Hasil = 1
For i in range (0,1):
Hasil = 2 * hasil
Return hasil
Total terdapat tiga Langkah yang perlu di jalankan untuk mendapatkan hasil pankat yang di
inginkan.
Bagaimana jika kita naikan nilai dari y sehingga kita memanggil pangkat (2,2) ?
Kode yang di eksekusi akan menjadi :
hasil = 1
for i in range(0,2):
hasil = 2 * hasil
return hasil
berdasarkan apa yang kita dapatkan sejauh ini, kita dapat menyimpulkan bahwa jika
dilakukan panggilan pangkat (2,5) maka kita akan mendapatkan hasil eksekusi :
hasil = 1
hasil = 2 * hasil
hasil = 2 * hasil
hasil = 2 * hasil
hasil = 2 * hasil
hasil = 2 * hasil
return hasil
kesimpulan yang dapat kita Tarik dari hal ini adalah, baris hasil = x * hasil
dijalankan sebanyak y kali
tabel di bawah menampilakann beberapa kali setiap baris yang ada dalam fungsi pangkat
dieksekusi :
Sehingga kita dapat mengatakan bahwa fungsi pangkat akan selalu diselesaikan dalam 2 + y
Langkah.
Kesimpulan
Jadi dalam satuan algoritma, haruslah algoritma yang efisieni akan waktu dan memori,
karena jika tidak maka pemrosesan dari algoritma tersebut akan menjadi lama, berat dan
tidak efisien pastinya