Analisis Algoritma dan Struktur Data

Preview:

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

Citation preview

ANALISIS ALGORITMA DAN STRUKTUR DATA

Suarga

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

Rencana Topik Bahasan

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

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

REVIEW ALGORITMA DASAR

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

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

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

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;

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

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

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).

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;

>

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;

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, … );

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);

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 > <, < >.

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

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.

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

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

      

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

Bentuk instruksi case :

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

endcase.

Instruksi Perulangan1. Perulangan While-do

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

endwhile.

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

instruksi – instruksi ……….

until ( kondisi ).

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

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

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.

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);

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.

Recommended