analisis algoritma dan struktur data

27
ANALISIS ALGORITMA DAN STRUKTUR DATA Suarga

Upload: ciel

Post on 09-Jan-2016

138 views

Category:

Documents


4 download

DESCRIPTION

Analisis Algoritma dan Struktur Data. Suarga. Rencana Topik Bahasan. Review Algoritma Dasar Review Struktur Data Fondasi Matematis Analisis Algoritma Algoritma Greedy Divide and Conquer Dynamic Programming HeapSort + QuickSort Counting Sort + Radix Sort. Rencana Topik Bahasan. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Analisis Algoritma dan Struktur  Data

ANALISIS ALGORITMA DAN STRUKTUR DATA

Suarga

Page 2: Analisis Algoritma dan Struktur  Data

Rencana Topik Bahasan

1. Review Algoritma Dasar2. Review Struktur Data3. Fondasi Matematis4. Analisis Algoritma5. Algoritma Greedy6. Divide and Conquer7. Dynamic Programming8. HeapSort + QuickSort9. Counting Sort + Radix Sort

Page 3: Analisis Algoritma dan Struktur  Data

Rencana Topik Bahasan

10 .Median and Order Statistcs11 .Binary Search Tree12. B-Trees13. Algoritma Graf14. Algoritma Dijkstra dan Bellman-Ford

Page 4: Analisis Algoritma dan Struktur  Data

References

1. References: 1. Aho, Hopcroft, and Ullman, “The Design

and Analysis of Computer Algorithm”, Addison Wesley

2. Sedgewick and Flajolet, “Analysis of Algorithm”, Addison Wesley

3. Cormen, Leiserson, and Rivest, “Introduction to Algorithms”, McGraw Hill , MIT Press

4. Suarga, “Algoritma Pemrograman”, Andi Offset

Page 5: Analisis Algoritma dan Struktur  Data

REVIEW ALGORITMA DASAR

Page 6: Analisis Algoritma dan Struktur  Data

Pendahuluan

Kata Algoritma Algorithm Algorism Al Kwarizmi Abu Ja’far Muhammad Ibnu Musa Al-Kwarizmi : memakai prinsip algoritma dalam penyelesaian aljabar (Aljabar wal Muqabala).

Algoritma : teknik penyusunan langkah penyelesaian masalah dalam bentuk kalimat singkat dengan jumlah kata terbatas, namun tersusun secara logis dan sistematis

Page 7: Analisis Algoritma dan Struktur  Data

Ciri Algoritma

Donal E.Knuth menyatakan: Algoritma mempunyai awal dan akhir, jadi

memiliki langkah yang jumlahnya terbatas Setiap langkah harus didefinisikan dengan

tepat sehingga tidak memiliki arti ganda Memiliki kondisi awal, atau nilai masukan Memiliki kondisi akhir atau nilai keluaran Effektif, bila langkahnya di-ikuti maka

persoalan harus memiliki penyelesaian

Page 8: Analisis Algoritma dan Struktur  Data

Struktur Algoritma

Header: yang memuat nama algoritma serta keterangan singkat tentang kondisi awal, kondisi akhir, atau tujuan algoritma

Deklarasi /Definisi Variable: memuat definisi dari semua variabel yang akan digunakan dalam algoritma

Deskripsi / Rincian Langkah: susunan logis dan sistematis dari langkah penyelesaian masalah

Page 9: Analisis Algoritma dan Struktur  Data

Contoh

Algoritma Nilai-Rata{ menghitung nilai rata dari n buah data }Deklarasi

integer N, k;real x, jumlah, rata;

DeskripsiRead(N);k 1;jumlah 0.0;

Page 10: Analisis Algoritma dan Struktur  Data

While (k <= N) do Read(x); Jumlah jumlah + x; k k + 1;

endWhile; Rata jumlah/N; Write(Rata);

Page 11: Analisis Algoritma dan Struktur  Data

Data dan Variabel

Ada dua kategori dari tipe data, yaitu: tipe dasar dan tipe bentukan.

Tipe dasar : adalah tipe data yang selalu tersedia pada setiap bahasa pemrograman, antara lain: bilangan bulat (integer), bilangan biasa (real), bilangan tetap (const), karakter (character atau char), logik (logic atau boolean).

Tipe bentukan : adalah tipe data yang dibentuk dari kombinasi tipe dasar, antara lain: larik (array), rekaman (record), string (string).

Page 12: Analisis Algoritma dan Struktur  Data

Array : Kumpulan elemen sejenis 1-dimensi: integer nilai[20]; 2-dimensi: real matriks[5][10]; 3-dimensi: real tensor[3][5][10];

String: array dari karakter String nama, alamat;

Record: Kumpulan elemen tdk sejenis Type DataMhs : record

< NomerMhs : integer, Nama : String, Alamat: String,

Umur : integerJkel : char;

>

Page 13: Analisis Algoritma dan Struktur  Data

Variable adalah nama yang mewakili suatu elemen data seperti: jenkel untuk jenis kelamin, t4lahir untuk tempat lahir, alamat untuk alamat, dsb.

Ada aturan tertentu yang wajib diikuti dalam pemberian nama variable antara lain: Harus dimulai dengan abjad, tidak boleh dengan angka

atau simbol Tidak boleh ada spasi diantaranya Jangan menggunakan simbol-simbol yang bisa

membingungkan seperti titik dua, titik koma, koma, dsb. Sebaiknya memiliki arti yang sesuai dengan elemen data Sebaiknya tidak terlalu panjang

Contoh variable yang benar : Nama, Alamat, Nilai_Ujian

Contoh variable yang salah : 4XYZ, IP rata, Var:+xy,458;

Page 14: Analisis Algoritma dan Struktur  Data

Pemberian nilai pada variabel Pemberian nilai dengan cara assignment

mempunyai bentuk umum sebagai berikut: Variable nilai; Variable1 variable2; Variable ekspressi;

Pemberian nilai dengan cara pembacaan dapat dilakukan melalui instruksi pembacaan dengan bentuk umum sbb: read(variable); atau read( variable1, variable2, … );

Page 15: Analisis Algoritma dan Struktur  Data

Menampilkan nilai variabel Agar hasil pelaksanaan algoritma dapat

dikomunikasikan atau ditayangkan maka nilai variable yang telah diproses dalam algoritma dapat ditampilkan.

Instruksi untuk menampilkan nilai variable adalah: write(variable, … );

Contoh penampilan nilai adalah sbb: write(“nama anda : “, Nama); write(“nilai ujian = “, nilai); write(“Jumlah variable = “, X + Y + Z);

Page 16: Analisis Algoritma dan Struktur  Data

Operator

Operator aritmetika : operator untuk melakukan fungsi aritmetika seperti: + (menjumlah), - (mengurangkan), * (mengalikan), / (membagi), %(sisa).

Operator relational : operator untuk menyatakan relasi atau perbandingan antara dua operand, seperti : > (lebih besar), < (lebih kecil), >= (lebih besar atau sama), <= (lebih kecil atau sama), == (sama), != (tidak sama) atau > <, < >.

Page 17: Analisis Algoritma dan Struktur  Data

Operator logik : operator untuk merelasikan operand secara logis, seperti && (and), || (or), dan ! (not).

Operator string : operator untuk memanipulasi string, seperti : + (concatenation), len (panjang string), dan substr (substring, mencuplik).

Fungsi : berbagai fungsi matematis seperti: floor(), ceil(), log(), sin(), cos(), tan(), sqrt(), dsb

Page 18: Analisis Algoritma dan Struktur  Data

Instruksi Utama

Instruksi Sequential : 1. tiap instruksi dikerjakan sekali satu per-

satu2. urutan pelaksanaan instruksi sama

dengan urutan penulisan algoritma3. instruksi terakhir merupakan akhir dari

algoritma4. urutan penulisan instruksi bisa menjadi

penting, bila diubah dapat menyebabkan hasil yang berbeda.

Page 19: Analisis Algoritma dan Struktur  Data

Instruksi Selection (pemilihan alternatif) Instruksi pemilihan adalah instruksi yang

dipakai untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu persyaratan. Ada dua bentuk instruksi pemilihan yang sering digunakan yaitu:

Instruksi if / then / else Instruksi case

Page 20: Analisis Algoritma dan Struktur  Data

bentuk 1 kasus: if (syarat) if ( x > 100)

then aksi then x x + 1;endif endif bentuk 2 kasus: 

if ( syarat ) if ( x > 0) then aksi-1 then Write(‘ X positif”); else aksi-2 else Write(“X negatif”);endif. endif

      

Page 21: Analisis Algoritma dan Struktur  Data

Bentuk bersusun (nested)if ( syarat-1 ) if (syarat-1) then aksi-1 then if

(syarat-2) else if ( syarat-2 )

then aksi-1 then aksi-2 else

aksi-2 else aksi-3 endif endif else aksi-3endif. endif

Page 22: Analisis Algoritma dan Struktur  Data

Bentuk instruksi case :

case ( variable )nilai-1 : aksi-1;nilai-2 : aksi-2;nilai-3 : aksi-3;………..default : aksi-n;

endcase.

Page 23: Analisis Algoritma dan Struktur  Data

Instruksi Perulangan1. Perulangan While-do

while (kondisi) do ………..instruksi-instruksi……….

endwhile.

2. Perulangan Repeat-untilrepeat ..............

instruksi – instruksi ……….

until ( kondisi ).

Page 24: Analisis Algoritma dan Struktur  Data

Perulangan dengan for for ( var = awal to akhir step n )

.................... instruksi – instruksi …………… endfor.

Page 25: Analisis Algoritma dan Struktur  Data

Studi Kasus

1. Menjumlahkan DeretBuatlah sebuah algoritma untuk

menghitung jumlah deret dengan N buah suku sbb:

S = 1 – 1/2 + 1/4 - 1/6 + 1/8 - 1/10 + 1/12 - 1/14 + …

2. Buatlah sebuah algoritma yang mencari x dalam sebuah array dengan N bilangan yang telah ber-urut ascending, menurut teknik bagi-dua.

Page 26: Analisis Algoritma dan Struktur  Data

Algoritma Jumlah_Deret{ menjumlahkan deret bersuku N } Deklarasi

integer N, cacah, k;real S;

 Deskripsi

write ( “Berapa banyak suku ? “);read ( N );

 S 1;cacah 1;k 0;

while ( cacah < = N ) do

cacah cacah + 1;k k + 2;if ( cacah % 2 = 0 ) then S S – 1/k;

else S S + 1/k;endif.

endwhile.write ( “Jumlah deret = “, S);

Page 27: Analisis Algoritma dan Struktur  Data

Algoritma Binary_Search{ pencarian elemen dengan metoda bagi dua } Deklarasi

integer m=10;integer A[m], x;integer idx1, idx2, indeks;boolean ketemu;

 Deskripsi

idx1 1; { indeks ujung kiri}idx2 m; { indeks ujung kanan}ketemu false;while ( !ketemu && ( idx1 < idx2 ) ) do{ menghitung titik tengah }

indeks (idx1 + idx2) \ 2;if ( x = A[indeks] ) then ketemu true; else if ( x > A[indeks] ) then idx1 indeks + 1; { sisi kanan } else idx2 indeks – 1; { sisi kiri }endif.endif.endwhile.if ( ketemu ) then write ( “ x ketemu di posisi : “, indeks ); else write ( “ x tidak ditemukan “ );endif.