Algoritma Iteratif
Sebuah proses iteratif merupakan suatu proses dalam algoritma yang melakukan perhitungan dengan hasil yang diingin menggunakan cara siklus berulang melalui sebuah operasi perulangan.
Berdasarkan pandangan ilmu pemrograman komputer, iteratif menggambarkan situasi dimana urutan instruksi dapat dieksekusi berulang kali. Dalam sekali eksekusi biasa disebut juga 1 iterasi. Dan jika iterasi dilakukan berulang kali, proses tersebut biasa dikenal sebagai loop. Sehinga proses iterasi terjadi karena adanya loop.
Algoritma iteratif
Teknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali atau hingga suatu kondisi tertentu terpenuhi. Tidak ada variabel lokal baru Program tidak sederhana Menggunakan perulangan for dan while
Soal 1
Susunlah sintaks R untuk penjumlahan deret berikut!
fz<-function(n){
1/((1/sqrt(5))*((((1+sqrt(5))/2)^n)-(((1-sqrt(5))/2)^n)))
}
stop.kriteria<-function(ycurrent, ybefore){
abs(ycurrent-ybefore)
}
bataserror<-10
nilaiawal<-0
n<-1
while(bataserror>0.000001) {
nilaiZ<-nilaiawal+fz(n)
bataserror<-stop.kriteria(nilaiZ,nilaiawal)
nilaiawal<-nilaiZ
n<-n+1
}
#Final Result
nilaiZ## [1] 3.359884
bataserror## [1] 7.427936e-07
Soal 2
Susunlah sintaks R untuk penjumlahan deret berikut!
#Nomor 2
fz <- function(n){
(-1)^(n+1)*(10*((0.2)^(n-1)))
}
stopping_criteria <- function(y_current,y_before){
abs(y_current-y_before)
}
#nilai awal kriteria stopping
error <- 10
#nilai awal deret
z0 <- 0
# nilai awal iterasi
n <- 1
while (error>0.00001) {
z <- z0 + fz(n)
error <- stopping_criteria(z,z0)
z0 <- z
n <- n+1
}
# final result
z## [1] 8.333332
#criteria stopping
error## [1] 5.12e-06
Soal 3
Buat lah fungsi untuk mengurutkan vektor Berikut dari besar ke kecil. Bandingkan hasilnya dengan mengguakan fungsi sort yang ada di R.
x <- c(13, 7, 6, 45, 21, 9, 101, 102)
# mendefinisikan objek baru yang akan digunakan untuk menampilkan hasil sortir
x_sort <- x
#jumlah amatan
n_x <- length(x)
#iterasi tingkat 1
for(i in 1:(n_x-1)){
#iterasi tingkat 2
for(j in 1:(n_x-i)) {
# Pemeriksaan kondisi apakah elemen ke-j+1 lebih besar dari elemen ke-j
if(x_sort[j+1] > x_sort[j]) {
# jika terpenuhi, buat tempat sementara untuk menyimpan elemen ke-j yang akan ditukar
tmp <- x_sort[j]
# Ganti nilai elemen ke-j dengan nilai yang ada pada elemen ke j+1
x_sort[j] <- x_sort[j+ 1]
# Ganti nilai elemen j+1 dengan nilai yang ada dalam objek temp
x_sort[j+1] <- tmp
}
}
}
x_sort## [1] 102 101 45 21 13 9 7 6
Dari soal tersebut dapat juga dibuat fungsi yang bernama fungsi urutan dengan yang memiliki input x dan outputnya merupakan vector yang sudah terurut!
fungsi_urutan <- function(x){
n_x <- length(x)
for(i in 1:(n_x-1)){
for(j in 1:(n_x-i)) {
if(x[j+1] > x[j]) {
tmp <- x[j]
x[j] <- x[j+ 1]
x[j+1] <- tmp
}
}
}
return(x)
}
#mencoba menerapkan fungsi urutan
fungsi_urutan(x)## [1] 102 101 45 21 13 9 7 6
Membandingkan kecepatan running user-defined-function pada langkah sebelumnya dang fungsi sort dengan menggunakan package microbenchmark
microbenchmark::microbenchmark(sort(x),fungsi_urutan(x))## Unit: microseconds
## expr min lq mean median uq max neval
## sort(x) 75.8 79.0 96.785 81.50 95.75 690.6 100
## fungsi_urutan(x) 16.5 18.2 26.336 20.35 36.00 72.6 100
Reference
Arian. Teori Tentang Rekursif dan Iteratif Dalam Algoritma Pemrograman. https://www.mrtekno.net/2016/11/rekursif-dan-iteratif-algoritma-pemrograman.html
Dito, Gerry A. (Oktober, 2021). Algoritma Iteratif.https://gerrydito.github.io/Algoritma-Iteratif/
Semesta. S. (2019). Pengertian Algoritma Iteratif, Rekursif, dan Eksplorasi. https://massdieka.blogspot.com/2019/03/pengertian-algoritma-iteratif-rekursif.html