Sunday, December 4, 2016

Pengertian,Contoh Kasus Dan Pseudocode Algoritma Greedy

Pengertian

Greedy adalah satu dari sekian banyak algoritma yang ada ,greedy termasuk algoritma yang cukup populer karna banyak digunakan untuk menyelesaikan banyak persoalan .

Greedy merupakan algoritma untuk menyelesaikan dengan solusi terbaik dengan cara optimasi yaitu :

                1. Optimasi Maksimasi (maximization)
                2. Optimasi Minimasi (minimization)

Secara Harfiah Greedy artinya rakus atau tamak, sifat yang berkonotasi negatif. Orang yang memiliki sifat ini akan mengambil sebanayak mungkin atau mengambil yang paling bagus atau yang paling mahal. Sesuai dengan arti tersebut, Prinsip Greedy adalah take what you can get now. Dalam kehidupan sehari hari Greedy dapat digunakan dalam masalah seperti :

  • Memilih beberapa jenis investasi
  • Mencari jalur tersingkat
Ada juga yang dapat dilakukan algoritma ini dalam sesuatu yang biasa dilakukan mesyarakat modern, yaitu memilih spesifikasi komputer yang terbaik dengan budget maksimum tertentu seperti yang akan dibahas dalam makalah singkat ini.
1. Definisi Algoritma Greedy
Algoritma Greedy membentuk solusi langkah per langkah (step by step). Terdapat banyak pilihan yang perlu di eksplorasi pada setiap langkah solusi, karenanya pada setiap langkah harus dibuat keputusann yang terbaik dalam menentukan pilihan.Keputusan yang telah
diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Sebagai contoh, jika kita manggunakan algoritma Greedy untuk menempatkan komponen diatas papan sirkuit, sekali komponen telah diletakkan dan dipasang maka tidak dapat dipindahkan lagi.
Pada setiap langkah diperoleh optimum lokal. Bila algoritma berakhir, kita berharap optimum lokal menjadi optimum global.
2. Skema umum Algoritma Greedy
Algoritma greedy disusun oleh elemen-elemen berikut:
  • Himpunan kandidat.
Berisi elemen-elemen pembentuk solusi.
  • Himpunan solusi
Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan.
  • Fungsi seleksi (selection function)
Memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya.
  • Fungsi kelayakan (feasible)
Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi.
  • Fungsi obyektif
yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi(misalnya panjang lintasan, keuntungan, dan lain-lain).Contoh pada masalah Pemilihan Processor, berdasarkan benchmark elemen-elemen algoritma greedy-nya adalah:
a.Himpunan kandidat: himpunan hardware yang terdiri dari Processor, Memory dan Graphic card
b.Himpunan solusi: Kombinasi Processor , Memory dan Graphic card dengan Benchmark terbaik namun dengan total harga yang tidak melebihi budget maksimum
c.Fungsi seleksi: Seleksi Processor, Memory dan Graphic card agar mendapat performa optimum dan tidak melebihi budget maksimum yang tersedia
d.Fungsi obyektif: Budget maksimum yang tersedia


CONTOH KASUS :

Minimisasi Waktu di dalam Sistem (Penjadwalan)

Persoalan: Sebuah server (dapat berupa processor, pompa, kasir di bank, dll) mempunai n pelanggan (customer, client) yang harus dilayani. Waktu pelayanan untuk setiap pelanggan sudah ditetapkan sebelumnya, yaitu pelanggan i membutuhkan waktu ti. Kita ingin meminimumkan total waktu di dalam sistem,

                T = (waktu di dalam sistem untuk pelanggan i)

Karena jumlah pelanggan adalah tetap, meminimumkan waktu di dalam sistem ekivalen dengan meminimumkan waktu rata-rata.

Misalkan kita mempunyai tiga pelanggan dengan

                t1 = 5,    t2 = 10, t3 = 3,

maka enam urutan pelayanan yang mungkin adalah:

Urutan                  T
=================================                                              
1, 2, 3:   5 + (5 + 10) + (5 + 10 + 3 ) = 38
1, 3, 2:   5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1, 3:   10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3, 1:   10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2:   3 + (3 + 5) + (3 + 5 + 10) = 29 ¬ (optimal)
3, 2, 1:   3 + (3 + 10) + (3 + 10 + 5) = 34

Pemecahan Masalah dengan Algoritma Exhaustive Search

Urutan pelangan yang dilayani oleh server merupakan suatu permutasi

Jika ada n orang pelanggan, maka tedapat n! urutan pelanggan. Waktu yang dibutuhkan untuk mengevaluasi fungsi obyektif adalah O(n), oleh karena itu kompleksitas algoritma exhaustive search untuk masalah ini adalah O(nn!)

Pemecahan Masalah dengan Algoritma Greedy

Strategi greedy untuk memilih pelanggan berikutnya adalah:


  • Pada setiap langkah, masukkan pelanggan yang membutuhkan waktu pelayanan terkecil di antara pelanggan lain yang belum dilayani. 



  • Agar proses pemilihan pelanggan berikutnya optimal, maka perlu mengurutkan waktu pelayanan seluruh pelanggan dalam urutan yang menaik. Jika waktu pengurutan tidak dihitung, maka kompleksitas algoritma greedy untuk masalah minimisasi waktu di dalam sistem adalah O(n).

Algoritma :

procedure PenjadwalanPelanggan(input n:integer)

{ Mencetak informasi deretan pelanggan yang akan diproses oleh server tunggal
  Masukan: n pelangan, setiap pelanggan dinomori 1, 2, …, n
  Keluaran: urutan pelanggan yang dilayani
}                              
Deklarasi
   i : integer

Algoritma:
  {pelanggan 1, 2, ..., n sudah diurut menaik berdasarkan ti}
  for i¬1 to n do
     write(‘Pelanggan ‘, i, ‘ dilayani!’)
  endfor   


Pseucode
Contoh Algoritma Greedy Pada C++ Dengan Contoh Aplikasi Penukaran Koin Logam

#include
#include
#define size 99

void sort(int[], int);

main()
{
int x[size],i,n,uang,hasil[size];
printf("\n Banyak Koin :");
scanf("%d", &n);
printf("\n \n Masukkan Jenis Koin : \n");

for(i=1;i<=n;i++)
{
scanf("%d", &x[i]);
}
sort(x,n);
printf("\n Koin yang Tersedia :");

for(i=1;i<=n;i++)
{
printf("%d", x[i]);
printf("\n");
}
printf("\n");
printf("\n Masukkan Nilai yang Dipecah :");
scanf("%d", &uang);
printf("\n");

for(i=1;i<=n;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
}
for(i=1;i<=n;i++)
{
printf("Keping %d", x[i]);
printf("-an sebanyak : %d", hasil[i]);
printf("\n \n");
}
getch();
return 0;
}

void sort(int a[], int siz)
{
int pass,hold,j;
for(pass=1;pass<=siz-1;pass++)
{

for(j=0;j<=siz-2;j++)
{
if(a[j+1] < a[j+2])
{
hold=a[j+1];
a[j+1]=a[j+2];
a[j+2]=hold;
}
}
}
}


Sunday, November 27, 2016

Kompleksitas waktu untuk algoritma rekursif

Contoh 1. Algoritma rekursif menghitung Faktorial

program faktorial;

kamus
n:integer;

function faktorial(n:integer):integer
 if n = 1 then
  faktorial <-- 1
 else
  faktorial <-- n * faktorial(n-1)
endfunction

algoritma
input (n)
output(faktorial(n))   

Operasi dasar :

Operasi Dasar
Tmax
Tmin
<--
n
1
*
n-1
0
-
n-1
0
=
n
1

Opersi dasar (*)
Tn = n-1

Contoh 2. Algoritma rekursif menghitung pangkat

Program hitung_pangkat;

kamus
bil,p:integer;

function pangkat(bil,p:integer):longint;

 if p=0 then
   pangkat <-- 1
 else
   pangkat <-- bil*pangkat(bil,p-1)

endfunction


Algoritma
   input(bil) {input bilangan}
   input(p) {input nilai pangkat}
  Output('pangkat(bil,p))
end.  

Operasi Dasar
Tmax
Tmin
<--
n
1
*
n-1
0
-
n-1
0
=
n
1

Opersi dasar (*)
Tn = n-1


Contoh 3. Algoritma rekursif menghitung Deret

program Hitung_Deret;

kamus
 n:integer

function deret(n:integer):integer

 if n=1 then
   deret <-- 1
 else
   deret <-- n + deret(n-1)

endfunction


Algoritma

   Input (n)
   Output (deret(n));
  
end.

Operasi Dasar
Tmax
Tmin
<--
n
1
+
n-1
0
-
n-1
0
=
n
1

Opersi dasar (+)
Tn = n-1


Monday, October 24, 2016

Notasi Asimtotik - Menghitung Big OH, Big Omega, dan Big Theta

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

-Big-oh(O)

Tn =   Cg(n)
n+1 5(n)
1+1 ≤ 5(1)        ;n=1
≤ 5                 ;C=5

Tmax­­(n)= n+1 = O (n) untuk n ≥ 1 dan C ≥ 5
Jadi Tn= n+1 termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n)
n+1  1(n)
1+1 ≥ 1(1)             ;n=1
≥ 1                      ;C=1

Tmax­­(n)= n+1= Ω(n) untuk n ≤ 2 dan C  ≤ 1
Jadi Tn= n+1 tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmax­­(n)= n+1=O(n) dan Tmax­­(n)= n+1= Ω(n) maka Tmax­­(n)= n+1= Θ(n)

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

-Big-oh(O)

Tn =   Cg(n)
 2(n)
≤ 2(1)        ;n=1
≤ 2             ;C=2

Tmin­­(n)= n = O (n) untuk n ≥ 1 dan C ≥ 2
Jadi Tn= n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n)
 1/2(n)
≥ 1/2(1)             ;n=1
 1/2                 ;C=1/2

Tmin­­(n)= n= Ω(n) untuk n ≤ 1 dan C  ≤ 1/2
Jadi Tn= n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmin­­(n)= n=O(n) dan Tmin­­(n)= n= Ω(n) maka Tmin­­(n)= n= Θ(n)


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

-Big-oh(O)

Tn =   Cg(1/2n)
1/2n  2(1/2n)
1/2.1 ≤ 2(1/2.1)        ;n=1
1/2 ≤ 1                      ;C=2

Tavg­­(n)= 1/2n = O (n) untuk n ≥ 1 dan C ≥ 2
Jadi Tn= 1/2n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n^2)
17n  8(n^2)
17+5 ≥ 8(5^2)              ;n=5
22 ≥ 200                      ;C=8

Tavg­­(n)= 17n= Ω(n) untuk n ≤ 5 dan C  ≤ 8
Jadi Tn= 17n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tavg­­(n)= 1/2n=O(n) dan Tavg­­(n)= 1/2n= Ω(n) maka Tavg­­(n)= 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
17n
n+5
n+5
0
Operasi dasar yang paling penting adalah (<--)

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

-Big-oh(O)

Tn =  Cg(n^2)
n+23 25(n^2)
10+23 ≤ 25(10^2)        ;n=10
33 ≤ 2500                    ;C=25

Tmax­­(n)= n+23 = O (n) untuk n ≥ 10 dan C 25
Jadi Tn= n+23 termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =  Cg(n^2)
n+23 8(n^2)
5+23 ≥ 8(5^2)             ;n=5
28 ≥ 200                      ;C=8

Tmax­­(n)= n+23= Ω(n) untuk n ≤ 5 dan C  ≤ 8
Jadi Tn= n+23 tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmax­­(n)= n+23=O(n) dan Tmax­­(n)= n+23=(n) maka Tmax­­(n)= n+23= Θ(n)

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

-Big-oh(O)

Tn =  Cg(n^2)
n+11 25(n^2)
10+11 ≤ 25(10^2)        ;n=10
21 ≤ 2500                    ;C=25

Tmin­­(n)= n+11 = O (n) untuk n ≥ 10 dan C 25
Jadi Tn= n+11 termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =  Cg(n^2)
n+11 8(n^2)
5+11 ≥ 8(5^2)              ;n=5
16 ≥ 200                      ;C=8

Tmin­­(n)= n+11= Ω(n) untuk n ≤ 5 dan C  ≤ 8
Jadi Tn= n+11 tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmin­­(n)= n+11=O(n) dan Tmin­­(n)= n+11=(n) maka Tmin­­(n)= n+11= Θ(n)
Tavg(n) = (23-11)/2 n + (5-5)/2 n
                    =    17n + 0
               Tn = 17n = n



-Big-oh(O)

Tn =  Cg(n^2)
17n 25(n^2)
17+10 ≤ 25(10^2)        ;n=10
27 ≤ 2500                    ;C=25

Tavg­­(n)= 17n = O (n) untuk n ≥ 10 dan C 25
Jadi Tn= 17n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =  Cg(n^2)
17n 8(n^2)
17+5 ≥ 8(5^2)              ;n=5
22 ≥ 200                      ;C=8

Tavg­­(n)= 17n= Ω(n) untuk n ≤ 5 dan C  ≤ 8
Jadi Tn= 17n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tavg­­(n)= 17n=O(n) dan Tavg­­(n)= 17n=(n) maka Tavg­­(n)= 17n= Θ(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

 
Tmax: Tn = n+3 = n
Big O
n+3 ≤ Cg (n²)
n+3 ≤ 10 (n²)
n=0 0+3 ≤ 0
n=1 1+3 ≤ 10
n=2 2+3 ≤ 40
n=10 10+3 ≤ 1000
n=100 100+3 ≤ 100000
C=10 Tn = n+3
Big Omega
n+3 ≥ Cg (n²)
n+3 ≥ 10 (n²)
n=0 0+3 ≥ 0
n=1 1+3 ≥ 10
n=2 2+3 ≥ 40
n=10 10+3 ≥ 1000
n=100 100+3 ≥ 100000
C=10 Tn = n+3
Big Teta

Karena Tmax­­(n)= n+3=O(n) dan Tmax­(n)= n+3= Ω(n) maka Tmax­­(n)= n+3= Θ(n)



Tmin: Tn = n+2 = n
Big Oh
n+2 ≤ Cg (n²)
n+2 ≤ 10 (n²)
n=0 0+2 ≤ 0
n=1 1+2 ≤ 10
n=2 2+2 ≤ 40
n=10 10+2 ≤ 1000
n=100 100+2 ≤ 100000
C=10 Tn = n+2

Big Omega:
n+2 ≥ Cg (n²)
n+2 ≥ 10 (n²)
n=0 0+2 ≥ 0
n=1 1+2 ≥ 10
n=2 2+2 ≥ 40
n=10 10+2 ≥ 1000
n=100 100+2 ≥ 100000
C=10 Tn = n+2
Big Teta
Karena Tmin­­(n)= n+2=O(n) dan Tmin(n)= n+2= Ω(n) maka Tmin(n)= n+2= Θ(n)


Tavg: Tn = 1/2n = n



Big O

1/2n ≤ Cg (n²)

1/2n ≤ 10 (n²)

n=0 1/2 x 0 ≤ 0

n=1 1/2 x 1 ≤ 10

n=2 1/2 x 2 ≤ 40

n=10 1/2 x 10 ≤ 1000

n=100 1/2 x 100 ≤ 100000

C=10 Tn = 1/2n


Big Omega
1/2n ≥ Cg (n²)
1/2n ≥ 10 (n²)
n=0 1/2 x 0 ≥ 0
n=1 1/2 x 1 ≥ 10
n=2 1/2 x 2 ≥ 40
n=10 1/2 x 10 ≥ 1000
n=100 1/2 x 100 ≥ 100000
C=10 Tn = 1/2n

Big Teta

Karena Tavg­­(n)= 1/2n=O(n) dan Tavg(n)= 1/2n= Ω(n) maka Tavg(n)= 1/2n= Θ(n)


Contoh 4 : 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

Notasi Asimtotik

Big Oh (O)

Tmax(n) = 5n+1
5n + 1 ≤ Cg (n²)
5n + 1 ≤ 6 (n²)
n = 0      5(0) + 1 ≤ 0
n = 1      5(1) + 1 ≤ 6
n = 5      5(5) + 1 ≤ 6(25)
n = 10    5(10) + 1 ≤ 6(100)
≥ 7      n ≥ 1

Tmin(n) = 2n
2n + 1 ≤ Cg (n)
2n + 1 ≤ 3 (n)
n=0     2(0) ≤ 3 (0)
n=1     2(1) ≤ 3 (1)
n=2     2(2) ≤ 3 (2)
n=5     2(5) ≤ 3 (5)
n=10   2(10) ≤ 3 (10)
≥ 3   n ≥ 1

Tavg(n) = 1 1/2n + 1
1 1/2n + 1 ≤ Cg(n)
1 1/2n + 1 ≤ 3 (n)
n=0     1 1/2(0) + 1 ≤ 3(0)
n=1     1 1/2(1) + 1 ≤ 3(1)
n=5     1 1/2(5) + 1 ≤ 3(5)
n=10   1 1/2(10 + 1 ≤ 3(10)
≥ 3   n ≥ 1

Big Omega

Tmax(n) = 5n+1
5n + 1 ≥ Cg (n)
5n + 1 ≥ 5 (n)
n = 0      5(0) + 1 ≥ 0
n = 1      5(1) + 1 ≥ 5(1)
n = 5      5(5) + 1 ≥ 5(5)
n = 10    5(10) + 1 ≥ 5(10)
 5      n ≥ 1

Tmin(n) = 2n
2n + 1 ≥ Cg (n)
2n + 1 ≥ 2 (n)
n=0     2(0) ≥ 2 (0)
n=1     2(1) ≥ 2 (1)
n=2     2(2) ≥ 2 (2)
n=5     2(5) ≥ 2 (5)
n=10   2(10) ≥ 2 (10)
 2   n ≥ 1

Tavg(n) = 1 1/2n + 1
1 1/2n + 1 ≤ Cg(1/n)
1 1/2n + 1 ≤ 2 (1/n)
n=0     1 1/2(0) + 1  1(1/0)
n=1     1 1/2(1) + 1  1(1/1)
n=5     1 1/2(5) + 1  1(1/5)
n=10   1 1/2(10) + 1  1(1/10)
≥ 2   n ≥ 1

Big Theta



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

-Big-oh(O)

Tn =   Cg(n)
4n 5(n)
4.1 ≤ 5(1)        ;n=1
≤ 5                ;C=5

Tmax­­(n)= 4n = O (n) untuk n ≥ 1 dan C ≥ 5
Jadi Tn= 4n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n)
4n  1(n)
4.2 ≥ 1(1)             ;n=2
≥ 1                     ;C=1

Tmax­­(n)= 4n= Ω(n) untuk n ≤ 2 dan C  ≤ 1
Jadi Tn= 4n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmax­­(n)=4n=O(n) dan Tmax­­(n)= 4n = Ω(n) maka Tmax­­(n)= 4n= Θ(n)



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

-Big-oh(O)

Tn =   Cg(n)
 2(n)
≤ 2(1)        ;n=1
≤ 2             ;C=2

Tmin­­(n)= n = O (n) untuk n ≥ 1 dan C ≥ 2
Jadi Tn= n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n)
 1/2(n)
≥ 1/2(1)             ;n=1
≥  1/2                 ;C=1/2

Tmin­­(n)= n= Ω(n) untuk n ≤ 1 dan C  ≤ 1/2
Jadi Tn= n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ

Karena Tmin­­(n)= n=O(n) dan Tmin­­(n)= n= Ω(n) maka Tmin­­(n)= n= Θ(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

-Big-oh(O)

Tn =   Cg(n)
2n  3(n)
2.1 ≤ 3(1)        ;n=1
≤ 3                ;C=3

Tavg­­(n)= 2n = O (n) untuk n ≥ 1 dan C ≥ 1
Jadi Tn= 2n termasuk kedalam himpunan Big-oh(O)

-Big -Omega (Ω)

Tn =   Cg(n)
2n  1(n)
2.5 ≥ 1(5)              ;n=5
10 ≥ 5                ;C=1

Tavg­­(n)= 2n= Ω(n) untuk n ≤ 5 dan C  ≤ 1
Jadi Tn= 2n tidak termasuk ke dalam himpunan -Big -Omega (Ω)

-Big -Teta Θ


Karena Tavg­­(n)= 2n=O(n) dan Tavg­­(n)= 2n= Ω(n) maka Tavg­­(n)= 2n= Θ(n)