34
Tugas I Analisis Algoritma Nama Mahasiswa : •Cornelis FJ Latupapua (371986) •Dirja Nur Ilham (371893) •Ilham Sahputra (371984) Program Studi Magister Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada Yogyakarta

Tugas 1 Analisis Algoritma

Embed Size (px)

DESCRIPTION

tugas analisis algoritma

Citation preview

  • Tugas IAnalisis AlgoritmaNama Mahasiswa :Cornelis FJ Latupapua (371986)Dirja Nur Ilham (371893)Ilham Sahputra (371984)

    Program Studi Magister Ilmu KomputerFakultas Matematika dan Ilmu Pengetahuan AlamUniversitas Gadjah MadaYogyakarta

  • Algoritma Pengurutan (Sorting)Insertion Sort.Selection Sort.Bubble Sort.Shell Sort.Comb Sort.

  • Insertion SortInsertion Sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada posisinya dengan cara melakukan perbandingan dengan data-data yang ada.

    Algoritma dari metode insertion sort dapat dianalogikan sama seperti mengurutkan kartu, dimana suatu kartu jika dipindah tempatkan menurut posisinya, maka kartu yang lain akan bergeser mundur atau maju sesuai kondisi pemindahan kartu tersebut.

  • Insertion Sort

    Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.

  • Insertion SortLangkah demi langkah pengurutan dengan metode insertion sort adalah seperti contoh dibawah ini :

    1234567Data Awal67332184495075Tahap ke-167332184495075Tahap ke-233672184495075Tahap ke-321336784495075Tahap ke-421336784495075Tahap ke-521334967845075Tahap ke-621334950678475Tahap ke-721334950677584Data Akhir21334950677584

  • Pseudo code Insertion Sort

    for(int i=1; i

  • Kompleksitas Insertion SortAlgoritma insertion sort terdiri dari 2 kalang bersarang. Dimana terjadi N-1 Pass (dengan N adalah banyak elemen struktur data), dengan masing-masing Pass terjadi i kali operasi perbandingan. i tersebut bernilai 1 untuk Pass pertama, bernilai 2 untuk Pass kedua, begitu seterusnya hingga Pass ke N-1.

  • Kompleksitas Insertion SortGrafik kompleksitas insertion sort adalah seperti pada gambar dibawah ini :

  • Selection SortSelection Sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah perbandingan.

    Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu elemen data dari posisi awal hingga posisi N-1 untuk mencari data yang paling kecil dengan mencatat posisi index-nya, kemudian dilakukan pertukaran hanya sekali pada akhir setiap tahapan.

  • Selection SortContohnya diberikan data awal : 38 91 13 57 27 23 61, maka langkah per langkah penguruta data dengan metode selection sort adalah sebagai berikut :

    1234567Data Awal38911357272361Tahap ke-113913857272361Tahap ke-213233857279161Tahap ke-313232757389161Tahap ke-413232738579161Tahap ke-513232738579161Tahap ke-613232738576191

  • Selection SortAlgoritma selection sort seperti pada contoh data diatas adalah sebagai berikut :Inisialisasi n adalah ukuran data, pada contoh diatas terdapat n=7.Inisialisasi i = 1 sebagai awal proses (kotak merah).Inisialisasi j = i + 1Jika pada posisi j (kotak hitam) ditemukan data yang terkecil, bandingkan data tersebut dengan data i. Jika jterkecil < i maka ubah data jterkecil ke posisi i.i = i + 1j = i + 1

  • Selection SortJika j n dan i < n-1 ulangi ke langkah 3.Jika j = n dan i = n-1 maka proses selesai.

  • Pseudo code Selection Sortvoid selectionsort(int arr[ ]) { int i,j;for (i = 0; i < N; i++) { int min = arr[i]; int pos = i; for (j = i; j < N; j++) { /* Cari nilai yang terkecil */ if (arr[j] < min) { min = arr[j]; pos = j;} } /* Tukar nilai terkecil ke arr[i] jika pos tdk sama i */ if(i!=pos) { int temp = arr[i];arr[i] = arr[pos]; arr[pos] = temp; } } }

  • Kompleksitas Selection SortAlgoritma selection sort terdiri dari kalang bersarang. Dimana kalang tingkat pertama (disebut Pass) berlangsung N-1 kali. Didalam kalang kedua,dicari elemen dengan nilai terkecil. Jika didapat, indeks yang didapat ditimpakan ke variabel min selanjutnya dilakukan proses penukaran. Begitu seterusnya untuk setiap Pass. Pass sendiri makin berkurang hingga nilainya menjadi semakin kecil. Berdasarkan operasi perbandingan elemennya :

    Kompleksitas secara simptotik adalah O(n2).

  • Kompleksitas Selection SortGrafik kompleksitas selection sort adalah seperti pada gambar dibawah ini :

  • Bubble SortBubble Sort adalah salah satu algoritma pengurutan yang paling simple, baik dalam hal pengertian maupun penerapannya. Ide dari algoritma ini adalah mengulang proses pembandingan antara tiap-tiap elemen array dan menukarnya apabila urutannya salah. Pembandingan elemen-elemen ini akan terus diulang hingga tidak perlu dilakukan penukaran lagi. Algoritma ini termasuk dalam golongan algoritma comparison sort, karena menggunakan perbandingan dalam operasi antar elemennya. Berikut ini adalah gambaran dari algoritma bubble sort.

  • Bubble SortMisalkan kita mempunyai sebuah array dengan elemenelemen 4 2 5 3 9. Proses yang akan terjadi apabila digunakan algoritma bubblesort adalah sebagai berikut.Dapat dilihat pada proses di atas, sebenarnya pada pass kedua, langkah kedua, array telah terurut. Namun algoritma tetap dilanjutkan hingga pass kedua berakhir. Pass ketiga dilakukan karena definisi terurut dalam algoritma bubblesort adalah tidak ada satupun penukaran pada suatu pass, sehingga pass ketiga dibutuhkan untuk memverifikasi keurutan array tersebut.

  • Kompleksitas Bubble SortKompleksitas Algoritma Bubble Sort dapat dilihat dari beberapa jenis kasus, yaitu worst-case, average-case, dan best-case.Kondisi Best-CaseDalam kasus ini, data yang akan disorting telah terurut sebelumnya, sehingga proses perbandingan hanya dilakukan sebanyak (n-1) kali, dengan satu kali pass. Proses perbandingan dilakukan hanya untuk memverifikasi keurutan data. Contoh Best-Case dapat dilihat pada pengurutan data 1 2 3 4 di bawah ini.

  • Kompleksitas Bubble SortKondisi Worst-CaseDalam kasus ini, data terkecil berada pada ujung array. Contoh Worst-Case dapat dilihat pada pengurutan data 4 3 2 1 di bawah ini.

    Dari langkah pengurutan di atas, terlihat bahwa setiap kali melakukan satu pass, data terkecil akan bergeser ke arah awal sebanyak satu step. Dengan kata lain, untuk menggeser data terkecil dari urutan keempat menuju urutan pertama, dibutuhkan pass sebanyak tiga kali, ditambah satu kali pass untuk memverifikasi. Sehingga jumlah proses pada kondisi best case dapat dirumuskan sebagai berikut.

  • Kompleksitas Bubble SortKondisi Average-CasePada kondisi average-case, jumlah pass ditentukan dari elemen mana yang mengalami penggeseran ke kiri paling banyak. Hal ini dapat ditunjukkan oleh proses pengurutan suatu array, misalkan saja (1 8 6 2). Dari (1 8 6 2), dapat dilihat bahwa yang akan mengalami proses penggeseran paling banyak adalah elemen 2, yaitu sebanyak dua kali.

    Dari proses pengurutan di atas, dapat dilihat bahwa untuk mengurutkan diperlukan dua buah passing, ditambah satu buah passing untuk memverifikasi. Dengan kata lain, jumlah proses perbandingan dapat dihitung sebagai berikut.

  • Kelebihan & Kekurangan AlgoritmaBubble SortKelebihan Bubble SortAlgoritma yang simpel.Mudah untuk diubah menjadi kode.Definisi terurut terdapat dengan jelas dalam algoritma.Cocok untuk pengurutan data dengan elemen kecil telah terurut.Kekurangan Bubble SortTidak efektif dalam pengurutan data berskala besar.Langkah pengurutan yang terlalu panjang.

  • Shell SortShell Sort adalah algoritma dengan kompleksitas algoritma O(n2) dan yang paling efisien dibanding algoritma-algoritma lain dengan kompleksitas algoritma yang sama. Algoritma shell sort lima kali lebih cepat dibandingkan algoritma pengurutan gelembung dan dua kali lebih cepat dibandingkan algoritma pengurutan dengan penyisipan. Dan tentu saja shell sort juga merupakan algoritma yang paling kompleks dan sulit dipahami.Pada langkah pertama, ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen kedua dibandingkan dengan elemen lain dengan jarak yang sama. Demikian seterusnya sampai seluruh elemen dibandingkan.

  • Shell SortMisal terdapat elemen sebagai berikut : 23 45 12 24 56 34 27 23 16

  • Shell SortMisal terdapat elemen sebagai berikut : 23 45 12 24 56 34 27 23 16

  • Pseudo code Shell Sortvoid shellsort(int v[], int n){int gap, i, j, temp; for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++)for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) {temp = v[j];v[j] = v[j+gap];v[j+gap] = temp;}}

  • Kompleksitas Shell SortWorst case : O(n2)Best Case: O(N log2 N)Average Case: Bergantung pada jumlah gap

  • Comb SortComb Sort adalah algoritma sorting yang merupakan pengembangan dari buble sortGagasan utamanya adalah untuk menghilangkan nilai-nilai kecil yang berada didekat akhir dari list data, karena ini memperlambat proses penyortiran.Memiliki kesamaan dengan shell sort yang merupakan pengembangan dari insertion sortMenggunakan nilai gap dalam memilih dua elemen untuk dibandingkan dan diurutkanStephen Lacey dan Richard Box, yang mempopulerkan algoritma, menyarankan bahwa untuk setiap iterasi nilai gap harus dibagi dengan 1.3, agar memperoleh hasil yang optimal.

  • Comb SortContoh :Terdapat data awal sebagai berikut :

    Jumlah elemen data :10Dibagi dengan :1.3Hasil :7.65 dibulatkan menjadi 8

  • Comb SortContoh :Terdapat data awal sebagai berikut :

  • Comb Sort

  • Comb Sort

  • Pseudo code Shell Sort

  • Kompleksitas Shell SortWorst case : O(n2)Best Case: O(N)Average Case: (n2/ 2p)p = number of incremen