Algoritm

Algoritm on täpne ja üheselt mõistetav eeskiri, samm-sammuline juhend mingi konkreetse töö täitmiseks või ülesande lahendamiseks. Algoritm eeldab, et kõik teadmine ülesande lahendamiseks on selles esitatud.

Algoritmi nõuded:

  1. sammude jadas on lõplik arv samme,

  2. iga samm on üheselt mõistetav ja täidetav,

  3. ülesanne on lahendatud, kui kõik etteantud sammud on täidetud,

  4. algoritm peab olema efektiivne, sh töötama erinevate sisendite korral.

Mõne ülesande jaoks tuleb algoritm endal välja mõelda. Kui see kord on tehtud, piisab ülesande lahendamiseks vaid algoritmi kui samm-sammulise juhendi järgmisest.

Algoritmi esitusviisid

Algoritme saab esitada paljudel viisidel. Üks lihtsamaid algoritmide esitusi on matemaatiline valem (formaalne esitus). Nt S = a x b, kus S on ristüliku pindala, a ristküliku alus ja b ristküliku kõrgus.

Matemaatilise valemi kõrval võib algoritm olla esitatud veel:

  • loomuliku keele lausetena - samm-sammuline juhend lausetega. Nt koogi valmistamise retsept või õppeaine sooritamise nõuded.

  • vooskeemina (flowchart) - graafiline diagramm algoritmi või protsessi esitamiseks. Vooskeemideks võivad olla plokiskeemid või kasutusdiagrammid (activity diagrams). Vooskeemid sisaldavad erinevaid sümboleid nagu alguse- ja lõpu-, sisendi- ja väljundi-, siirde-, valiku- ja kordusesümbolit. Nt vooskeemiga sobib hästi näidata toiminguid pangaautomaadis.

  • programmikoodina - hea viis algoritm konkreetse rakenduse jaoks implementeerimiseda. Nt funktsioon, mis leiab etteantud arvujadast suurima arvu.

  • pseudokoodina - kasutab tavalist teksti ja sümboleid, mis on sarnased programmeerimiskeele ning disktreetse matemaatika sümbolitele. Pseudokood on algoritmide kirjeldamiseks kasulik eelkõige seetõttu, et see on inimloetav ja seda saab hõlpsasti teisendada programmeerimiskeelde. Pseudokoodi esitus on subjektiivne. Üks põhjus võib olla selles, et mõni pseudokoodi esitaja kasutab elemente Pyhthonist, mõni Javast, mõni aga hoopis Pascalist.

Kuigi algoritmi mõiste on keskne just arvutiteaduses, leiab see kasutust paljudes teisteski valdkondades nagu keemia, füüsika, bioloogia, muusika, meditsioon, krüptograafia, telekommunikatsiooni, finantsvaldkond, kujutav kunst jne.