Rabu, 30 November 2016

Kompleksitas Waktu untuk Algoritma Rekursif (Revisi)

1. Algoritma Menghitung Faktorial
procedure faktorial(input x:integer output hasil:integer)
   if x = 1 then
      hasil ß 1
   else
      hasil ß faktorial(x-1)*x
   endif
endprocedure

Parameter Input : x
Operasi Dasar      : perkalian

Hasil = F(x) = F(x - 1) * x
             F(3) = F(3 - 1) * 3
                     = F(2) * 3
                     = F(1) * 2 *3
                     = 1 * 2 * 3
                     = 6

Relasi Rekurens :
T(n - 1) = T(n - 1 - 1) + 1
T(n - 1) = T(n - 2) + 1
T(n - 2) = T(n - 3) + 1
T(n - 3) = T(n - 4) + 1
             = dan seterusnya

T(n) = T(n - 1) + 1
        = T(n - 2) + 1 + 1
        = T(n - 3) + 1 + 1 + 1
        = dan seterusnya

n - i = 1
    -i = 1 - n
     i = n – 1

T(n) = T(n - i) + i
        = T(n - (n - 1)) + (n - 1)
        = T(n - n + 1) + (n - 1)
        = T(1) + (n - 1)
        = (n - 1)
        = n

Jadi, T(n) = n
         T(n) O(n)

2.Algoritma Menghitung Pangkat
Function pangkat(input x,y:integer):integer
   if y = 0 then
      pangkat ß 1
   else
      pangkat ß pangkat(x,y-1)*x
   endif
endfunction

Parameter Input : y
Operasi Dasar      : perkalian

Relasi Rekurens :
T(n - 1) = T(n - 1 - 1) + 1
T(n - 1) = T(n - 2) + 1
T(n - 2) = T(n - 3) + 1
T(n - 3) = T(n - 4) + 1
             = dan seterusnya

T(n) = T(n - 1) + 1
        = T(n - 2) + 1 + 1
        = T(n - 3) + 1 + 1 + 1
        = dan seterusnya

n - i = 0
    -i = - n
     i = n

T(n) = T(n - i) + i
        = T(n - n) + (n)
        = T(0) + (n)
        = n

Jadi, T(n) = n
         T(n) O(n)

3.Algoritma Menara Hanoi
Procedure hanoi(input n, A, B, C : integer)
Algoritma
   if n = then
      write (‘Pindahkan piringan dari’,A,’ke’,B)
   else
      hanoi(n-1,A,C,B)
      write(Pindahkan piringan dari’,A,’ke’,B)
      hanoi(n-1,C,B,A)
   endif
endfunction

Parameter Input : n
Operasi Dasar      : pengurangan

Relasi Rekurens :
T(n)       = 2T(n - 1) + 1
T(n - 1) = 2T(n - 1 - 1) + 1
T(n - 1) = 2T(n - 2) + 1
T(n - 2) = 2T(n - 3) + 1
T(n - 3) = 2T(n - 4) + 1
              = dan seterusnya

T(n) = 2T(n - 1) + 1
        = 2(2T(n - 2) + 1) + 1
        = 22T(n - 2) + 2 + 1
        = 22(2T(n - 3) + 1) + 2 + 1
        = 23T(n – 3) + 22 + 2 + 1
        = dan seterusnya

n - i = 1
    -i = 1 - n
     i = n - 1

T(n) = 2iT(n - i) + 2i-1 + 2i-2 + ..... + 20
        = 2iT(n - i) + 2i - 1
        = 2n-1T(n - (n - 1)) + 2n-1 - 1
        = 2n-1 T(1) + 2n-1 - 1
        = 2n-1 + 2n-1 - 1
        = 2n - 1

Jadi, T(n) = 2n - 1
         T(n) O(2n)

Sumber :
Desain & Analisis Algoritma – ZK Abdurahman Baizal
Munir, Renaldi. (2011). Algoritma & Pemrogramman Dalam Bahasa Pascal dan C. (edisi revisi).

1 komentar:

  1. What is the Difference Between Slots And Casinos? - KT Hub
    Casino games, 통영 출장샵 poker, 통영 출장마사지 video 사천 출장안마 poker, 창원 출장마사지 blackjack, roulette, and more — all online, 김해 출장마사지 including casinos, poker rooms, and hotels.

    BalasHapus