**Algoritma** ialah tatacara langkah demi langkah yang diaturkan teliti mengikut bilangan dan susunan tertentu bertujuan menyelesaikan sesuatu masalah dalam masa yang terhingga. Dalam sains komputer pula, **algoritma** ialah serangkap langkah dalam proses larian kod komputer yang mengkaji tahap keberkesanan kod program komputer. Usaha dalam kajian ini bertemakan "bagimanakah cara untuk menghasilkan langkah tersingkat dalam penyelesaian setiap masalah komputer yang diutarakan.

Tatacara ini boleh diungkapkan dengan cekap dalam lingkungan ruang dan masa yang terbatas dari bahasa yang teratur memberi arahan ditakrif didefinisikan dengan baik untuk mengira hitung sesebuah fungsi tertentu. Arahan-arahan ini menjelaskan sebuah kiraan yang dimajukan setelah dilalukan sejumlah sifat terbatas yang berturutan apabila dilaksanakan bermula dari sifat dan masukan awal (mungkin kosong) sehingga akhirnya menghasilkan "keluaran" dan berhenti dalam suatu sifat akhir. Peralihan Transisi dari satu sifat ke sifat selanjutnya tidak harus ditentukan secara mutakhir; terdapat juga beberapa algoritma yang bersifat rawak seikutan dengan masukan rawak.

Etimologi
---------

Istilah ini pada asalnya bermaksud "sistem angka perpuluhan" melalui ungkapan *algorismus* hasil pelatinan nisbah Al-Khwārizmī (Parsi: الخوارزمیcode: fa is deprecated ) diberikan kepada Muhammad bin Musa Al-Khawarizmi, seorang ilmuwan hisab dan falak Baitul Hikmah Baghdad keturunan Parsi berasal dari Khwarazm kini terletak di Uzbekistan; beliau menulis mengenai sistem angka Hindu-Arab pada abad ke-825; karya ini diperkenalkan ke dunia Barat melalui manuskrip berjudul *Dixit Algorizmi* ("Al-Khwarizmi menyebut") hasil terjemahan dari bahasa Arab ke bahasa Latin pada abad ke-12. Penungkapan ini kemudiannya dieja semula sebagai *algortihmus* pada abad ke-17; makna ungkapan ini beralih luas kepada tatakira pada abad ke-19.

Ciri
----

1. Mempunyai permulaan
2. Mempunyai input (dalam sesetengah kes, tiada input) dan output
3. Mempunyai proses
4. Mempunyai penamat

Algoritma mesti memenuhi syarat-syaratnya. Jika syarat tidak dipenuhi, maka itu bukan algoritma.

Jenis
-----

Algoritma dikelaskan mengikut cara implementasi ia:

Rekursi atau iterasi
Sebuah algoritma rekursi iaitu algoritma yang memanggil dirinya sendiri berulang kali sampai kondisi tertentu tercapai, ini merupakan metode umum bagi pemrograman fungsional. algoritma iteratif menggunakan konstruksi berulang seperti pengulangan dan terkadang struktur data tambahan seperti tumpukan untuk menyelesaikan permasalahan. Beberapa permasalahan secara alami cocok dengan satu implementasi atau lainnya. Sebagai contoh, Menara Hanoi dikenal dengan implementasi rekursif. Setiap versi rekursif memiliki kesamaan (tapi boleh lebih atau kurang kompleks) dengan versi iteratif, dan sebaliknya.
Logika
Sebuah algoritma boleh dilihat sebagai logika deduksi terkontrol. Pernyataan ini diekspresikan sebagai: **algoritma = logika + kawalan**. Komponen logika mengekspresikan aksioma yang boleh digunakan dalam komputasi dan komponen kawalan menentukan cara deduksi digunakan pada aksioma. Ini merupakan dasar dari paradigma pemrograman logika. Dalam bahasa pengaturcaraan logika tulenm komponen kawalan adalah tetap dan algoritma ditentukan dengan memberikan hanya komponen logikanya. Daya tarik dari pendekatan ini adalah semantik elegan: sebuah perubahan dalam aksioma memiliki perubahan dalam algoritma.
Seturut/bersiri, selari atau terdistribusi
Algoritma biasanya diibncangkan dengan tanggapan bahawa komputer menjalankan satu arahan algoritma pada suatu-suatu masa. Komputer tersebut kadangkalanya diungkapkan menggunakan komputer serial. Rancangan algoritma untuk lingkungan tersebut diungkapkan dengan menggunakan algoritma serial, perkara ini terbalik algoritma-algoritma jenis selari atau teragih: algoritma selari memanfaatkan seni bina komputer yang mana beberapa pemproses boleh mengerjakan suatu permasalahan pada waktu yang sama, manakala algoritma teragih memanfaatkan banyak mesin yang dihubungkan dengan suatu jaringan. Kedua-dua algoritma ini membahagikan permasalahan menjadi banyak sub-masalah yang bersifat simetri atau asimetri lalu mengumpulkan kembali hasil perkiraan submasalah tersebut. Kos sumber pada algoritma tersebut tidak hanya pada setiap putaran pemproses tetapi juga daya komunikasi antara prosesor. Algoritma pengurutan boleh diselarikan secara efisien, namun biaya komunikasinya memakan kos sangat mahal. Algoritma iteratif secara umum boleh diparalelkan. Beberapa permasalahan tidak ada algoritma sama sifat selarinya lalu disebut dengan permasalahan serial lahiriah.
Deterministik atau non-deterministik
algoritma deterministik menyelesaikan masalah dengan keputusan yang tepat disetiap langkah dari algoritma sedangkan algoritma non-deterministik menyelesaikan masalah lewat penerkaan walaupun penerkaan biasanya lebih akurat dengan menggunakan heuristik.
Tepat atau perkiraan
Bila banyak algoritma sampai pada solusi yang tepat, algoritma perkiraan mencari sebuah perkiraan yang terdekat dengan solusi benarnya. Perkiraan boleh menggunakan baik strategi deterministik atau acak. algoritma seperti itu memiliki nilai guna untuk banyak permasalahan sulit.
Algoritma kuantum
Algoritma ini dijalankan dalam suatu model realistik hasil suatu komputasi quantum. Istilah ini biasanya digunakan untuk algoritma yang tampak pada dasarnya bercirikan kuantum atau menggunakan beberapa ciri penting dalam perkiraan kuantum seperti superposisi kuantum atau belitan kuantum.

Kepenggunaan
------------

Algoritma banyak digunakan dalam bidang sains dan teknologi terutama dalam bidang sains komputer. Dalam sains komputer, algoritma digunakan sebelum proses pengaturcaraan C dimulakan. Melalui algoritma, pengaturcara dapat memastikan pengaturcaraan dikod dengan betul dan dapat digunakan.

Contoh algoritma
----------------

Penukaran unit meter kepada kilometer.

1) Mula
2) Input
2.1) Nilai dalam meter
3) Proses
3.1) Kilometer=meter/1000
4) Output
4.1) Nilai dalam kilometer
5) Tamat

Rujukan
-------

1. ↑  G. S. Rao, A. K. Rao, Ng Chee Aun & Cheng Yok San (1991). "algoritma". *Kamus Komputer Sekolah Menengah*. Penerbit Fajar Bakti Sdn Bhd. m/s. 2. ISBN 967-65-1306-7.CS1 maint: uses authors parameter (link)
2. ↑  "Setiap algoritme klasik, misalnya, boleh dijelaskan dengan sejumlah kata bahasa...yang terbatas" (Rogers 1987:2).
3. ↑  Telah didefinisikan terhadap agen yang menjalankan algoritme tersebut: "Ada agen komputasi, biasanya manusia, yang boleh beraksi terhadap instruksi dan melakukan komputasi" (Rogers 1987:2).
4. ↑  "Sebuah algoritma adalah sebuah prosedur untuk menghitung sebuah *fungsi* (terhadap beberapa notasi terpilih integer) ... batasan ini (terhadap fungsi bilangan) tanpa kehilangan generalisasi", (Rogers 1987:1).
5. ↑  "Sebuah prosedur yang memiliki semua karakteristik dari sebuah algoritme kecuali prosedur yang tidak memiliki keterbatasan bisa disebut sebagai sebuah 'metode komputasi'" (Knuth 1973:5).
6. ↑  Sesebuah algoritma memiliki input sifar atau lebih iaitu bilangan yang diberikan padanya sejak awal sebelum algoritma dijalankan" (Knuth 1973:5).
7. ↑  "Sebuah algoritme memiliki satu atau lebih keluaran, yaitu kuantitas yang memiliki relasi tertentu terhadap masukan" (Knuth 1973:5).
8. ↑  Apakah sebuah proses dengan proses-proses bagian dalam yang acak (tidak termasuk masukan) adalah sebuah algoritme atau bukan masih diperdebatkan. Rogers beropini bahwa: "sebuah komputasi dilakukan dengan sebuah gaya diskrit bertahap, tanpa menggunakan metode-metode berkelanjutan atau perangkat analog ... dijalakan terus secara deterministik, tanpa menggunakan metode-metode atau perangkat acak, misalnya, dadu" Rogers 1987:2
9. ↑  "algorismic", *The Free Dictionary*, diarkibkan daripada yang asal pada December 21, 2019, dicapai pada 2019-11-14
10. 1 2  O'Connor, J. J.; Robertson, E. F. (Julai 1999). "Biographies: Al-Khwarizmi". *School of Mathematics and Statistics University of St Andrews, Scotland*. Diarkibkan daripada yang asal pada 2 Ogos 2019. Dicapai pada 31 Mei 2017.
11. ↑
12. ↑  Hogendijk, Jan P. (1998). "al-Khwarzimi". *Pythagoras*. **38** (2): 4–5. Diarkibkan daripada yang asal pada April 12, 2009.
13. ↑  Oaks, Jeffrey A. "Was al-Khwarizmi an applied algebraist?". University of Indianapolis. Diarkibkan daripada yang asal pada Julai 18, 2011. Dicapai pada Mei 30, 2008.
14. ↑  Brezina, Corona (2006). *Al-Khwarizmi: The Inventor Of Algebra*. The Rosen Publishing Group. ISBN 978-1-4042-0513-0.
15. ↑  *Oxford English Dictionary*, Third Edition, 2012 *s.v.*
16. ↑  Mehri, Bahman (2017). "From Al-Khwarizmi to Algorithm". *Olympiads in Informatics*. **11** (2): 71–74. doi:10.15388/ioi.2017.special.11.
17. ↑  Kowalski 1979

### Sumber utama

* Rogers, Jr, Hartley (1987). *Theory of Recursive Functions and Effective Computability*. The MIT Press. ISBN 978-0-262-68052-3.
* Knuth, Donald (1969). *Volume 2/Seminumerical Algorithms, The Art of Computer Programming First Edition*. Reading, Massachusetts: Addison–Wesley.

Pautan luar
-----------

* Algorithms and Data Structures by Dr Nikolai Bezroukov
* OpenGenus Cosmos - Tempat simpanan algoritma sumber khalayak terbesar

| Kawalan kewibawaan Sunting ini di Wikidata |
| --- |
| Perpustakaan negara | 
* Sepanyol
* Perancis (data)
* Ukraine
* Jerman
* Israel
* Amerika Syarikat
* Jepun
* Republik Czech

 |
| Lain-lain | 
* Aplikasi Berfaset Terminologi Subjek

 |