Dalam matematika, ilmu komputer dan doktrin terkait lainnya, algoritme didefinisikan sebagai seperangkat sila yang mapan dan tegas, yang ditemukan secara metodis dan terbatas, yang memungkinkan penghitungan dilakukan, informasi tertentu diproses, solusi masalah dan berbagai kegiatan yang harus dilakukan. . Setelah keadaan awal dan entri dimulai, mengikuti prosedur yang diperlukan, keadaan akhir tercapai dan hasilnya diperoleh. Algoritma adalah subjek penyelidikan ke dalam algoritma, dan sementara banyak yang mungkin tidak percaya, mereka juga dapat digunakan dalam semua aspek kehidupan sehari-hari.

Apa itu algoritma
Dalam ilmu komputer biasanya dibatasi sebagai suksesi instruksi berurutan, di mana beberapa proses dilakukan untuk menanggapi keputusan atau kebutuhan tertentu. Dengan cara yang sama, algoritma sering digunakan dalam logika dan matematika, serta menjadi dasar dari elaborasi manual pengguna, pamflet ilustrasi, antara lain. Salah satu yang paling terkenal dalam matematika, adalah yang dikaitkan dengan geometer Euclid, untuk mencapai pembagi kesamaan terbesar dari dua bilangan bulat yang positif dan "metode Gauss" yang terkenal untuk menentukan sistem persamaan linear.
Sehubungan dengan ilmu komputer, perhitungan ini dapat dikenal sebagai urutan pedoman yang harus diikuti untuk menentukan masalah melalui penggunaan komputer.
Oleh karena itu, algoritmik dipahami sebagai disiplin yang berfokus pada analisis dan desain algoritma. Dalam pertimbangan yang pertama, kami berusaha untuk memeriksa sifat-sifat seperti kebenaran dan keefektifannya sehubungan dengan waktu dan ruang, untuk memahami masalah yang dapat diselesaikan secara algoritmik. Sedangkan untuk yang kedua, ia berupaya mempelajari paradigma yang sudah mapan dan mengusulkan contoh-contoh baru.
Algoritme terletak di tengah kemajuan komputasi dan penting di berbagai bidangnya. Dengan cara ini, mustahil bagi layanan yang berhasil seperti Facebook dan Google untuk menangani besarnya informasi yang mereka miliki tanpa kolaborasi algoritma atau struktur data khusus. Namun, dalam algoritme kehidupan sehari-hari juga digunakan, contohnya adalah penerangan kompor, karena dimulai pada saat orang tersebut pergi ke dapur, mengobservasinya, dan berakhir, ketika ia mulai menyalakannya. .
Karakteristik suatu algoritma

Terlepas dari kenyataan bahwa algoritma ini dikenal sebagai sekumpulan berbagai langkah yang terurut dan terbatas yang mengarah pada penyelesaian suatu masalah, sifat dari kesulitan ini dikatakan bervariasi sesuai dengan konteks di mana mereka ditemukan. Dengan cara ini, ada masalah kimia, matematika, filosofis, antara lain. Dengan demikian, dapat dikatakan bahwa sifatnya bervariasi dan pelaksanaannya melalui komputer tidak diperlukan. Di luar semua yang dijelaskan sebelumnya, algoritma memiliki karakteristik yang elementer untuk menentukan seperti apa mereka hari ini dan akan disebutkan di bawah ini.
- Pedoman yang terkandung dalam algoritma harus spesifik untuk menghindari meninggalkan margin dalam segala jenis kebingungan, ini berarti bahwa instruksi yang sesuai harus diikuti dengan tepat atau, sebaliknya, representasi grafik dari aliran di mana Anda mendaftar tidak akan memfasilitasi solusi. benar
- Itu harus dalam definisi yang sempurna, berusaha sebanyak mungkin untuk mengikutinya sebanyak yang diperlukan, untuk mendapatkan hasil yang sama dan jika terjadi sebaliknya, algoritma tidak akan dapat diandalkan dan tidak akan berfungsi sebagai panduan ketika membuat keputusan.
- Mereka dikenal karena kekhasannya yang terbatas, mereka biasanya berakhir pada suatu titik dan kemudian mereka memberikan hasil pada akhir setiap langkah. Jika algoritma diperluas tanpa batas waktu, kembali ke titik awal yang tidak pernah dapat diselesaikan, ada kehadiran paradoks atau "perulangan" pengulangan yang terkenal.
- Akhirnya, dikatakan bahwa keterbacaan algoritma adalah elemen kunci, karena jika argumen mereka tidak dapat dipahami, instruksi yang sesuai tidak dapat diikuti, di samping itu, itu menyiratkan kata-kata langsung, jelas dan singkat dari teks yang ditemukan di masing-masing.
Bagian dari suatu algoritma
Setiap operasi algoritmik memiliki tiga bagian berbeda yang tunduk pada struktur dasar suatu sistem dan ini adalah:
- Entri: juga disebut header atau titik awal, itu adalah instruksi awal yang mewakili asal-usul algoritma dan yang memotivasi pembacaannya.
- Proses: juga disebut deklarasi, itu adalah penjabaran yang tepat yang ditawarkan algoritma dan pada dasarnya adalah batang kunci untuk perumusan instruksi.
- Output: pada fase terakhir ini adalah instruksi spesifik yang ditentukan oleh algoritma, contohnya, perintah atau resolusinya.
Contoh-contoh algoritma
Di antara contoh perhitungan matematika yang paling umum adalah 2 + 3 = 5 sebagai tambahan dan 15-9 = 6 dalam pengurangan . Cara lain untuk memvisualisasikan algoritma sederhana adalah dalam resep dapur karena mereka menggambarkan proses yang spesifik dan teratur, misalnya, "pertama Anda harus meletakkan setengah panci air ke atas api, kemudian tambahkan sejumput garam dan akhirnya lada akan dibagi untuk mengekstrak biji dan saraf. " Dalam model ini, suatu permulaan, suatu proses dan suatu akhir disajikan, yang pada dasarnya adalah apa yang mendefinisikan algoritma.
Jenis-jenis algoritma

Di antara berbagai jenis algoritma di dunia, penekanan ditempatkan pada mereka yang diklasifikasikan menurut sistem tanda dan lainnya yang sesuai dengan fungsinya. Algoritme pada dasarnya adalah solusi yang paling dikenal untuk memecahkan masalah tertentu dan menurut strategi dan fungsinya ada berbagai jenis ini, di antaranya adalah dinamis, mundur, kekuatan kasar, oportunistik, menandai, acak, dll. Selain algoritma yang disebutkan di atas, ada ribuan algoritma yang sesuai untuk menyelesaikan kesulitan di bidang apa pun.
Menurut sistem tandanya
Kualitatif dan kuantitatif ditempatkan dalam kategori ini.
- Algoritma kualitatif ditandai dengan memiliki unsur-unsur verbal, contohnya adalah instruksi atau "langkah demi langkah" yang diakui yang diberikan secara lisan, seperti resep untuk seni kuliner atau prosedur untuk melakukan pekerjaan manual.
- Algoritma kuantitatif adalah kebalikan dari kualitatif, karena adanya elemen numerik tertentu dan penggunaan matematika untuk melakukan perhitungan, misalnya, ketika akar kuadrat ditemukan atau persamaan dipecahkan.
Dalam klasifikasi ini juga terdapat algoritma komputasi dan non-komputasi . Komputasi dilakukan dengan menggunakan komputer dan dikarakteristikkan dengan begitu kompleksnya hingga membutuhkan mesin untuk dapat dilakukan, selain itu, mereka adalah algoritma kuantitatif yang dapat dioptimalkan. Yang non-komputasi tidak memiliki kewajiban untuk dieksekusi melalui mesin atau komputer; Contoh yang jelas tentang ini adalah pemrograman televisi.
Sesuai fungsinya
Berikut ini berada dalam klasifikasi ini.
1. Menandai algoritma
Ini ditandai dengan menggunakan otomatisasi untuk menetapkan harga dengan rajin, dengan fokus pada faktor-faktor seperti perilaku pengguna dan juga dikenal sebagai kemampuan untuk secara otomatis menentukan harga untuk komponen-komponen yang didevaluasi, untuk meningkatkan keuntungan dari penjual. Ini telah memainkan peran yang sangat penting dalam praktik umum industri penerbangan sejak awal 1990-an.
Algoritma penandaan dibedakan dengan menjadi salah satu praktik paling umum dalam industri yang sangat kompetitif, merujuk pada agen perjalanan atau perusahaan online tersebut. Algoritma semacam ini bisa sangat kompleks atau relatif sederhana, karena dalam banyak kasus dicatat bahwa mereka dioptimalkan atau dipelajari sendiri dengan kesinambungan tes tertentu. Di luar semua itu, penandaan algoritma juga dapat menjadi tidak populer dengan pelanggan karena individu cenderung menghargai stabilitas dan keadilan.
2. Algoritma probabilitas
Mereka adalah di mana cara di mana hasil diperoleh tergantung pada probabilitas, ini umumnya dikenal sebagai algoritma acak.
Dalam beberapa aplikasi, manajemen jenis operasi ini adalah umum, seperti ketika mensimulasikan perilaku sistem yang ada atau yang dirancang dari waktu ke waktu, menghasilkan solusi kebetulan . Dalam keadaan lain, masalah yang harus dipecahkan biasanya deterministik tetapi ada kemungkinan mengubahnya menjadi kebetulan, untuk menyelesaikannya dengan menerapkan algoritma probabilitas. Hal positif tentang yang acak adalah bahwa aplikasi mereka tidak perlu studi matematika yang sangat canggih.
Selain itu, dalam grup ini ada tiga jenis utama yang dikenal sebagai numerik, Monte Carlo dan Las Vegas.
- Algoritma numerik dapat memberikan hasil perkiraan masalah dan umumnya diterapkan dalam rekayasa.
- Algoritma Monte Carlo dapat memberikan solusi yang benar atau salah dan memiliki margin of error tertentu dan yang terakhir.
- Algoritma Las Vegas dibedakan dengan tidak pernah meninggalkan jawaban yang salah, pada kenyataannya, mereka menemukan solusi yang tepat atau hanya memberi tahu Anda tentang kemungkinan kegagalan.
Pemrograman dinamis mengacu pada metode di mana algoritma menghitung hasilnya. Terkadang solusi dari elemen tertentu yang memiliki masalah tergantung pada hasil dari masalah yang lebih kecil lainnya. Jadi, untuk resolusi ini, nilai yang sama harus dihitung ulang untuk menyelesaikan subproblem terkecil, bagaimanapun, ini dapat membuat buang-buang siklus. Untuk memperbaikinya, pemrograman dinamis dapat digunakan dan dalam hal ini solusi setiap subproblem diingat, untuk menggunakan nilai yang sama ini alih-alih mengulanginya beberapa kali.
3. Algoritma heuristik
Mereka dibedakan dengan mencari solusi dan masih tidak menjamin bahwa jawaban terbaik akan ditemukan, karena alasan ini, mereka dapat dianggap sebagai algoritma perkiraan . Ini dapat digunakan ketika dianggap mustahil untuk menemukan solusi melalui rute normal. Heuristik menyediakan kegunaan yang akan dijelaskan di bawah ini. Dalam perencanaan, mereka digunakan untuk pemrograman kegiatan dalam waktu singkat, dalam desain mereka digunakan untuk menggambarkan sistem listrik atau digital, dan dalam simulasi mereka digunakan untuk memverifikasi prosedur tertentu.
4. Algoritma 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, seseorang selalu kembali ke titik sebelumnya untuk menguji alternatif. Ini biasanya dicabut untuk mengamati dampaknya terhadap ekonomi, pada pasar, pada penetapan harga, pada operasi tertentu dan bahkan pada masyarakat itu sendiri.
5. Algoritma yang ramah
Ini dikenal sebagai perusak atau gigi manis dan itu berlaku dalam masalah optimasi, dalam setiap langkah algoritma ini pilihan logis dan optimal dibuat untuk mengakhiri dengan yang terbaik dari solusi global. Namun, harus diperhitungkan bahwa setelah percobaan tercapai, sama sekali tidak ada yang dapat dilakukan untuk memperbaiki atau mengubahnya di masa depan. Operasi ini memiliki nama ini karena di setiap langkah fraksi terbaik yang mampu "melahap" dipilih tanpa khawatir tentang apa yang terjadi kemudian.
Properti suatu algoritma

Berbagai penulis telah mencoba mendefinisikan algoritma secara formal saat menggunakan model matematika. Namun, spesimen ini terkait erat dengan jenis informasi khusus yang mencakup angka, simbol, dan beberapa grafik, saat beroperasi melalui sejumlah besar distribusi data. Secara umum, partisipasi umum dari masing-masing definisi dirangkum dalam tiga sifat berikut:
Pernyataan masalah
Resolusi masalah melalui komputer, dapat terdiri dari proses di mana masalah dijelaskan dan diizinkan untuk mengembangkan program yang mampu menyelesaikannya. Proses ini membutuhkan analisis masalah, desain algoritma dan transformasinya menjadi sebuah program, di samping realisasi dan validasinya. Dua langkah pertama adalah yang paling kompleks dalam proses ini, tetapi begitu Anda telah memeriksa masalah dan memperoleh algoritma yang dapat menyelesaikannya, tugas Anda terutama didasarkan pada menerjemahkannya ke dalam bahasa pemrograman yang diinginkan.
Analisis solusi umum
Setelah masalah didefinisikan, sekarang saatnya untuk menganalisis hal-hal berikut:
- Informasi tiket yang mereka berikan kepada kami.
- Hasil yang diinginkan.
- Domain pekerjaan, pernyataan atau elemen lain yang diperlukan.
Analisis algoritma dikenal sebagai bagian terpenting dari teori kompleksitas komputasi yang lebih luas, karena memberikan perhitungan teoritis untuk sumber daya yang diperlukan algoritma apa pun untuk menyelesaikan masalah komputasi yang diberikan. Ketika melakukan penyelidikan teoretis, adalah umum untuk menghitung komplikasinya dalam pengertian asimptotik untuk mendapatkan ukuran entri yang cukup besar. Batas atas asimptotik bersama dengan notasi theta dan omega digunakan untuk tujuan ini, dan harus dicatat bahwa ukuran non-asimptotik dapat dikomputerisasi.
Pengukuran efisiensi yang akurat sangat berguna bagi mereka yang benar-benar menggunakan algoritma, karena mereka memiliki lebih banyak presisi dan ini memungkinkan mereka untuk menentukan waktu yang diperlukan untuk mengeksekusi. Bagi beberapa orang seperti pembuat video game, konstanta tersembunyi dapat berarti perbedaan besar antara kesuksesan dan kegagalan. Evaluasi waktu mungkin tergantung pada bagaimana langkah tertentu didefinisikan dan agar analisis masuk akal, harus dipastikan bahwa waktu sangat dibatasi oleh konstanta.
Elaborasi algoritma
Untuk melaksanakan pengembangan operasi, penting bahwa serangkaian prosedur harus dilakukan untuk memenuhi resolusi masalah yang diberikan. Untuk memulai, analisis awal dari kesulitan harus dilakukan dan ini dilakukan melalui studi yang menunjukkan fungsi sebenarnya dari masalah jauh sebelum algoritma dilakukan. Oleh karena itu, definisi persyaratan dievaluasi, dalam langkah ini gagasan tentang apa masalah yang harus dipecahkan harus, jelas, apakah itu penambahan dua angka, urutan daftar angka, dll.
Kemudian, identifikasi masing-masing modul dieksekusi, karena implementasi algoritma yang benar tergantung pada hal ini untuk memberikan solusi yang mungkin untuk persyaratan yang diidentifikasi di atas.
Akhirnya, perhitungan diimplementasikan dalam bahasa pemrograman yang dapat dimengerti oleh komputer sehingga mampu memahami instruksi yang dimodelkan itu sendiri dan dengan demikian dapat melaksanakannya untuk mencapai hasil yang diharapkan. Dalam prosedur terakhir ini, Anda sudah dapat berbicara tentang program yang terdiri dari serangkaian instruksi yang disusun satu demi satu dan mengelola untuk menyelesaikan persyaratan yang ditetapkan.

Penting untuk menyebutkan bahwa dalam waktu berurutan, algoritma melakukan fungsinya dalam waktu yang ditentukan dan berusaha untuk menentukan urutan keadaan komputasi dalam setiap input yang dianggap valid . Dalam keadaan abstrak, operasi ini adalah elemen independen dan dianggap bahwa di dalamnya struktur tatanan primordial dapat menjadi invarian di bawah isomorfisme. Dalam penjelajahan yang dibatasi, Transisi dari satu negara ke negara lain sepenuhnya dilakukan dengan penjelasan yang permanen dan terbatas, di mana antara satu negara bagian dan berikutnya, hanya jumlah terbatas dari ketentuan negara saat ini diperhitungkan.
Juga tidak boleh diabaikan bahwa algoritma sering diekspresikan melalui bahasa pemrograman "pseudocode", bahasa umum dan bahkan diagram alur yang terkenal. Demikian juga, penting untuk menyebutkan bahwa algoritma memainkan peran mendasar dalam komputasi karena representasi data mereka sebagai urutan bit. Dari sudut lain, suatu program didefinisikan sebagai algoritma yang menyatakan ke komputer langkah-langkah spesifik yang harus diikuti untuk melaksanakan kegiatan tertentu secara memadai. Di sisi lain, belajar menulis pseudocode membuat pemrograman lebih mudah dan karenanya akan dijelaskan kemudian.
Bahasa pemrograman, dikenal sebagai bahasa formal atau buatan karena memiliki aturan tata bahasa yang didefinisikan dengan baik, ia memiliki kemampuan untuk menyediakan programmer dengan kemampuan untuk mengirim teks serangkaian instruksi atau urutan peraturan dalam bentuk algoritma dalam rangka Dengan mempertahankan kontrol atas perilaku fisik dan logis komputer, dengan cara ini, Anda dapat menjangkau berbagai jenis informasi. Serangkaian sila yang ditulis melalui bahasa pemrograman ini ditetapkan sebagai program .
Bahasa pemrograman biasanya terdiri dari seperangkat 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 dari ini adalah HTML, yang sesuai dengan instruksi tertentu untuk melaksanakan konten dokumen yang berbeda. Bahasa pemrograman dapat memungkinkan data yang harus dioperasikan oleh perangkat lunak tertentu untuk ditentukan secara tepat dalam berbagai keadaan.
Di sisi lain, pseudocode adalah bahasa deskripsi algoritmik yang menggunakan konvensi dasar dari bahasa pemrograman yang nyata, tetapi yang dirancang untuk bacaan manusia alih-alih bacaan mesin, menjaga independensi dari jenis lain dari bahasa pemrograman . Kode semu mengabaikan detail yang tidak dianggap penting untuk pemahaman manusia tentang algoritma, seperti kode spesifik sistem, deklarasi variabel, dan bahkan beberapa subrutin. Dengan cara ini, bahasa pemrograman berusaha untuk melengkapi dirinya dengan deskripsi yang tepat dalam bahasa alami atau dengan notasi matematika yang ringkas.