Minggu, 09 Oktober 2016

Kompleksitas Algoritma

04.35 Posted by Unknown No comments

#Pencarian Nilai Faktorial

Algoritma ini berfungsi untuk mencari nilai faktorial dari sebuah bilangan.


procedure proses_faktorial(n:input, hsl:output);
 
Deklarasi:
 i:integer
Algoritma:
    input(n)
    hsl ← 1;

    for i ← 1 to n do
        hsl ← hsl * i
    endfor

    output(hsl)

Berikut system operasi dasar dalam algoritma tersebut:


operasi dasar       Cn     Cop
input                1      h
←                1+2n+1     i 
*                   n       j
output              1       k

T(n) = h + (1+2n+1)i + nj + k

Program pembuatan dalam metode Pascal



program Hitung_Faktorial;
{Program untuk menghitung faktorial suatu bilangan.
 masukan : nilai yang akan dicari faktorialnya.
 keluaran : nilai faktorial
 }

 var
  bilangan, hasil : integer;

 procedure isi_n(var n:integer);

 
 begin
  write ('Masukan Nilai Dibawah 10 : ');
  readln(n);
end;

 procedure proses_faktorial(var n, hsl: integer);
var i:integer;

 begin
  hsl := 1;
  for i := 1 to n do
  hsl := hsl * i;
  end;
procedure tampil_faktorial(n, hsl:integer);

 begin
  writeln('Hasil Faktorial dari ',n,' adalah ', hsl);
  end;
begin
  hasil :=1;

   isi_n(bilangan);

   if bilangan <= 10 then

   begin
    proses_faktorial(bilangan, hasil);
    tampil_faktorial(bilangan, hasil);

     end
    else
    writeln('Bilangan tidak bisa lebih dari 10');

     Readln;

 end.  

#Mencari Nilai Terbesar

Algoritma ini dimaksudkan untuk mencari nilai terbesar dari suatu set data yang diurutkan. Pencarian dilakukan dengan cara membandingkan setiap nilai pada data yang diinputkan dengan nilai maksimum yang didapat sebelumnya, dimana nilai maksimum diinisialisasi dengan nilai pertama dari data yang diinputkan. Berikut algoritma untuk mencari nilai terbesar: 

Procedure NilaiMaximum(data[0..n]:input)
Deklarasi:
    max:integer
    i:integer
Algoritma:
    max ← data[0]

    foreach item in data:
        if item > max then
            max ← item

    output(max)


Dari algoritma diatas, didapat operasi dasar sebagai berikut, dimana n adalah jumlah data yang diinputkan:

Operasi Dasar Cop Cn
Min Max
x x x + nx
< y ny ny
output
z z z

Maka didapatkan:


Kasus terbaik
Tmin(n) = x + ny + z
Kasus terburuk
Tmax(n) = x + nx + ny + z

#Mencari Luas Balok

Procedure luasBalok(p, l, t : real ; var hl : real)

Deklarasi:  
    p, l, t, hl : real

Algoritma:

   hl ← 2*(p+l+t)


Operasi DasarCopCn
xx
+y2y
*zz

Maka didapatkan:


T(n) = x + 2y + z



#Konversi Suhu

Dibawah ini adalah salah satu contoh algortima konversi suhu dari 3 satuan yang berbeda yaitu Fahrenheit, Celcius dan Reamur.



Procedure Fahrenheit_celcius

Deklarasi

Algoritma
 Input(f)
 c←5/9*(f-32)
 output(c)
end

Procedure Fahrenheit_reamur

Deklarasi

Algoritma
 Input(f)
 r←4/9*(f-32)
 output(r)
end

Procedure celcius_fahrenheit

Deklarasi

Algoritma
 Input(c)
 f←(9/5)*c+32
 output(f)
end

Procedure celcius_reamur

Deklarasi

Algoritma
 Input(c)
 r←(4/5)*c
 output(r)
end

Procedure reamur_fahrenheit

Deklarasi

Algoritma
 Input(r)
 f←(9/4)*r+32
 output(f)
end

Procedure reamur_celcius

Deklarasi

Algoritma
 Input(r)
 c←(5/4)*r
 output(c)
end

Program Konversi_Suhu

Deklarasi
 r, f, c  : real
 pilih, apa : char
 
algoritma
 repeat
 input(pilih)
 
  case pilih of
   '1' = fahrenheit_celcius
   '2' = fahrenheit_reamur
   '3' = celcius_fahrenheit
   '4' = celcius_reamur
   '5' = reamur_fahrenheit
   '6' = reamur_celcius
  else
   output('Nomor yang anda masukkan salah')
  endcase
 
 input ('Mau coba lagi (Y/T) : ') read(apa)
 until apa = 'Y'
 end repeat
end

Operasi Dasar
Cn
Cop
Input
2n+8
a
/
6
b
*
6
c
6
d
Output
n+7
e
+
2
f
-
2
g
Tn = Cn*Cop
Tn= (2n+8)a+6b+6c+6d+(n+7)e+2f+2g


#Deret Fibonacci

Dalam matematika, bilangan Fibonacci adalah barisan yang didefinisikan secara rekursif. Barisan ini berawal dari 0 dan 1, kemudian angka berikutnya didapat dengan cara menambahkan kedua bilangan yang berurutan sebelumnya. Berikut pseudocode dari algoritma deret bilangan fibonacci.


Procedure fibonacci(input jml : integer)

Deklarasi
    range :integer
    current :integer
    tmp :integer
    i :integer
 
Algoritma
    range ← 0
    current ← 1
    tmp ← 0

    print(range)
    print(current)

    for (i ← 2; i < jml; i++)
        tmp ← current
        current ← current + range
        range ← tmp

        print(current)
    endfor

Bedasarkan algoritma diatas, kompleksitas algortima dapat dihitung sebagai berikut. 

Operasi Dasar
Cn
Cop
3(n-2)+4 = 3n-2
A
< 
(n-2)+1 = n-1
B
+
2(n-2) = 2n-4
C
print
(n-2)+2 = n
D
Tn = Cn*Cop
Tn= A(3n-2) + B(n-1) + C(2n-4) + Dn



Referensi :
Munir, Rinaldi, 2005, Algoritma dan Pemrograman dalambahasa Pascal dan C, Penerbit Informatika Bandung


0 komentar:

Posting Komentar