Algoritms

[thumbnail|235px|[Ātrās kārtošanas algoritms|Ātrās kārtošanas algoritma animācija]]
**Algoritms** matemātikā un datorzinātnē ir veicamo darbību priekšraksts kāda noteikta rezultāta sasniegšanai vai uzdevuma risināšanai. Algoritmu veido pēc stingriem noteikumiem veicamu darbību virkne, kuras izpildot iegūst vajadzīgo rezultātu. Kā pazīstamus algoritmus var minēt Eiklīda algoritmu un dažādus kārtošanas algoritmus. Algoritmu vizualizēšanai bieži izmanto blokshēmas. Tos var pierakstīt arī pseidokodā, programmēšanas valodā un ar citām metodēm.

Termins ‘algoritms’ ir radies no persiešu matemātiķa Al-Horezmī vārda latīniskās formas *Algorithmi*. Ikdienas dzīvē kā algoritma piemēri var būt recepte, dažādu objektu lietošanas instrukcija un spēļu noteikumi. Pēc algoritmiem vadās arī datori, roboti un citas mašīnas. Ikvienu datorprogrammu veido algoritmi, savukārt algoritmu rakstīšanu šim nolūkam sauc par programmēšanu. Zinātni, kas pēta algoritmus, sauc par algoritmiku.

## Algoritma pieraksta metodes
Algoritmus pieraksta dažādi. Bieži izmanto blokshēmas. Algoritmus var pierakstīt arī pseidokodā, aktivitāšu diagrammā, Nassi–Šneidermana diagrammā, kā programmēšanas valodu un ar citām metodēm.

### Algoritma grafiskais pieraksts (blokshēma)
[thumbnail|160px|[Eiklīda algoritms|Eiklīda algoritma piemērs, izmantojot blokshēmu (angļu valodā)]]
Algoritmu vizualizēšanai bieži izmanto blokshēmas. Katrā blokshēmas elementā tiek izpildīta viena, parasti vienkārša darbība — komanda. Komandai jābūt precīzai un nepārprotamai. Nākamā algoritma komanda bieži vien ir atkarīga no iepriekšējā solī iegūtā rezultāta. Blokshēmā katra algoritma komanda vai darbība ir apzīmēta ar ģeometrisku figūru (bloku). Algoritma sākumu un beigas parasti apzīmē ar elipsi vai taisnstūri ar noapaļotiem stūriem. Ievadi un izvadi apzīmē ar paralelogramu vai taisnstūri. Lēmuma pieņemšanu (nosacījumu) apzīmē ar rombu, savukārt sešstūris apzīmē cikla sākumu. Tajā dažreiz ieraksta skaitu, cik reizes darbība jāatkārto. Jebkuru citu darbību apzīmē ar taisnstūri.

### Nassi–Šneidermana diagramma
Nassi–Šneidermana diagrammas (*Nassi–Shneiderman diagram*) pluss ir tas, ka algoritmu var viegli nolasīt, bet, tiklīdz nepieciešams algoritmu izmainīt, lielu daļu no diagrammas ir nepieciešams pārzīmēt.

### Pseidokods
Pseidokods nav formāls algoritma pieraksta veids. Vizuāli tas atgādina pierakstu kādā no programmēšanas valodām. Pseidokoda sintakse balstās uz tādām programmēšanas valodām kā *[[Pascal]]* vai Beisikā.

## Algoritmu struktūras
Izšķir vairākas algoritmu struktūras pēc komandu izpildes secības. Viena no tām ir lineārā algoritmu struktūra, kur komandas tiek izpildītas tādā secībā, kā uzrakstītas. Šādu algoritmu blokshēmās neparādās sazarošanās elementi. Otra ir sazarotā struktūra, kur komandu izpildes secība ir atkarīga no noteiktu nosacījumu izpildes vai neizpildes. Vēl izdala cikliskās struktūras, kur algoritmā ir elements, kas algoritma izpildes laikā tiek izpildīts atkārtoti vairākas reizes. Cikliskos algoritmus sīkāk iedala vēl algoritmos, kur darbību atkārtoto reižu veikšanas skaits ir zināms, un algoritmos, kur darbības atkārtoti tiek veiktas līdz tiek iegūts vēlamais rezultāts.

## Skatīt arī
* Ģenētiskais algoritms

## Atsauces

## Ārējās saites
* 
*