Tugas DAA (Kelas C) by Anom Harya (0910680005)

Soal :

  1. Apa yang disebut dengan algoritma?
  2. Apa yang disebut dengan pseudocode? Jelaskan cara dan aturan penulisannya!
  3. Sebutkan beberapa algoritma sorting dan searching. Berikan masing-masing 1 penjabaran pseudocode-nya!

Jawaban:

  1. Algoritma adalah kumpulan perintah untuk menyelesaikan suatu masalah. (sumber)

Algoritma adalah urutan-urutan dari instruksi atau langkah-langkah untuk menyelesaikan suatu masalah. (sumber)

  1. Pseudocode adalah deskripsi dari algoritma pemrograman komputer yang menggunakan struktur sederhana dari beberapa bahasa pemrograman tetapi bahasa tersebut hanya ditujukan agar dapat dibaca manusia.

Aturan penulisan pseudocode tidaklah baku. Dalam pseudocode tidak ada syntax standar yang resmi. Karena itu, pseudocode ini dapat kita terapkan dalam berbagai bahasa. (sumber)

  1. Algoritma searching :
  1. Pencarian Berurutan (Sequential Searching)

Pencarian berurutan (pencarian linear) merupakan metode pencarian yang paling sederhana.  Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.

Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data.  Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.  Apabila sama, berarti data telah ditemukan.   Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak ada.  Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula.

Algoritma pencarian berurutan dapat dituliskan sebagai berikut :

  1. i ← 0
  2. ketemu ← false
  3. Selama (tidak ketemu) dan (i <= N) kerjakan baris 4
  4. Jika (Data[i] = x) maka ketemu ← true, jika tidak i ← i + 1
  5. Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan
  6. Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian sekuensial.
  1. Pencarian Biner (Binary Search)

Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus.

Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.  Kemudian data yang dicari dibandingkan dengan data tengah.  Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.  Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.  Demikian seterusnya sampai data tengah sama dengan yang dicari.

Algoritma pencarian biner dapat dituliskan sebagai berikut :

  1. L  ← 0
  2. R ← N - 1
  3. ketemu ← false
  4. Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8    
  5. m ← (L + R) / 2 83
  6. Jika (Data[m] = x) maka ketemu ← true
  7. Jika (x < Data[m]) maka R ← m – 1
  8. Jika (x > Data[m]) maka L  ← m + 1
  9. Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan.

(sumber)

Algoritma sorting :

Algoritma sorting terdiri dari beberapa algoritma, seperti Bubble sort, Quick sort, Selection sort, Insertion sort, dan Merge sort. Setiap algoritma tersebut memiliki perbedaan satu sama lain. Berikut merupakan pembahasan umum mengenai jenis-jenis algoritma sorting.

  1. Bubble Sort

Bubble sort merupakan cara pengurutan yang sederhana. Konsep dari ide dasarnya adalah seperti gelembung air untuk elemen struktur data yang semestinya berada pada posisi awal. Cara kerjanya adalah dengan berulang-ulang melakukan tranversal (looping) terhadap elemen-elemen struktur data yang belum diurutkan. Di dalam tranversal tersebut, nilai dari dua elemen struktur data dibandingkan. Jika ternyata urutannya tidak sesuai dengan pesanan, maka dilakukan pertukaran. Algoritma sorting ini disebut juga dengan comparison sort dikarenakan hanya mengandalkan perbandingan elemen untuk mengoperasikannya.

Algoritma bubble sort

Algoritma bubble sort dapat diringkas sebagai berikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1, TN, maka

  1. Lakukan tranversal untuk membandingkan dua elemen berdekatan. Tranversal ini dilakukan dari belakang.
  2. Jika elemen pada TN-1 > TN, maka lakukan pertukaran. Jika tidak, lanjutkan ke proses tranversal berikutnya sampai bertemu dengan bagian struktur data yang telah diurutkan.
  3. Ulangi langkah di atas untuk struktur data yang tersisa.

  1. Selection Sort

Algoritma sorting sederhana yang lain adalah selection sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending, elemen yang paling kecil diantara elemen-elemen yang belum urut disimpan indeksnya. Kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending, elemen yang paling besar disimpan indeksnya kemudian ditukar.

Algoritma Selection Sort

Algoritma selection sort dapat dirangkum sebagai berikut:

  1. Temukan nilai yang paling kecil (atau sesuai keinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling kecil. Jika descending, maka temukan nilai yang paling maksimum.
  2. Tukar nilai tersebut dengan nilai pada posisi pertama di bagian struktur data yang belum diurutkan.
  3. Ulangi langkah di atas untuk bagian struktur data yang tersisa.

  1. Insertion Sort

Cara kerja insertion sort sebagaimana namanya, awalnya dilakukan iterasi; dimana di setiap iterasi insertion sort memindahkan nilai elemen, kemudian menyisipkannya berulang-ulang sampai ke tempat yang tepat. Begitu seterusnya dilakukan. Dari proses iterasi, terbentuklah bagian yang telah di-sorting dan bagian yang belum di-sorting.

Algortima Insertion Sort

Algoritma Insertion Sort dapat dirangkum sebagai berikut:

  1. Simpan nilai Ti ke dalam variable sementara, dengan i=1.
  2. Bandingkan nilainya dengan elemen sebelumnya.
  3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement I (kurangi nilainya dengan 1).
  4. Lakukan terus poin ketiga sampai Ti-1 <= Ti.
  5. Jika Ti-1 <= Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya.
  6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu)

  1. Merge Sort

Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigm algoritma divide and conquer (bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian dioperasikan satu per satu. Intinya, algoritma ini menggunakan 2 ide utama, sebagai berikut:

  1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan daripada sebuah list yang besar.
  2. Untuk membentuk sebuah list terurut dari dua buah list terurut, dibutuhkan langkah yang lebih sedikit daripada membentuk sebuah list terurut dari dua buah list tak terurut.

Algoritma Merge Sort

Algoritma Merge Sort sederhananya dapat ditulis sebagai berikut:

  1. Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih panjang satu elemen.
  2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1.
  3. Gabung 2 sublist kembali menjadi satu list terurut.

  1. Quick Sort

Quick sort adalah algoritma sorting yang terkenal. Algoritma ini dirancang oleh C. A. R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur computer saintifik kecil, Eliot Brothers. Algoritma ini rekursif, dan termasuk paradigm algoritma divide and conquer.

Algoritma Quick Sort

Algoritma ini terdiri dari 4 langkah utama :

  1. Jika struktur data terdiri dari 1 atau 0 elemen yang harus diurutkan, kembalikan struktur data itu apa adanya.
  2. Ambil sebuah elemen yang akan digunakan sebagai pivot point (poin poros).
  3. Bagi struktur data menjadi 2 bagian – satu dengan elemen yang lebih besar daripada pivot poin, dan yang lainnya dengan elemen yang lebih kecil daripada pivot point.
  4. Ulangi algoritma secara rekursif terhadap kedua paruh struktur data.