Selasa, 01 November 2016

KOMPLEKSITAS ALGORITMA - NILAI ASIMTOTIK

Kali ini saya akan membahas tentang cara mencari Kompleksitas Algoritma Nilai Asimtotik Menggunakan O-notation, Omega-notation

NIM         : 10115496
Programer   : Mochamad Indra Yudha Lakaselindra

program selectionMin
const Nmaks = 100

type
   larikInt = array[1..Nmaks] of integer

Kamus
   nilai : larikInt
   i, n : integer

procedure input(I/O L:larikInt, banyakData : integer)
Kamus
   i : integer

Algoritma
   Output('Masukkan jumlah data : ') Input(banyakData)
   for i 1 to banyakData do
     begin
       Output('Data ke-',i,' : ') Input(L[i])
     end
   end

procedure selectionMinAsc(I/O L:larikInt, banyakData : integer)
Kamus
   i,j,imin,temp : integer

algoritma
   for i 1 to banyakData-1 do
     begin
       imin i
     for j i + 1 to banyakData do
     begin
       if (L[j] < L[imin]) then
         imin j
       end
     end

     temp [i]
     L[i] L[imin]
     L[imin] temp
   end
end

algoritma
   input(nilai, n)
   selectionMinAsc(nilai, n)
   for i 1 to n do
   begin
      output('Data ke-',i,' = ',nilai[i])
   end
end



- Mencari T(n)

C(n)
Output = 2n+1 Mis a
Input = 3 Mis b
Jumlah operasi :
← = 9n Mis c
< = n Mis d
+ = n Mis e
- = n Mis f
Maka Hasil dari perhitungan T(n) adalah sebagai berikut :
T(n) = (2n+1)a + 3b + (9n)c + (n)d + (n)e + (n)f


- Mencari O-notation
T(n) ϵ O(g(n))
jika
T(n) ≤ c.g(n)

T(n) ≤ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≤ c.g(n)
pengecekan jika n = 1, c = 18
= (2n+1)+3+(9n)+(n)+(n)+(n) ≤ 18.1
= (2*1+1)+3+(9*1)+(1)+(1)+(1) ≤ 18.1
= 3+3+9+1+1+1 ≤ 18
= 18 ≤ 18
Kondisi pengecekan menggunakan n = 1 dan c = 18 ternyata benar.

Pengecekan Lain
T(n) ≤ c.g(n^2) = (2n+1)+3+(9n)+(n)+(n)+(n) ≤ c.g(n^2)
pengecekan jika n = 20
= (2n+1)+3+(9n)+(n)+(n)+(n) ≤ 1*20^2
= (2*20+1)+3+(9*20)+(20)+(20)+(20) ≤ 1*20^2
= 41+3+180+20+20+20 ≤ 400
= 284 ≤ 400
Pengecekan benar.
maka jika n = 20 atau lebih maka hasilnya akan benar.


- Mencari Omega-notation
T(n) ϵ Ω(g(n))
jika
T(n)  ≥ c.g(n)

T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n)
pengecekan jika n = 1, c = 1
= (2n+1)+3+(9n)+(n)+(n)+(n) ≥ 1.1
= (2*1+1)+3+(9*1)+(1)+(1)+(1) ≥ 1.1
= 3+3+9+1+1+1 ≥ 1
= 19 ≥ 1
Kondisi pengecekan menggunakan n = 1 dan c = 1 ternyata benar.

Pengecekan Lain 
T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n)
pengecekan jika n = 2
= (2n+1)+3+(9n)+(n)+(n)+(n) ≥ 1.2
= (2*2+1)+3+(9*2)+(2)+(2)+(2) ≥ 1.2
= 5+3+18+2+2+2 ≥ 2
= 32 ≥ 2
Kondisi pengecekan menggunakan n = 2 ternyata benar.

Pengecekan Lain 
T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n^0)
pengecekan jika n = 1, c = 1
= (2n+1)+3+(9n)+(n)+(n)+(n) ≥ 1.1
= (2*1+1)+3+(9*1)+(1)+(1)+(1) ≥ 1.1
= 3+3+9+1+1+1 ≥ 1
=19 ≥1
Kondisi pengecekan menggunakan n = 1 dan c = 1 ternyata benar.

maka dapat dipastikan jika :
T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n^0)
T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n^-1)
:
:
T(n) ≥ c.g(n) = (2n+1)+3+(9n)+(n)+(n)+(n) ≥ c.g(n^-n) itu benar.


-Theta-notation 
T(n) ϵ ϴ(g(n))
       jika
c2.g(n) ≤  T(n) ≤ c1.g(n)






Terimakasih ^_^