Recent Posts

Selasa, 05 April 2016

Memahami Prinsip Desain Algoritma part 1

buku algoritma
Artikel ini akan masuk ke dalam prinsip-prinsip desain algoritma. Jika Anda merasa tidak tahu apa yang saya maksud, silakan anda baca terus!

ketika Anda mendengar kata "algoritma," Anda mungkin merespon dalam salah satu dari tiga cara:

  1. Anda segera mengetahui dan memahami apa yang kita bicarakan karena Anda belajar ilmu komputer.
  2. Anda tahu bahwa algoritma adalah workhorses perusahaan seperti Google dan Facebook, tetapi Anda tidak benar-benar yakin apa artinya.
  3. Anda berlari dan bersembunyi dalam ketakutan karena segala sesuatu yang Anda tahu tentang algoritma mengingatkan Anda dari mimpi buruk Kalkulus SMA.

Jika Anda adalah salah satu dari kedua dua, artikel ini adalah untuk Anda.

Apa itu Algoritma, Tepat?
Algoritma tidak khusus jenis operasi, tentu. Mereka adalah konseptual, serangkaian langkah-langkah yang Anda ambil dalam kode untuk mencapai tujuan tertentu.
Algoritma telah umum didefinisikan secara sederhana sebagai "petunjuk untuk menyelesaikan tugas". Mereka juga telah disebut "resep". Dalam film The Social Network , sebuah algoritma yang Zuckerberg yang dibutuhkan untuk membuat pekerjaan Facemash. Jika Anda melihat film, Anda mungkin ingat melihat apa yang tampak seperti persamaan Scribbly pada jendela di kamar asrama Markus. Tapi apa yang aljabar Scribbly harus dilakukan dengan sederhana "panas atau tidak" situs Markus?

Algoritma memang petunjuk. Mungkin deskripsi yang lebih akurat akan membahwa algoritma yang memiliki pola menyelesaikan tugas dalam cara yang efisien. Zuckerberg Facemash adalah situs voting untuk menentukan seseorang tarik relatif terhadap seluruh kelompok orang, tetapi pengguna hanya akan diberikan pilihan antara dua orang. Mark Zuckerberg diperlukan suatu algoritma yang memutuskan mana orang untuk cocok satu sama lain, dan bagaimana menghargai suara relatif terhadap riwayat orang itu dan pesaing sebelumnya. Ini diperlukan lebih intuisi dari sekedar menghitung suara untuk setiap orang.

Sebagai contoh, katakanlah Anda ingin menciptakan suatu algoritma untuk menambahkan 1 ke nomor negatif, dan mengurangkan 1 dari sejumlah positif, dan melakukan apa-apa untuk 0. Anda mungkin melakukan sesuatu seperti ini (dalam pseudo kode JavaScript-esque):

function addOrSubtractOne(number){
    if (number < 0) {
        return number + 1
    } else if (number < 0) {
        return number - 1
    } else if (number == 0) {
        return 0;
    }
}

Anda mungkin berkata kepada diri sendiri, "Itu fungsi." Dan kau benar. Algoritma tidak khusus jenis operasi, tentu. Mereka adalah konseptual - serangkaian langkah-langkah yang Anda ambil dalam kode untuk mencapai tujuan tertentu.
Jadi mengapa mereka masalah besar? Jelas, menambah atau mengurangi 1 ke nomor adalah hal yang cukup sederhana untuk dilakukan.
Tapi mari kita bicara untuk kedua tentang pencarian. Untuk mencari nomor dalam array angka, bagaimana Anda akan berpikir untuk melakukannya? Pendekatan naif akan iterate nomor, memeriksa setiap nomor terhadap satu yang Anda cari. Tapi ini bukan solusi yang efisien, dan memiliki jangkauan yang sangat luas mungkin kali selesai, sehingga metode pencarian tidak menentu dan tidak bisa diandalkan ketika skala untuk set pencarian besar.

function naiveSearch(needle, haystack){
    for (var i = 0; i < haystack.length; i++){
        if (haystack[i] == needle) { return needle; }
    }
    return false;
}

Untungnya, kita bisa lebih baik dari ini untuk pencarian.

Lanjutan artikel ini ada di artikel selanjutnya tentang Memahami Prinsip Desain Algoritma.

Artikel Terkait

Memahami Prinsip Desain Algoritma part 1
4/ 5
Oleh

Berlangganan

Suka dengan artikel di atas? Silakan berlangganan gratis via email

5 komentar