280 likes | 558 Views
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.
E N D
RencanaTopikBahasan • Review AlgoritmaDasar • Review Struktur Data • FondasiMatematis • AnalisisAlgoritma • Algoritma Greedy • Divide and Conquer • Dynamic Programming • HeapSort + QuickSort • Counting Sort + Radix Sort
RencanaTopikBahasan 10 .Median and Order Statistcs 11 .Binary Search Tree 12. B-Trees 13. Algoritma Graf 14. AlgoritmaDijkstradan Bellman-Ford
References 1. References: • Aho, Hopcroft, and Ullman, “The Design and Analysis of Computer Algorithm”, Addison Wesley • Sedgewick and Flajolet, “Analysis of Algorithm”, Addison Wesley • Cormen, Leiserson, and Rivest, “Introduction to Algorithms”, McGraw Hill , MIT Press • Suarga, “AlgoritmaPemrograman”, Andi Offset
Pendahuluan • KataAlgoritmaAlgorithm Algorism Al Kwarizmi Abu Ja’far Muhammad Ibnu Musa Al-Kwarizmi : memakaiprinsipalgoritmadalampenyelesaianaljabar (AljabarwalMuqabala). • Algoritma : teknikpenyusunanlangkahpenyelesaianmasalahdalambentukkalimatsingkatdenganjumlahkataterbatas, namuntersusunsecaralogisdansistematis
CiriAlgoritma • DonalE.Knuthmenyatakan: • Algoritmamempunyaiawaldanakhir, jadimemilikilangkah yang jumlahnyaterbatas • Setiaplangkahharusdidefinisikandengantepatsehinggatidakmemilikiartiganda • Memilikikondisiawal, ataunilaimasukan • Memilikikondisiakhirataunilaikeluaran • Effektif, bilalangkahnyadi-ikutimakapersoalanharusmemilikipenyelesaian
StrukturAlgoritma • Header: yang memuatnamaalgoritmasertaketerangansingkattentangkondisiawal, kondisiakhir, atautujuanalgoritma • Deklarasi /Definisi Variable: memuatdefinisidarisemuavariabel yang akandigunakandalamalgoritma • Deskripsi / RincianLangkah: susunanlogisdansistematisdarilangkahpenyelesaianmasalah
Contoh AlgoritmaNilai-Rata { menghitungnilai rata dari n buah data } Deklarasi integer N, k; real x, jumlah, rata; Deskripsi Read(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 danVariabel • Adaduakategoridaritipe data, yaitu: tipedasardantipebentukan. • Tipedasar : adalahtipe data yang selalutersediapadasetiapbahasapemrograman, antara lain: bilanganbulat (integer), bilanganbiasa (real), bilangantetap (const), karakter (character atauchar), logik (logicatauboolean). • Tipebentukan :adalahtipe data yang dibentukdarikombinasitipedasar, antara lain: larik(array), rekaman (record), string (string).
Array : Kumpulan elemensejenis • 1-dimensi: integer nilai[20]; • 2-dimensi: real matriks[5][10]; • 3-dimensi: real tensor[3][5][10]; • String: array darikarakter • String nama, alamat; • Record: Kumpulan elementdksejenis • Type DataMhs : record • < NomerMhs : integer, Nama : String, Alamat: String, Umur : integer Jkel : char; >
Variable adalahnama yang mewakilisuatuelemen data seperti: jenkeluntukjeniskelamin, t4lahir untuktempatlahir, alamatuntukalamat, dsb. • Adaaturantertentu yang wajibdiikutidalampemberiannama variable antara lain: • Harusdimulaidenganabjad, tidakbolehdenganangkaatausimbol • Tidakbolehadaspasidiantaranya • Janganmenggunakansimbol-simbol yang bisamembingungkansepertititikdua, titikkoma, koma, dsb. • Sebaiknyamemilikiarti yang sesuaidenganelemen data • Sebaiknyatidakterlalupanjang • Contoh variable yang benar : Nama, Alamat, Nilai_Ujian • Contoh variable yang salah : 4XYZ, IP rata, Var:+xy,458;
Pemberiannilaipadavariabel • Pemberiannilaidengancara assignment mempunyaibentukumumsebagaiberikut: • Variable nilai; • Variable1 variable2; • Variable ekspressi; • Pemberiannilaidengancarapembacaandapatdilakukanmelaluiinstruksipembacaandenganbentukumumsbb: • read(variable);atau • read( variable1, variable2, … );
Menampilkannilaivariabel • Agar hasilpelaksanaanalgoritmadapatdikomunikasikanatauditayangkanmakanilai variable yang telahdiprosesdalamalgoritmadapatditampilkan. • Instruksiuntukmenampilkannilai variable adalah: write(variable, … ); • Contohpenampilannilaiadalahsbb: • write(“namaanda : “, Nama); • write(“nilaiujian = “, nilai); • write(“Jumlah variable = “, X + Y + Z);
Operator • Operator aritmetika : operator untukmelakukanfungsiaritmetikaseperti: + (menjumlah), - (mengurangkan), * (mengalikan), / (membagi), %(sisa). • Operator relational : operator untukmenyatakanrelasiatauperbandinganantaradua operand, seperti : > (lebihbesar), < (lebihkecil), >= (lebihbesaratausama), <= (lebihkecilatausama), == (sama), != (tidaksama) atau > <, < >.
Operator logik : operator untukmerelasikan operand secaralogis, seperti&& (and), || (or), dan! (not). • Operator string : operator untukmemanipulasi string, seperti : + (concatenation), len(panjang string), dansubstr (substring, mencuplik). • Fungsi : berbagaifungsimatematisseperti: floor(), ceil(), log(), sin(), cos(), tan(), sqrt(), dsb
InstruksiUtama • Instruksi Sequential : • tiapinstruksidikerjakansekalisatu per-satu • urutanpelaksanaaninstruksisamadenganurutanpenulisanalgoritma • instruksiterakhirmerupakanakhirdarialgoritma • urutanpenulisaninstruksibisamenjadipenting, biladiubahdapatmenyebabkanhasil yang berbeda.
Instruksi Selection (pemilihanalternatif) • Instruksipemilihanadalahinstruksi yang dipakaiuntukmemilihsatuaksidaribeberapakemungkinanaksiberdasarkansuatupersyaratan. Adaduabentukinstruksipemilihan yang seringdigunakanyaitu: • Instruksi if / then / else • Instruksi case
bentuk 1 kasus: if (syarat) if ( x > 100) then aksi then x x + 1; endifendif bentuk 2 kasus: if ( syarat) if ( x > 0) then aksi-1 then Write(‘ X positif”); else aksi-2 else Write(“X negatif”); endif. endif
Bentukbersusun (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-3 endif. endif
Bentukinstruksi case : case ( variable ) nilai-1 : aksi-1; nilai-2 : aksi-2; nilai-3 : aksi-3; ……….. default : aksi-n; endcase.
InstruksiPerulangan • Perulangan While-do while (kondisi) do ……….. instruksi-instruksi ………. endwhile. • Perulangan Repeat-until repeat .............. instruksi – instruksi ………. until ( kondisi).
Perulangandengan for for ( var = awalto akhirstep n ) .................... instruksi – instruksi …………… endfor.
StudiKasus • MenjumlahkanDeret Buatlahsebuahalgoritmauntukmenghitungjumlahderetdengan N buahsukusbb: S = 1 – 1/2 + 1/4 - 1/6 + 1/8 - 1/10 + 1/12 - 1/14 + … 2. Buatlahsebuahalgoritma yang mencari x dalamsebuah array dengan N bilangan yang telahber-urut ascending, menurutteknikbagi-dua.
AlgoritmaJumlah_Deret { menjumlahkanderetbersuku N } Deklarasi integer N, cacah, k; real S; Deskripsi write ( “Berapabanyaksuku ? “); read ( N ); S 1; cacah 1; k 0; while ( cacah < = N ) do cacahcacah + 1; k k + 2; if ( cacah % 2 = 0 ) then S S – 1/k; else S S + 1/k; endif. endwhile. write ( “Jumlahderet = “, S);
AlgoritmaBinary_Search { pencarianelemendenganmetodabagidua} Deklarasi integer m=10; integer A[m], x; integer idx1, idx2, indeks; booleanketemu; Deskripsi idx1 1; { indeksujungkiri} idx2 m; { indeksujungkanan} ketemufalse; while ( !ketemu&& ( idx1 < idx2 ) ) do { menghitungtitiktengah } indeks (idx1 + idx2) \ 2; if ( x = A[indeks] ) then ketemutrue; else if ( x > A[indeks] ) then idx1 indeks + 1; { sisikanan } else idx2 indeks – 1;{ sisikiri } endif. endif. endwhile. if ( ketemu) then write ( “ x ketemudiposisi : “, indeks); else write ( “ x tidakditemukan “ ); endif.