Algoritma

**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ī () 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
# Mempunyai permulaan
# Mempunyai input (dalam sesetengah kes, tiada input) dan output
# Mempunyai proses
# 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

### Sumber utama
* 
* 

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