Алгоритми

1. Понятие за алгоритъм
Понятието "алгоритъм" е основно понятие в науката информатика. То е въведено от Евклид, наречено е така в чест на арабския математик Ал Хорезми (живял през 9 век).
Ал Хорезми е допринесъл много за разпространение на записването на числата с помощта на арабски цифри и е създал начините за смятане с арабски цифри.
Алгоритмите дават възможност на изпълнителя (човек или компютър) да решава сложни задачи, без дори да ги познава в детайли, следвайки система от точни и еднозначни указания за действие.
Определение: Алгоритъмът е процес, състоящ се от краен брой, последователни стъпки, наречени елементарни действия (операции), над определен набор от данни, наречени входни данни, с цел получаване на търсено решение.
2. Свойства на алгоритмите
2.1. Определеност (детерминираност) - свойството определеност на алгоритъма се отнася до съдържанието на отделните действия в него. Тези действия трябва да бъдат ясно, точно и недвусмислено определени. Това свойство на алгоритмите създава гаранция, че при многократното им прилагане над едни и същи входни данни винаги ще се получават, едни и същи резултати, независимо от изпълнителя.
2.2. Масовост - свойството масовост на алгоритъма изисква той да се създава, не за да реши само една конкретна задача, а за да намира решение на цял един клас от еднотипни задачи. Свойството масовост е свързано с дефиниционната област на входните данни, за които алгоритъма е в сила. Колкото тази област е по-голяма, толкова алгоритъмът е по – мощен, по – силен.
2.3. Крайност и резултатност - тези две свойства изискват действията по алгоритъма да приключват след краен брой стъпки (операции) и да дават поне един резултат.
2.4. Дискретност - свойството дискретност на алгоритъма означава, че всяко действие, като част от описанието на алгоритъма, трябва да се изпълнява в определен интервал от време, да има своя предшественик и наследник. Казано по друг начин – действията в алгоритъма се изпълняват на стъпки и едва след приключване на дадена стъпка се преминава към точно определена следваща стъпка.
2.5. Яснота - яснотата (разбираемостта) на алгоритъма означава, че изпълнителят може да извърши всяка текуща стъпка от алгоритъма и да определи еднозначно коя е следващата стъпка, която трябва да изпълни.
2.6. Формалност - от изпълнителя не се изисква да знае каква цел се преследва с изпълнение на алгоритъма – той трябва да работи формално, да изпълнява указанията, докато достигне до указание за край. Свойството формалност позволява изпълнителят на един алгоритъм да бъде и автомат (лишен от разум и от възможността да осъзнава извършваната от него работа).
2.7. Ефективност - от алгоритмите често се изисква нещо в повече – да са ефективни, т.е. да се изпълняват за приемлив брой стъпки и да не се налага да ползват при работата си прекалено много място (памет) за съхраняване на данните. Важна задача на компютърната информатика е да създава и предлага ефективни алгоритми.
Не може да се посочи границата между ефективни и неефективни алгоритми и в какво се измерва (секунди, минути, часове или дни) – всичко зависи от конкретната задача и условия.
