Algoritma dan Struktur Data

8
Tugas Algoritma dan Struktur Data Resume Pengantar Algoritma Di tulis oleh : H12113319 St. Aminah Rahmansyah Program Studi Statistika Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Hasanuddin Makassar 2014/2015

description

Resume Kuliah Algoritma dan Struktur Data

Transcript of Algoritma dan Struktur Data

  • Tugas

    Algoritma dan Struktur Data

    Resume Pengantar Algoritma

    Di tulis oleh :

    H12113319 St. Aminah Rahmansyah

    Program Studi Statistika

    Jurusan Matematika

    Fakultas Matematika dan Ilmu Pengetahuan Alam

    Universitas Hasanuddin

    Makassar

    2014/2015

  • Deklarasi

    Jika indeks length [A] and ada = false benar

    maka program akan berlanjut ke tahap

    selanjutnya (tahap ke-5), tapi apabila ada salah

    satu yang salah maka akan berlanjut ke tahap 8.

    Jika key telah di temukan (ada = True), maka pencarian

    terhenti dan akan berlanjut ke tahap 8. Apabila tidak di

    temukan program akan terus berjalan hingga unsur terakhir

    Akan menghentikan program

    Kembali ke awal program

    Deklarasi

    Untuk indeks dari 1 sampai panjang unsur

    Jika key di temukan (ada = True), maka pencarian terhenti

    dan akan berlanjut ke tahap 6.

    Selasa, 02/09/2014

    Pengantar algoritma

    Algoritma adalah prosedur komputasional yang terdefinisi dengan baik yang

    membutuhkan nilai sebagai input dan menghasilkan nilai sebagai output.

    Desain dan analisis algoritma

    Pseudocode yaitu kode untuk memudahkan pemahaman algoritma yang dapat

    ditransformasi kedalam berbagai bahasa pemrograman.

    Contoh masalah komputasional

    - Masalah pencarian data (searching problem)

    Merancang algoritma sederhana

    - Algoritma linear searching (naive)

    Pseudo-code Algoritma

    Linear-Search (A,Key)

    1. Indeks 1;

    2. Ada false;

    3. Mengecek key dalam A [1 ... length [A]]

    4. While indeks length [A] and ada = false

    5. If A[Indeks] = key

    6. Then ada = True;

    7. Indeks indeks + 1;

    8. If ada = false

    9. Then indeks length [A] + 1;

    10. Return indeks

    Implementasi Pseudo-code Lain

    Linear-Search 1 (A,Key)

    1. Ada false

    2. for indeks 1 to length [A]

    3. if A[indeks] = key

    4. then ada = True;

    5. break;

  • Akan menghentikan program

    Kembali ke awal program

    Untuk indeks dari 1 sampai panjang unsur

    Jika key di temukan, maka pencarian terhenti.

    Jika indeks besar dari panjang unsur,maka

    indeks tertentu = key

    Kembali ke awal program

    Untuk indeks dari 2 sampai panjang unsur

    Key = unsur ke-j (tentukan key)

    i = j -1

    Jika i > 0 A[i] > key benar, maka akan ke-tahap selanjutnya (tahap 6).

    Unsur [ i + 1 ] = Unsur i

    Unsur [ i + 1 ] = key

    Jadi i = i - 1

    6. if ada = false

    7. then A[Indeks] key;

    8. Return indeks

    Linear-Search 2(A,Key)

    1. for indeks 1 to length [A]

    2. if A[Indeks] = key

    3. then break;

    4. if indeks > length[A]

    5. then A[indeks] key;

    6. return indeks

    Loop Invariant and Correctness

    Inisialisasi (initialization)

    Pemeliharaan (maintenance)

    Penghentian (termination)

    Contoh masalah lain :

    - Masalah pengurutan data (sorting problem)

    Algoritma Insertion-Sort

    Insertion-Sort (A)

    0 perulangan untuk patokan

    1 for j 2 to length [A]

    2 key A[j]

    3 sisip A[j] kedalam barisan terurut A[1 ... j 1]

    4 i j 1

    5 while ( i > 0 A[i] > key)

    6 A [ i + 1 ] A [i]

    7 i i 1

    8 A [ i + 1 ] key

  • Selasa, 09/09/2014

    Pengantar Algoritma

    Cost Times

    1 for j 2 to lenght (A) C1 n

    2 key A[j] C2 n-1

    3 sisipkan Aj kedalam barisan terurut A[1...j-1] 0 n-1

    4 i j-1 C4 n-1

    5 While (i>0 A[i] > key) C5

    =2

    6 A[i+1] A[i] C6 (

    =2 1)

    7 i i-1 C7 ( 1)

    =2

    8 A[i+1] key C8 n-1

    Waktu komputasi tidak hanya tergantung pada jumlah data, tetapi juga tergantung pada

    bagaimana barisan terurut.

    Kasus terbaik

    () = 1

    =2

    + 2 + 3 = (1 + 2) + (3 1)

    Laju waktu komputasi dalam fungsi linear.

    Kasus terburuk

    () = 1

    =2

    + 2 + 3 =12

    2 + (1

    21 + 2) + (3 1)

    Laju waktu komputasi dalam fungsi kuadratik.

    Ingat =2 =(+1)

    2 1

  • Perancangan Algoritma dan Stuktur Data

    Pencarian Biseksi (Bagi dua)

    BISECTION-SEARCH (A,key) Cost Times

    1 ada false C1 1

    2 for i 1 to [lenght [A]/2] C2 1

    2n+1

    3 if A[i] = key then C3 1

    2n

    4 posisi i C4

    2

    =1

    5 ada true C5

    2

    =1

    6 if A[n-i+1] = key then C6 1

    2n

    7 posisi n-i+1 C7

    2

    =1

    8 ada true C8

    2

    =1

    9 If not(ada) then C9 1

    10 posisi length[A]+1 C10 S

    11 A[posisi] data C11 S

    () =3

    2 + 2

    2

    =1

    + 2

    2

    =1

    + (2 + 3)

    Simulasi A= (26,28,28,23)

    1. ada = F

    2. for i = 1

    2.1 if (A[1] = key) F

    2.2 if (A[4] = key) F

    3. for i = 2

    3.1 if (A[2] = key) T

    3.1.1 posisi = 2

    3.1.2 ada = True

  • 3.2 if (A[3] = key) T

    3.2.1 posisi = 3

    3.2.2 ada = True

    4. for i=3 (False)

    5. if not(ada) = 3

    Binary Search Tree (BST)

    Struktur Data : Prosedur penyimpanan data dalam bentuk tertentu sedemikian

    sehingga operasi dasar pada algoritma menjadi lebih efisien atau optimal.

    Binary search tree (BST) : struktur data yang memenuhi sifat :

    o Left (i) root (i)

    o Right (i) > root (i)

    Posisi

  • Selasa, 16/09/2014

    Kompleksitas Algoritma

    Kompleksitas Algoritma : Perubahan laju pertumbuhan input terhadap perubahan/

    penambahan output. (Masalah pencarian : Laju pertumbuhan running time T(n) terhadap

    penambahan jumlah data n).

    Batas Atas (Upper Bound)

    O(g(n)) = {f(n) : Terdapat konstanta c dan no sedemikian sehingga 0f(n)cg(n),

    }

    O(g(n)) (baca : big-oh g(n))

    Menyatakan batas atas dari laju kompleksitas sebuah algoritma. Kasus

    terburuk!

    Batas Bawah

    (g(n)) = {f(n):Terdapat konstanta c dan no sedemikian sehingga 0cg(n)f(n),

    }

    Cg(n)

    f(n) f(n)=O(g(n))

    Cg(n)

    f(n)

    f(n)=(g(n))

  • (g(n)) (baca : big-omega g(n))

    Menyatakan batas bawah dari laju kompleksitas sebuah algoritma. Kasus

    terbaik!

    Contoh notasi :

    n2 = O(n2) dan juga n2 = O(n3)

    2n2+3n+1=2n2+O(n)

    n2 = O(n2) dan juga n2 = (n2), maka n2 = (n2)

    Pemanfaatan Notasi untuk Algoritma

    - Kompleksitas Insertion-Sort : O(n2), (n)

    - Kompleksitas Linear-Search dan Bisection-Search : (n) karena O(n)=(n)

    - Algoritma BST-Search : (Log n)

    Cepat Lebih Lama