Алгоритъм

от Уикипедия, свободната енциклопедия
 

Алгоритъм (от името на учения ал–Хорезми) е термин от математиката, информатиката, лингвистиката и други области, с който се означава крайна поредица от инструкции или изрично описание на постъпкова процедура за решаване на даден проблем, често свързан с изчисление или обработка на данни. По-строго казано, алгоритъмът е ефективен метод, който при даден списък от коректно дефинирани (описани) команди за изпълнение на задача и зададено едно начално състояние преминава през точно дефинирана поредица от последователни състояния и завършва в едно крайно състояние. Преходът между състоянията не е задължително да е детерминиран (еднозначно определен): някои алгоритми, известни като вероятностни алгоритми, съдържат елемент на случайност.

Частична формализация на понятието започва с опитите да се реши 10-тия проблем на Хилберт, „Задача за разрешимост на диофантово уравнение“, поставен от Давид Хилберт през 1900 година на Втория световен конгрес по математика в Париж.[1] Последващите формализации представляват опити да се дефинира „ефективна изчислимост“ (Клини 1943:274) или „ефективен метод“ (Росър 1939:225); включват рекурсивните функции на Ербран-Гьодел-Клини от 1930, 1934 и 1935 година, ламбда смятането на Алонсо Чърч от 1936, „Формулировка 1“ на Емил Пост от 1936, и машината на Тюринг от 1936-7 и 1939 година.

 

Съдържание

за повече инфо за основите на алгоритмите, блокови схеми, разяснения и други можете да потърсите инфо в интернета

>>>>>>>>>>>>> много добър урок за алгоритми, много важна информация за начина на съставяне, видовете блокове и друга информация за този >>>>>>>>>>> урок

http://antim1.com/

>>>>>>>>>>>> инфо от викито -

https://bg.wikipedia.org/wiki/

>>>>>>>>>>>>>>

http://tu-utc.com/Webpages

>>>>>>>>>>>>

http://1001zadachi.com/switch

>>>>>>>>>>>

http://it.souprovadia.info/?q=node/87

>>>>>>>>>> файл за сваляне

http://blog.karadev.net/file

>>>>>>>>>> файл за сваляне

http://blog.karadev.net/file

за файловете ще ви трябва програмата acrobat reader или друга която чете файловете *.pdf , примерно foxit reader, потърсете в интернета

І. Алгоритъм - понятие, свойства, представяне.
 
1. Понятие
 
Алгоритъм представлява всяко точно и еднозначно описана крайна последователност от действия над определени входни данни, която винаги води до резултат, който е във функционална зависимост от стойностите на входните данни.
Ако така описаната последователност завършва не винаги, а само за определена област от стойности на входните данни, такъв алгоритъм се нарича частичен алгоритъм или процедура.

2. Свойства на алгоритмите

Дискретност – всеки алгоритъм трябва да се състои от отделни, разграничени по време една от друга стъпки, всяка от които се извършва за крайно време.
    Детерминираност – Резултатът от действията върху данните и посочването на следващото стъпка трябва да бъдат еднозначно определени от действията, извършвани в текущия момент.
    Масовост – процедурата трябва да дава резултат на за краен брой съчетания на входните данни, а за едно потенциално безкрайно множество от входни данни.
    Резултатност – процедурата трябва винаги да дава резултат, ако входните данни принадлежат на допустимото подмножество.
    Крайност – процедурата трябва да завършва с резултат за краен брой стъпки.

Пример: Алгоритъм на Евклид за намиране на най-големият общ делител на две цели положителни числа p и q.

Описание:

Входни данни: p и q, p>0 и q>0;

Резултат: да се намери най-големият общ делител на p и q;

Процедура:

стъпка1: r = остатъка от p/q;

стъпка2: Ако r = 0, се предполага, че делителя е равен на q и край. В противен случай p = q, q = r и се преминава към стъпка1.

3. Видове алгоритми

Според последователността на действията, които се изпълняват алгоритмите биват:
---------------------------
Линейни – характеризират се с последователен ред на изпълнение на действията, който винаги е един и същ, независимо от набора данни, за които се прилага.

Пример: Да се определи обиколката на триъгълник със страни a, b и c.

Входни данни: a, b и c, a>0, b>0, c>0;

Резултат: P – обиколка;

Процедура:

стъпка1: задава се стойност за a;

стъпка2: задава се стойност за b;

стъпка3: задава се стойност за c;

стъпка4: P = a+b+c;
-------------------------------
Разклонени – В практиката често присъстват ситуации, при които трябва да се вземе решение и да се изпълни едно или друго действие. За да се отразява по-точно действителността и да се описва се налага въвеждането на разклонени алгоритми. Разклонението дава възможност да се избере една от две възможности за продължаване на изчислителния процес.

Пример: Деление на две числа x и y.

Величини: x, y;

Резултат: z;

Действия:

стъпка1: задава се стойност за x;

стъпка2: задава се стойност за y;

стъпка3: Ако y = 0 делението е невъзможно. В противен случай z = x/y.
------------------------
Циклични – Тези при които една стъпка или група от стъпки се изпълняват многократно.

Пример: Намиране на сумата на числата от 1 до 100.

Данни: Целите числа от 1 до 100 и br;

Резултат: S – сумата;

Действия:

стъпка1: S = 0;

стъпка2: br = 1;

стъпка3: S = S+br;

стъпка4: Ако стойността на брояча е по.малка или равна на 100, стойността на брояча се увеличава с еденица и се преминава към стъпка3. В противен случай - край;
---------------------------
Рекурсивни – Казва се, че един обект е рекурсивен, ако той частично се съдържа в себе си или е дефиниран чрез себе си.
Примери:

Дефиниране на естествени числа:

а) 1 е естествено число;

б) приемникът на естественото число е естествено число;

Дървовидни структури:

а) 0 е дърво (наречено празно);

б) ако t1 и t2 са дървета, то е дърво (начертано на обратно);

n!

а) 0! = 1;

б) ако n>0, то n! = n*(n-1)!;

Евристични – Това е алгоритъм, който притежава следните свойства:

води до решение, макар и не оптимално;

може да бъде реализиран по-просто в сравнение с алгоритъма на оптималното решение;

Използват се различни критерии и подходи при търсенето на решение.

Вероятностни – Поредното решение се приема с някаква вероятност между няколко възможности.

 Паралелни – Имат два основни блока, които ги отличават от последователните. Това са блок “разпаралелване”, чрез който се задават за изпълнение паралелни блокове, и блок “обединяване”, който обединява резултатите след паралелното изпълнение, преди процесът да се разпаралели отново.

Много задачи се подават на паралелна обработка. Такива са сортиране, матрични изчисления, изчисления на изрази и полиноми.

 4. Описание на алгоритмите

Съществуват три подхода при записване на алгоритмите: текстови, графичен и посредством формални езици. Всеки един от трите подхода има своите предимства и недостатъци.

a)Текстови подход
При текстовия подход се описват словесно последователност от стъпки, които трябва да се изпълнят за да се реши задачата.

Всички стъпки са номерирани според реда на тяхното изпълнение. Ако се налага нарушаване на този ред (за реализация на разклонения или цикли) се описва изрично коя е следващата стъпка.

Пример:

Намиране корените на едно квадратно уравнение y = ax2+bx+c.

Стъпки:

1. Изчислява се D=b2-4ac.

    Проверява се знака на D. Ако D<0 се преминава към точка 3. В противен случай се изчислява x1= (-b+√D) / (2a), x1= (-b-√D) / (2a).
    Прекратява се изчисляването.


b) Чрез формални езици (езици за програмиране)
 
Пример

Да се напише програма, която въвежда n на брой числа от клавиатурата и намира сумата само на онези от тях, които са  положителни. Описана е с блоковата схема на фиг.5.

 

4. Описание на алгоритмите чрез езиците за програмиране

пример - кодът е написан на езика за програмиране С и/или С++ - чете се СИ / СИ++

#include <iostream.h>

void main(void)

{ int i , n;

  float x , s;   

  do

{ cout << ” n= ” ;  cin >> n;  }

while (n < 1 || n > 1000);

for ( s=0 , i=1 ; i <= n ; i++ )

  { cout << ”x=” ;  cin>>x ;

       if (x > 0) s+= x; }

  cout << ”s=” << s << ”\n”; }

Определение - оптоелектрониката е част от цялостната електроника развиваща и поддържаща електронни елементи и схеми работещи със светлината във видимия и невидимия спектър.

оптоелектронни елементи са всички полупроводникови и резистивни елементи които реагират на количеството светлина попаднало във тях.

различните видове отпоелектронни елементи могат да бъдат следните:

фото транзистори - повече инфо - https://bg.wikipedia.org/wiki/

фото резистори - повече инфо - https://bg.wikipedia.org/wiki/

фото диоди - повече инфо - https://bg.wikipedia.org/wiki/

лазерни светодиоди - повече инфо - https://bg.wikipedia.org/wiki/ още един линк - https://ru.wikipedia.org/

- червен спектър /червен лъч/ - редрей - redray

- син спектър - блурей спектър /син лъч/ - blueray

инфрачервени светодиоди - повече инфо - https://bg.wikipedia.org/wiki/

обикновенни светодиоди - повече инфо - https://blog.vikiwat.com/tag/led1/

още инфо за светодиодите от викито - https://bg.wikipedia.org/wiki/

фото тиристори

фото симистори

оптрони - https://bg.wikipedia.org/wiki/ още инфо - https://blog.vikiwat.com/tag/