Anda di halaman 1dari 4

DESAIN DAN ANALISIS ALGORITMA

TUGAS RESUME KE-1

DISUSUN OLEH :
MUHAMMAD AQSA RAMADHAN (H071201074)

PRODI SISTEM INFORMASI


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HASANUDDIN
2023
Algoritma merupakan Prosedur komputasional yang terdefinisi dengan baik yang
membutuhkan nilai (atau himpunan nilai) sebagai input dan menghasilkan nilai (atau himpunan
nilai) sebagai output Alat bantu (tools) menyelesaikan masalah komputasional yang terdefinisi
dengan baik (well-defined computational problem) Metode penyelesaian yang logis dan ‘wajib’
benar (correctness) sesuai keinginan masalah (desired solution)
Hal-Hal yang perlu diperhatikan dalam analisis algoritma, diantaranya: Pseucode, kode
format standar yang bisa ditransformasikan ke bahasa pemrograman. Kompleksitas, terbagi atas
waktu dan memori. Strategi, perancangan yang membutuhkan algoritma tertentu seperti Greedy,
divide-andconquer, dsb. Struktur data, menyimpan dan mengorganisasi data. Terakhir Masalah
NP-lengkap, ketika masalah tidak ada solusi yang efisien

Pseudo-code Algoritma
Notasi Pseudocode

• Input ( menunjukkan proses memasukkan isi variable)


• Output (proses keluaran)
• While (perulangan yang memiliki iterasi awal)
• For (sebuah perulangan perhitungan iterasi)
• Repeat – Until (untuk sebuah perulangan yang memiliki kondisi akhir)
• If – Then – Else ( mengambil sebuah keputusan dari beberapa kondisi)

Linear-Search(A, key)
1 indeks  1;
2 ada  False;
3 while indeks  length[A] and ada = False
4 if A[indeks] = key then
5 ada  True;
6 indeks  indeks + 1;
7 indeks  indeks - 1;
8 if ada = False then
9 indeks  length[A] + 1;
10 A[indeks]  key;
11 return indeks

Implementasi lain ide algoritma kedalam pseudo-code boleh jadi menghasilkan jumlah
baris yang lebih sedikit, namun fungsi laju running time algoritma akan tetap samaterhadap
jumlah data
Ketentuan Pseudocode

• Indent menyatakan struktur blok.


• Statemen perulangan dikonstruksi dengan while, for dan repeat.
• Statemen penyeleksian kondisi/syarat dikonstruksi dengan if, then dan else.
• Simbol “” menyatakan komentar untuk statemen baris-baris berikutnya.
• Penugasan berganda (multiple assignment) i  j  e menyatakan
penugasan/pemberian nilai e kedalam i dan j; pernyataan ini ekivalen dengan j  e lalu
diikuti i  j.
Loop Invariant dan Correctness
Inisialisasi (initialization)
Perulangan dimulai dgn nilai indeks = 1 dan ada = False
Pemeliharaan (maintenance)

Selama statemen perulangan memeriksa bahwa pernyataan (indeks  length[A] dan ada
= False) bernilai Benar.
Perulangan berlanjut dengan indeks = indeks + 1.
Penghentian (termination)
Jika key ditemukan A[indeks] = key maka prulangan berhenti ada = True ATAU jika tidak
ada lagi data yg bisa dibandingkan indeks > length[A].
Algoritma Insertion Sort

Insertion-Sort(A)
1 for j  2 to length[A]
2 key  A[j]
3 ij–1
4 while (i > 0  A[i] > key)
5 A[i + 1]  A[i]
6 ii–1
7 A[i + 1]  key

• Baris 1, j <- 2 , indeks elemen kedua dari vektor akan digunakan untuk dibandingkan
dengan elemen dari indeks depannya
• Baris 2, key <- A[j] menyimpan sementara nilai
• Baris 3, i <- j-1 menginisialisasi nilai elemen didepan key.
• Baris 4, pada kondisi while pertama i > 0 artinya perulangan berlanjut sampai tidak ada
lagi elemen yang berada didepan key.
• Baris 5, A[i + 1] <- A[i] merupakan proses penukaran dari elemen depan key menuju ke
belakang key.
• Baris 6, i <- i-1 proses iterasi agar nilai terus bergerak ke bawah.
• Baris 7, A[i + 1] <- key adalah proses penambahan elemen A menjadi nilai dari key
Analisis Algoritma

Insertion-Sort(A) Times T(n)


1 for j  2 to length[A] n
2 key  A[j] n–1
3 ij–1 n–1

while (i > 0  A[i] > key)


4
 j =2 t j
n

5 A[i + 1]  A[i]
 j =2 (t j − 1)
n

6 ii–1
 j =2 (t j − 1)
n

7 A[i + 1]  key
n-1

Total waktu komputasi atau running time T(n):


n n n
T(n) = n + (n -1) + (n -1) + åt j + å(t j -1) + å(t j -1) + (n -1)
j=2 j=2 j=2

n n n
T (n) = n + (n -1) + (n -1) + å t j + å (t j -1) + å (t j -1) + (n -1)
j=2 j=2 j=2
n
= 2n + 3å t j -1
j=2

Waktu komputasi tidak hanya tergantung pada jumlah data, tetapi juga tergantung pada
bagaimana barisan input data

• Kasus terbaik (best case): Input data telah terurut, tj = 1


n
T (n) = 2n + 3å1 -1 = 5n - 4
j=2

Laju waktu komputasi dalam fungsi linear


• Kasus terburuk (worst case): Input data terurut terbalik, tj = j
n
T (n) = 2n + 3å j -1 = n 2 + n - 4
3 7
j=2 2 2
laju waktu komputasi dalam fungsi kuadratik

Anda mungkin juga menyukai