1 / 27

Analisis Algoritma dan Struktur Data

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.

ciel
Download Presentation

Analisis Algoritma dan Struktur Data

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AnalisisAlgoritmadanStruktur Data Suarga

  2. RencanaTopikBahasan • Review AlgoritmaDasar • Review Struktur Data • FondasiMatematis • AnalisisAlgoritma • Algoritma Greedy • Divide and Conquer • Dynamic Programming • HeapSort + QuickSort • Counting Sort + Radix Sort

  3. RencanaTopikBahasan 10 .Median and Order Statistcs 11 .Binary Search Tree 12. B-Trees 13. Algoritma Graf 14. AlgoritmaDijkstradan Bellman-Ford

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

  5. Review AlgoritmaDasar

  6. Pendahuluan • KataAlgoritmaAlgorithm  Algorism  Al Kwarizmi  Abu Ja’far Muhammad Ibnu Musa Al-Kwarizmi : memakaiprinsipalgoritmadalampenyelesaianaljabar (AljabarwalMuqabala). • Algoritma : teknikpenyusunanlangkahpenyelesaianmasalahdalambentukkalimatsingkatdenganjumlahkataterbatas, namuntersusunsecaralogisdansistematis

  7. CiriAlgoritma • DonalE.Knuthmenyatakan: • Algoritmamempunyaiawaldanakhir, jadimemilikilangkah yang jumlahnyaterbatas • Setiaplangkahharusdidefinisikandengantepatsehinggatidakmemilikiartiganda • Memilikikondisiawal, ataunilaimasukan • Memilikikondisiakhirataunilaikeluaran • Effektif, bilalangkahnyadi-ikutimakapersoalanharusmemilikipenyelesaian

  8. StrukturAlgoritma • Header: yang memuatnamaalgoritmasertaketerangansingkattentangkondisiawal, kondisiakhir, atautujuanalgoritma • Deklarasi /Definisi Variable: memuatdefinisidarisemuavariabel yang akandigunakandalamalgoritma • Deskripsi / RincianLangkah: susunanlogisdansistematisdarilangkahpenyelesaianmasalah

  9. 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;

  10. While (k <= N) do • Read(x); • Jumlah jumlah + x; • k  k + 1; • endWhile; • Rata  jumlah/N; • Write(Rata);

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

  12. 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; >

  13. 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;

  14. Pemberiannilaipadavariabel • Pemberiannilaidengancara assignment mempunyaibentukumumsebagaiberikut: • Variable nilai; • Variable1  variable2; • Variable ekspressi; • Pemberiannilaidengancarapembacaandapatdilakukanmelaluiinstruksipembacaandenganbentukumumsbb: • read(variable);atau • read( variable1, variable2, … );

  15. Menampilkannilaivariabel • Agar hasilpelaksanaanalgoritmadapatdikomunikasikanatauditayangkanmakanilai variable yang telahdiprosesdalamalgoritmadapatditampilkan. • Instruksiuntukmenampilkannilai variable adalah: write(variable, … ); • Contohpenampilannilaiadalahsbb: • write(“namaanda : “, Nama); • write(“nilaiujian = “, nilai); • write(“Jumlah variable = “, X + Y + Z);

  16. Operator • Operator aritmetika : operator untukmelakukanfungsiaritmetikaseperti: + (menjumlah), - (mengurangkan), * (mengalikan), / (membagi), %(sisa). • Operator relational : operator untukmenyatakanrelasiatauperbandinganantaradua operand, seperti : > (lebihbesar), < (lebihkecil), >= (lebihbesaratausama), <= (lebihkecilatausama), == (sama), != (tidaksama) atau > <, < >.

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

  18. InstruksiUtama • Instruksi Sequential : • tiapinstruksidikerjakansekalisatu per-satu • urutanpelaksanaaninstruksisamadenganurutanpenulisanalgoritma • instruksiterakhirmerupakanakhirdarialgoritma • urutanpenulisaninstruksibisamenjadipenting, biladiubahdapatmenyebabkanhasil yang berbeda.

  19. Instruksi Selection (pemilihanalternatif) • Instruksipemilihanadalahinstruksi yang dipakaiuntukmemilihsatuaksidaribeberapakemungkinanaksiberdasarkansuatupersyaratan. Adaduabentukinstruksipemilihan yang seringdigunakanyaitu: • Instruksi if / then / else • Instruksi case

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

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

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

  23. InstruksiPerulangan • Perulangan While-do while (kondisi) do ……….. instruksi-instruksi ………. endwhile. • Perulangan Repeat-until repeat .............. instruksi – instruksi ………. until ( kondisi).

  24. Perulangandengan for for ( var = awalto akhirstep n ) .................... instruksi – instruksi …………… endfor.

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

  26. 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 cacahcacah + 1; k  k + 2; if ( cacah % 2 = 0 ) then S  S – 1/k; else S  S + 1/k; endif. endwhile. write ( “Jumlahderet = “, S);

  27. AlgoritmaBinary_Search { pencarianelemendenganmetodabagidua} Deklarasi integer m=10; integer A[m], x; integer idx1, idx2, indeks; booleanketemu; Deskripsi idx1  1; { indeksujungkiri} idx2  m; { indeksujungkanan} ketemufalse; while ( !ketemu&& ( idx1 < idx2 ) ) do { menghitungtitiktengah } indeks (idx1 + idx2) \ 2; if ( x = A[indeks] ) then ketemutrue; 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.

More Related