Dalam matematika, ilmu komputer, dan doktrin terkait lainnya, algoritme didefinisikan sebagai seperangkat aturan yang mapan dan tidak ambigu, ditemukan secara metodis dan dalam cara terbatas yang memungkinkan dilakukannya komputasi, memproses informasi tertentu, memberikan solusi untuk masalah, dan melakukan berbagai aktivitas.. Setelah Anda memulai dari status awal dan entri, mengikuti prosedur yang diperlukan, status akhir tercapai dan hasil diperoleh. Algoritma adalah objek penyelidikan algoritme dan meskipun banyak yang mungkin tidak mempercayainya, algoritme juga dapat digunakan dalam semua aspek kehidupan sehari-hari.
Apa itu algoritma
Daftar Isi
Dalam komputasi biasanya diartikan sebagai rangkaian instruksi yang berurutan, dimana beberapa proses dilakukan untuk memberikan jawaban atas keputusan atau kebutuhan tertentu. Dengan cara yang sama, algoritma sering digunakan dalam logika dan matematika, serta menjadi dasar untuk pengembangan manual pengguna, pamflet ilustrasi, dan lain-lain. Salah satu yang paling terkenal dalam matematika adalah yang dikaitkan dengan geometris Euclides, untuk mencapai pembagi persekutuan terbesar dari dua bilangan bulat yang positif dan terkenal "metode Gaussian" untuk menentukan sistem persamaan linier.
Dalam kaitannya dengan ilmu komputer, perhitungan ini dapat disebut sebagai urutan pedoman yang harus diikuti dalam penentuan suatu masalah melalui penggunaan komputer.
Oleh karena itu, algoritme dipahami sebagai disiplin ilmu yang berfokus pada analisis dan desain algoritme. Dalam pertimbangan yang pertama, ia berusaha untuk memeriksa properti seperti ketepatan dan keefektifannya berkenaan dengan waktu dan ruang, untuk memahami masalah yang dapat diselesaikan secara algoritme. Adapun yang kedua, ia berusaha mempelajari paradigma yang telah ditetapkan dan mengajukan contoh-contoh baru.
Algoritme terletak di tengah kemajuan komputasi dan penting di berbagai bidang. Dengan cara ini, tidak mungkin layanan sesukses Facebook dan Google menangani besarnya informasi yang mereka miliki tanpa kolaborasi algoritme atau struktur data khusus. Namun, dalam algoritma kehidupan sehari-hari juga digunakan, contohnya adalah penyalaan kompor, karena dimulai pada saat orang tersebut pergi ke dapur, mengamatinya dan berakhir, ketika mulai menyalakannya.
Karakteristik suatu algoritma
Terlepas dari kenyataan bahwa algoritme dikenal sebagai kumpulan terbatas dan teratur dari berbagai langkah yang mengarah pada penyelesaian masalah, dikatakan bahwa sifat kesulitan ini bervariasi sesuai dengan konteks di mana mereka ditemukan, dengan cara ini, ada masalah kimia, matematika, filosofis, antara lain. Dengan demikian dapat dikatakan sifatnya yang variatif dan tidak perlu dijalankan oleh komputer. Di luar semua yang dijelaskan sebelumnya, algoritme memiliki karakteristik yang mendasar untuk menentukan seperti apa mereka saat ini dan akan disebutkan di bawah.
- Panduan yang terkandung dalam algoritme harus spesifik untuk menghindari meninggalkan ruang untuk segala jenis kebingungan, ini berarti bahwa instruksi yang sesuai harus diikuti dengan tepat atau, sebaliknya, representasi grafik dari aliran yang Anda daftarkan tidak akan memfasilitasi solusi. benar.
- Itu harus dalam definisi yang sempurna, mencoba sebanyak mungkin untuk mengikutinya sebanyak yang diperlukan, untuk mendapatkan hasil yang sama dan jika terjadi sebaliknya, algoritme tidak akan dapat diandalkan dan tidak akan berfungsi sebagai panduan saat membuat keputusan.
- Mereka dikenal karena kekhususannya yang terbatas, biasanya berakhir di beberapa titik dan kemudian menghasilkan hasil di akhir setiap langkah. Jika algoritme meluas tanpa batas, kembali ke beberapa titik awal yang tidak pernah bisa diselesaikan, ada kehadiran paradoks atau "putaran" pengulangan yang terkenal.
- Akhirnya, dikatakan bahwa pembacaan algoritma adalah elemen kunci, karena jika argumennya tidak dapat dipahami, instruksi yang sesuai tidak dapat diikuti, selain itu, itu memerlukan kata-kata teks yang langsung, jelas dan singkat yang ditemukan di masing-masing.
Bagian dari algoritme
Setiap operasi algoritmik memiliki tiga bagian berbeda yang tunduk pada struktur dasar sistem dan ini adalah:
- Input: juga disebut tajuk atau titik awal, ini adalah instruksi awal yang mewakili asal-usul algoritma dan yang memotivasi pembacaannya.
- Proses: juga disebut deklarasi, ini adalah elaborasi tepat yang ditawarkan oleh algoritme dan pada dasarnya adalah batang kunci untuk perumusan instruksi.
- Output: pada fase terakhir ini adalah instruksi spesifik yang ditentukan oleh algoritme, misalnya, perintah atau resolusinya.
Contoh algoritma
Contoh umum perhitungan matematika termasuk 2 + 3 = 5 untuk penjumlahan dan 15-9 = 6 untuk pengurangan. Cara lain untuk memvisualisasikan algoritme sederhana adalah dalam resep dapur, karena mereka menggambarkan proses yang spesifik dan teratur, misalnya, "pertama-tama Anda harus meletakkan setengah panci air untuk memanaskan, lalu Anda harus menambahkan sedikit garam dan terakhir paprika akan dibelah untuk mengekstrak bijinya dan uratnya. " Dalam model ini, permulaan, proses dan akhir disajikan, yang pada dasarnya adalah apa yang menentukan algoritma.
Jenis algoritme
Di antara berbagai jenis algoritme yang ada di seluruh dunia, penekanan ditempatkan pada algoritme yang diklasifikasikan menurut sistem tanda dan lain-lain menurut fungsinya. Algoritme pada dasarnya adalah solusi paling terkenal untuk penyelesaian masalah tertentu dan sesuai dengan strategi dan fungsinya ada beberapa jenis yang berbeda, di antaranya adalah dinamika, kebalikan, kekerasan, oportunistik, penandaan yang menonjol., acak, dll. Selain algoritme yang disebutkan di atas, ada ribuan di antaranya yang cocok untuk menyelesaikan kesulitan di area mana pun.
Menurut sistem tanda Anda
Kualitatif dan kuantitatif berada dalam kategori ini.
- Algoritma kualitatif dicirikan dengan memiliki elemen verbal, contohnya adalah instruksi atau "langkah demi langkah" yang dikenali yang diberikan secara lisan, seperti resep untuk seni kuliner atau prosedur untuk melakukan pekerjaan manual.
- Algoritma kuantitatif sangat berlawanan dengan algoritma kualitatif, karena adanya elemen numerik tertentu dan penggunaan matematika untuk melakukan perhitungan, misalnya, ketika akar kuadrat ditemukan atau persamaan diselesaikan.
Dalam klasifikasi ini juga terdapat algoritma komputasi dan non-komputasi. Komputasinya dilakukan dengan menggunakan komputer dan dicirikan begitu kompleks sampai-sampai membutuhkan mesin untuk dijalankan, selain itu juga merupakan algoritma kuantitatif yang dapat dioptimalkan. Yang non-komputasi tidak memiliki kewajiban untuk dijalankan dengan mesin atau komputer; contoh nyata dari ini adalah program televisi.
Menurut fungsinya
Berikut ini adalah klasifikasi ini.
1. Algoritma penandaan
Hal ini ditandai dengan penggunaan otomatisasi untuk menetapkan harga dengan cara yang rajin, dengan fokus pada faktor-faktor seperti perilaku pengguna dan juga dikenal sebagai kemampuan untuk secara otomatis menentukan harga untuk mendevaluasi komponen, untuk meningkatkan keuntungan pengguna. penjual. Ini telah memainkan peran yang sangat penting dalam praktik umum industri penerbangan sejak awal 1990-an.
Algoritme penandaan dibedakan dengan menjadi salah satu praktik paling umum di industri yang sangat kompetitif, merujuk pada agen perjalanan atau perusahaan online tersebut. Algoritme semacam ini bisa sangat kompleks atau relatif sederhana, karena dalam banyak kasus diketahui bahwa algoritme tersebut dioptimalkan atau otodidak dengan kontinuitas pengujian tertentu. Di luar semua itu, algoritme penandaan juga bisa menjadi tidak populer di kalangan klien karena individu cenderung menghargai stabilitas dan keadilan.
2. Algoritma probabilistik
Mereka adalah cara di mana hasil diperoleh bergantung pada probabilitas, ini umumnya dikenal sebagai algoritma acak.
Dalam beberapa aplikasi, penanganan jenis operasi ini biasa terjadi, misalnya, ketika perilaku sistem yang ada atau dirancang disimulasikan dari waktu ke waktu, di mana solusi yang tidak disengaja diperoleh sebagai konsekuensinya. Dalam keadaan lain, masalah yang akan dipecahkan biasanya bersifat deterministik tetapi ada kemungkinan mengubahnya menjadi masalah yang kebetulan, untuk menyelesaikannya dengan menerapkan algoritma probabilitas. Hal positif tentang acak adalah bahwa penerapannya tidak memerlukan studi matematika yang sangat canggih.
Selain itu, di dalam grup ini terdapat tiga tipe utama yang dikenal sebagai numerik, Monte Carlo dan Las Vegas.
- Algoritma numerik dapat memberikan perkiraan hasil dari masalah tersebut dan umumnya diterapkan dalam bidang teknik.
- Algoritma Monte Carlo dapat menghasilkan solusi yang benar atau salah dan memiliki margin kesalahan tertentu dan terakhir.
- Algoritme Las Vegas dibedakan dengan tidak pernah meninggalkan jawaban yang salah, pada kenyataannya, mereka menemukan solusi yang benar atau hanya memberi tahu Anda tentang kemungkinan kegagalan.
Pemrograman dinamis mengacu pada metode di mana algoritma menghitung hasil. Terkadang solusi dari elemen tertentu yang memiliki masalah bergantung pada hasil dari masalah lain yang lebih kecil. Jadi, untuk menyelesaikannya, nilai yang sama harus dihitung ulang untuk menyelesaikan submasalah terkecil, namun ini dapat membuat siklus yang terbuang percuma. Untuk mengatasinya, pemrograman dinamis dapat digunakan dan dalam hal ini solusi dari setiap subproblem diingat, untuk menggunakan nilai yang sama ini daripada mengulanginya beberapa kali.
3. Algoritma heuristik
Mereka dibedakan dengan mencari solusi dan meskipun demikian mereka tidak menjamin bahwa jawaban terbaik akan ditemukan, karena alasan ini, mereka dapat dianggap sebagai algoritme perkiraan. Ini dapat digunakan ketika menemukan solusi melalui rute normal dianggap tidak mungkin. Heuristik memberikan kegunaan yang akan dijelaskan di bawah ini. Dalam perencanaan, mereka digunakan untuk menjadwalkan kegiatan dalam waktu singkat, dalam desain mereka digunakan untuk menggambarkan sistem listrik atau digital dan dalam simulasi mereka digunakan untuk memverifikasi prosedur tertentu.
4. Algoritme mundur
Mereka dikenal sebagai strategi rekursif yang memecahkan masalah seperti teka-teki, labirin atau potongan serupa, di mana pencarian mendalam dilakukan untuk menemukan solusi yang mungkin. Namanya mengacu pada fakta bahwa dalam penyelidikan yang dilakukan untuk menemukan hasil, selalu kembali ke poin sebelumnya untuk dapat menguji alternatif. Ini biasanya dicabut untuk melihat dampaknya pada ekonomi, pasar, penandaan harga, operasi tertentu dan bahkan pada masyarakat itu sendiri.
5. Algoritma serakah
Ini dikenal sebagai perusak atau gigi manis dan dapat diterapkan dalam masalah pengoptimalan, di setiap langkah algoritme ini dibuat pilihan yang logis dan optimal untuk mendapatkan solusi global terbaik. Namun, harus diperhatikan bahwa begitu keputusan dicapai, sama sekali tidak ada yang dapat dilakukan untuk memperbaiki atau mengubahnya di masa depan. Operasi ini diberi nama ini karena dalam setiap langkah dipilih pecahan terbaik yang mampu "menelan" tanpa mengkhawatirkan apa yang terjadi nanti.
Properti dari suatu algoritma
Berbagai penulis telah mencoba untuk mendefinisikan algoritma secara formal sambil menggunakan model matematika. Namun, spesimen ini terkait erat dengan jenis informasi khusus yang mencakup angka, simbol, dan beberapa grafik, saat beroperasi pada distribusi data dalam jumlah besar. Secara umum, partisipasi umum dari setiap definisi dirangkum dalam tiga properti berikut:
Pernyataan masalah
Pemecahan masalah melalui komputer dapat terdiri dari proses di mana masalah dijelaskan dan program yang mampu memecahkannya diizinkan untuk dikembangkan. Proses ini membutuhkan analisis masalah, perancangan algoritma dan transformasinya menjadi sebuah program, serta implementasi dan validasinya. Dua langkah pertama adalah yang paling kompleks dalam proses ini, tetapi setelah Anda memeriksa masalah dan memperoleh algoritme yang dapat menyelesaikannya, tugas Anda terutama didasarkan pada menerjemahkannya ke dalam bahasa pemrograman yang diinginkan.
Analisis solusi umum
Setelah masalah ditentukan, sekarang saatnya menganalisis hal-hal berikut:
- The informasi dari tiket yang mereka berikan kepada kami.
- Hasil yang diinginkan.
- Domain pekerjaan, pernyataan, atau elemen penting lainnya.
Analisis algoritme dikenal sebagai bagian terpenting dari teori kompleksitas komputasi yang lebih luas, karena menyediakan kalkulasi teoretis untuk sumber daya yang diperlukan algoritme apa pun untuk memecahkan masalah komputasi tertentu. Saat menjalankan penyelidikan teoretis, adalah umum untuk menghitung komplikasinya dalam pengertian asimtotik untuk mendapatkan ukuran masukan yang cukup besar. Batas atas asimtotik bersama dengan notasi theta dan omega digunakan untuk tujuan ini dan harus dicatat bahwa ukuran non-asimtotik dapat dihitung.
Pengukuran efisiensi yang tepat benar-benar berguna bagi mereka yang benar-benar menggunakan algoritme, karena algoritme tersebut lebih presisi dan ini memungkinkan mereka untuk menentukan waktu yang dibutuhkan untuk mengeksekusi. Bagi beberapa individu, seperti pembuat video game, konstanta tersembunyi dapat berarti perbedaan besar antara kesuksesan dan kegagalan. Evaluasi waktu dapat bergantung pada bagaimana langkah tertentu didefinisikan dan agar analisis masuk akal, harus dijamin bahwa waktu sangat dibatasi oleh suatu konstanta.
Elaborasi algoritma
Untuk melaksanakan pengembangan suatu operasi, penting bahwa serangkaian prosedur dilakukan untuk memenuhi penyelesaian masalah itu sendiri. Untuk memulai, analisis kesulitan sebelumnya harus dilakukan dan ini dilakukan melalui studi yang menunjukkan operasi sebenarnya dari masalah jauh sebelum algoritme apa pun dilakukan. Oleh karena itu, definisi persyaratan dievaluasi, pada langkah ini Anda harus memiliki gambaran yang jelas tentang masalah apa yang harus diselesaikan, baik itu penjumlahan dua angka, urutan daftar angka, dll.
Kemudian, identifikasi masing-masing modul dijalankan, karena implementasi algoritme yang benar bergantung padanya untuk memberikan solusi yang mungkin untuk persyaratan yang diidentifikasi di atas.
Terakhir, kalkulasi diimplementasikan dalam bahasa pemrograman yang dimengerti oleh komputer sehingga mampu memahami instruksi yang dimodelkan dan dengan demikian mampu melaksanakannya, mencapai hasil yang diharapkan. Dalam prosedur terakhir ini, dimungkinkan untuk berbicara tentang program yang terdiri dari serangkaian instruksi yang dipesan satu demi satu dan berhasil menyelesaikan persyaratan yang ditetapkan.
Penting untuk disebutkan bahwa dalam waktu sekuensial, algoritme menjalankan fungsinya dalam waktu yang ditentukan dan berusaha menentukan urutan status komputasi di setiap input yang dianggap valid. Dalam keadaan abstrak, operasi ini adalah elemen independen dan dianggap bahwa di dalamnya struktur orde primordial dapat menjadi invarian di bawah isomorfisme. Dalam eksplorasi terbatas, transisi dari satu keadaan ke keadaan lain sepenuhnya ditetapkan oleh penjelasan permanen dan terbatas, di mana antara satu keadaan dan keadaan berikutnya, hanya sejumlah istilah keadaan saat ini yang diperhitungkan.
Juga tidak boleh diabaikan bahwa algoritma biasanya diekspresikan melalui bahasa pemrograman "pseudo-code" bahasa biasa dan bahkan diagram alir terkenal. Demikian pula, penting untuk disebutkan bahwa algoritme memainkan peran mendasar dalam komputasi karena representasi datanya sebagai urutan bit. Dari sudut lain, program didefinisikan sebagai algoritma yang mengekspresikan ke komputer langkah-langkah spesifik yang harus diikuti untuk memenuhi aktivitas tertentu secara memadai. Sebaliknya, belajar menulis pseudocode membuat pemrograman lebih mudah dan oleh karena itu akan dijelaskan nanti.
Bahasa pemrograman dikenal sebagai bahasa formal atau artifisial karena memiliki kaidah tata bahasa yang terdefinisi dengan baik, memiliki kemampuan untuk membekali programmer dengan kemampuan textualize rangkaian instruksi atau urutan regulasi dalam bentuk algoritma dengan tujuan. untuk menjaga kendali mengenai perilaku fisik dan logis komputer, dengan cara ini, berbagai jenis informasi dapat dicapai. Seperangkat aturan moralitas yang ditulis dengan menggunakan bahasa pemrograman ini ditetapkan sebagai program.
Bahasa pemrograman biasanya terdiri dari sekumpulan simbol dan aturan tata bahasa dan semantik yang menentukan struktur bahasa saat ini dan artinya. Dari perspektif lain, bahasa komputer juga mencakup bahasa pemrograman, contoh yang jelas adalah HTML, yang memenuhi instruksi tertentu untuk menjalankan isi dokumen yang berbeda. Bahasa pemrograman dapat memungkinkan spesifikasi yang tepat dari data tersebut yang harus dioperasikan oleh perangkat lunak tertentu dalam berbagai keadaan.
Di sisi lain, pseudocode adalah bahasa deskripsi algoritmik yang menggunakan konvensi dasar dari bahasa pemrograman nyata, tetapi itu dirancang untuk membaca manusia daripada membaca melalui mesin, menjaga independensi dari jenis bahasa pemrograman lainnya. bahasa pemrograman. Pseudocode mengabaikan detail yang tidak dianggap penting bagi pemahaman manusia tentang algoritme, seperti kode sistem, deklarasi variabel, dan bahkan beberapa subrutin. Dengan cara ini, bahasa pemrograman berusaha melengkapi dirinya dengan deskripsi yang tepat dalam bahasa alami atau dengan notasi matematika yang ringkas.