Saturday, October 15, 2016

Menghitung T(n) Dalam Mencari Efisiensi Waktu Analisis Algoritma

Contoh 1 : Algoritma Program Biaya Sewa


program Biaya_Sewa

Deklarasi
  biaya : integer
  jenis,tipe : char

Algoritma
  input (jenis)

  if (jenis='A') then
     input (tipe)
     case tipe of
        'A' : biaya <- 300000
        'B' : biaya <- 100000
        'C' : biaya <- 65000
     else
          output('Tipe Mobil yang anda pilih tidak ada')
     endcase
  endif

  else if (jenis='B') then
      Input(kelas)
      case kelas of
         'A' : biaya <- 150000
         'B' : biaya <- 50000
         'C' : biaya <- 32500
      else
          Output('Tipe Sepeda Motor yang anda masukkan tidak ada');
     endcase
  endelseif

  else
      output('Jenis Kendaraan yang anda pilih tidak ada');
  endelse

  Output (biaya)
 
end.
  
Operasi Dasar
Tmax(n)
Tmin(n)
Tavg(n)
<-
n
0
1/2n
=
n
0
1/2n
input
n+1
n
1/2n + 1/2
output
n+1
n
1/2n + 1/2

Operasi dasar yang paling penting adalah (output)

Tmax(n) = n + n + (n+1) + (n+1)
                Tn = n+1 = n

Tmin(n) = 0 + 0 + (n) + (n)
                Tn = n

Tavg(n) = 1/2n + 1/2n + (1/2n+1/2) + (1/2n+1/2)
                Tn = 1/2n = n
 

Contoh 2 : Algoritma Procedure Selection Sort


Data yang harus di urut kan dengan metode selection yaitu :

3
1
4
5
2

procedure sort_selection(var data:larik)

Deklarasi

i,j,result:integer

 n<--5;

 for i <-- 1 to n do

 for j <-- i to n do

  if data[j] < data [i] then

  result <-- data [j]

  data [j] <-- data [i]

  data [i] <-- result;

endfor
endfor
endfor


Operasi Dasar
Tmax(n)
Tmin(n)
Tavg(n)
<--
n+23
n+11
12n
n+5
n+5
0

Operasi dasar yang paling penting adalah (<--)

Tmax(n) = 23n + 5n
                Tn = 23n = n

Tmin(n) = 11n + 5n
                Tn = 11n = n

Tavg(n) = (23-11)/2 n + (5-5)/2 n
                12n + 0
                Tn = 12n = n




Contoh 3 : Algoritma mencari x di dalam elemen menggunakan metode sequential search

Procedure Pencarian Berurutan (input: a1,a2,a3…,a(n) : integer, x :integer,
{
mencari nilai x di dalam elemen a1,a2,a3…a(n). lokasi (indeks elemen) tempat x ditemukan diisi ke daalam idx. Jika x tidak ditemukan, maka idx diisi dengan 0.
            Masukan : a1,a2,a3…a(n)
            Keluaran : idx
}

Algoritma

i ← 1
ketemu ← false
while ( 1 ≤ n) and (not ketemu) do
            if a(i) = x then

                        ketemu ← true

            else
                        i ← i + 1
            endif
            endwhile  { i > n or ketemu }

            if  ketemu then {x ditemukan}
                        idx ← i
            else
                        idx ← 0 {x tidak ditemukan}
            endif



Operasi Dasar
Tmax(n)
Tmin(n)
Tavg(n)
n+2
n+3
1/2n
=
n
n
0
n+1
1
1/2(n+1)
and
n+1
1
1/2(n+1)
+
n
0
1/2n

Operasi dasar yang paling penting adalah (←)


Penyelasaian:
            Algoritma pencarian membandingkan setiap elemen larik dengan x, mulai dari elemen pertama sampai x ditemukan atau sampai elemen terakhir. Jika x ditemukan, maka proses pencarian dihentikan. Kita akan menghitung jumlah operasi perbandingan elemen larik yang terjadi selama pencarian ( a (i) = x ). Operasi perbandingan yang lain, seperti i ≤ n tidak akan dihitung. Operasi perbandingan elemen-elemen larik adalah abstrak yang mendasari algoritma-algoritma pencarian.

1. Kasus terbaik Tmin : ini terjadi bila a (i) = x
Operasi perbandingan elemen ( a (i) = x) hanya dilakukan satu kali, 

maka Tmin (n) = (n+3) + n + 1 + 1 + 0
         Tn = n+3 = n

2. Kasus terburuk Tmax: bila a(n) = x atau x tidak ditemukan.
Seluruh elemen larik dibandingkan, jumlah perbandingan elemen larik (a (i) = x) 

maka Tmax(n) = (n+3) + n + (n+1) + (n+1) + n
         Tn = n+3 = n
.
3. Kasus rata-rata Tavg : Jika ditentukan pada posisi ke-j, maka operasi perbandingan ( a(i) = x)
Dilakukan sebanyak j kali. Jadi, kebutuhan waktu rata-rata algoritma adalah:
Tavg(n) = (1+2+3+…+n) / n = 1/2 n(1+n) / n = (n+1) / 2 = n

maka Tavg(n) = 1/2n + 0 + 1/2(n+1) + 1/2(n+1) + 1/2n
         T(n) = 1/2n = n


Contoh 4 : Algoritma Program Indeks Nilai

Program indeks_nilai

Deklarasi
nilai : integer
indeks : char

Algoritma
input (nilai)

if (nilai ≥ 80) then
    indeks <- ‘A’
else if (nilai ≥ 70) AND (nilai ≤ 80) then
    indeks <- ‘B’
else if (nilai ≥ 55) AND (nilai ≤ 70) then
    indeks <- ‘C’
else if (nilai ≥ 50) AND (nilai ≤ 55) then
    indeks <- ‘D’
else
    indeks <- ‘E’
end if

output (indeks)
end.



Operasi Dasar
Tmax(n)
Tmin(n)
Tavg(n)
<-
5n
n
1/2(5n-n)
4n
n
1/2(4n-n)
3n
n
1/2(3n-n)
input
n
n
0
output
n
n
0

Operasi dasar yang paling penting adalah (<-)

Tmax(n) = 5n + 4n + 3n + n + n
                Tn =  4n = n

Tmin(n) = n + n + n + n + n
                Tn = n

Tavg(n) = 1/2(5n-n) + 1/2(4n-n) + 1/2(3n-n) + 0 + 0
                2 n + 1 1/2 n + n + 0 + 0
                Tn = 2 n = n


Contoh 5 : Algoritma Cetak Nama Lengkap


program ctkNamaLengkap


Deklarasi
nama : array [1..10] of string[15]
nmLkp, nm: string [150]
n, i : integer

Algoritma
   input(n)
   nmLkp <- ' '
   for i <- 1 to n do
      output("Masukkan nama ke ",i," : ")
      input(nama[i])
      nmLkp <- nmLkp + nama[i] + ' '
   endfor
   if nmLkp = 3
        nm <- "Nama anda sudah pas"
   else if nmLkp > 3
        nm <- "Nama anda terlalu panjang"
   else
        nm <- "Nama anda terlalu singkat"
   endif
   output("Nama lengkap anda adalah",nmLkp)
   output(nama)


Operasi Dasar
Tmax(n)
Tmin(n)
Tavg(n)
<-
5n+1
2n+1
1/2(5n+1 - 2n+1)
=
n
n
1/2n
input
n+1
n
1/2n + 1/2
output
n+1
n
1/2n + 1/2

Operasi dasar yang paling penting adalah (<-)

Tmax(n) = (5n+1) + n + (n+1) + (n+1)
                Tn = 5n+1 = n

Tmin(n) = (2n+1) + n + n + n
                Tn = 2n = n

Tavg(n) = 1/2(5n+1 - 2n+1) + 1/2n + (1/2n+1/2) + (1/2n+1/2)
                (1 1/2n+1) + 1/2n + (1/2n + 1/2) + (1/2n + 1/2)
                Tn = 1 1/2n + 1 = n

No comments:

Post a Comment