Какво е алгоритъм?
Това е поредица от правила / инструкции, които са очертани преди да се направи подход за решаване на конкретен проблем, гаранции за решаване на проблема. Например, вземете пример за точка на железопътна порта.
Алгоритъмът трябва да:
- Бъдете добре дефинирани и добре подредени - Инструкциите, предоставени в алгоритъм, трябва да бъдат разбираеми и дефинирани добре.
- Провеждайте недвусмислени операции, т.е. всеки от стъпките на алгоритъм трябва да е достатъчно прост, за да не е необходимо допълнително опростяване
- Имат ефективно изчислима операция.
Източник на изображението: d262ilb51hltx0.cloudfront.net/
Разбиране на алгоритъм
Източник на изображението : goo.gl/images/u76bFe
Има сензор, който усеща пристигането на влак, като изход от който може да бъде 2 резултата
- Влакът пристига
- Влакът не пристига
Резултатът от първия резултат се предава на действие, при което съветва да се затворят вратите, докато резултатът от втория резултат отново се поставя на тест, като се изпраща в първоначалното изявление. Освен това, резултатът от действието в резултат на първото условие е поставен на тест, за да се провери дали влакът е напълно отклонен. Ако отговорът е да, портите се отварят, а ако е отрицателен, портите остават затворени. Ще обсъдим повече това и ще работим със следните теми (Подмножества / Строителни блокове и работа на алгоритъм)
Как Алгоритмът прави работата лесна?
Както знаем, това е план за решаване на проблем. Е, ако нямаме план, нашият подход за решаване на сложен проблем евентуално би се провалил при първия опит и дори ако той реши проблема, шансовете са много по-малко, че той ще бъде оптимално решение на този проблем.
Докато от друга страна, ако създадем алгоритъм преди да решим някой проблем, да речем, че създаваме няколко алгоритми и ги подреждаме въз основа на оптималното решение, което предлагат, това би гарантирало решаването на дадения проблем. Това е причината, където навсякъде, преди да се реши някой проблем, първо се създава алгоритъм.
Топ компании за развитие на алгоритми
Изграждането на страхотен продукт изисква наистина добър дизайн, въпреки че не можем да сравним алгоритъм за два различни проблема. Това, което можем да направим, е да изброим имената на компаниите, доставили няколко отлични продукта в този свят през 21 век:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- валийски
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Вавилон
- Intel
- Флатирон здраве
- Affirm
- парвеню
- Елемент AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Източник: алгоритъмxlab.com/
Подмножествата / Строителни блокове и работа на алгоритъм
През всичките тези години е доказано, че един алгоритъм може да бъде създаден само от три градивни елемента:
- последователност
- селекция
- Повторение
Източник на изображението : https://goo.gl/
Поредицата е поредица от инструкции, които трябва да се спазват, за да се реши проблем и инструкциите трябва да се изпълняват по ред.
Примери
1. Добавяне на две числа
Стъпка 1: Старт
Стъпка 2: Вземете две числа като вход и съхранявайте в променлива като a и b
Стъпка 3: Добавете числото a и b и съхранявайте в променлива c
Стъпка 4: Печат c
Стъпка 5: Спрете.
Селекцията е програма, която ни позволява да избираме изхода от различни действия. Както видяхме по-рано в примера на железопътната порта, имахме условно поле, където се проверяваше дали влакът пристига.
2. Намерете най-големия сред 2 число
Стъпка 1: Старт
Стъпка 2: Вземете две числа като вход и съхранявайте в променлива като a и b
Стъпка 3: Ако a е по-голямо от b тогава
Стъпка 4: Печат a е голям
Стъпка 5: друго
Стъпка 6: Печатът b е голям
S tep 7: Спрете
Повторение или итерация или цикъл са по-малките програми, които се изпълняват няколко пъти, докато условието бъде изпълнено.
3. Ако искаме да изчислим коефициента на число
Стъпка 1 : Старт
Стъпка 2 : Деклариране на променливите n, факториал и i
Стъпка 3 : Инициализирайте променливите, т.е. factorialß1 и iß1
Стъпка 4: Прочетете стойностите на n
Стъпка 5: Повторете стъпките, докато n итерации
фактория <- фактория * i
i <- i + 1
Стъпка 6: Показване на фактор
Стъпка 7: Спрете
Какво можете да направите с алгоритъм?
Това е функция или серия от функции, които решават проблем. Можем да използваме алгоритъм за решаване на най-простия проблем, както и някои от най-трудните проблеми в света. Решаваме, че той е оптимален с помощта на „времевата сложност“. Казано по-просто, времевата сложност е начин за описание на времето на изпълнение на всеки даден алгоритъм. Има минимално време за изпълнение (наречено малко „O“), средно време за изпълнение и най-лошото време за изпълнение O (N) (известно също като голямо „O“). Компютърните учени и софтуерните инженери обичат да мислят за алгоритмите, защото се интересуват от оценка и изграждане на колекции от най-добри практики, така че да не им се налага да започват от нулата при всеки случай на подобен клас проблеми. По-долу е даден пример за различни сложни времена, които човек може да получи, докато решава конкретен проблем. Това също означава, че може да има множество решения на един проблем, но трябва да изберем най-оптималното, като изчислим времевите сложности на алгоритмите. В интервютата ще бъдете помолени да разрешите проблем и освен това ще бъдете помолени да го оптимизирате, т.е. да намалите времето за работа на вашия алгоритъм. Например, може да сте написали код с 2 цикъла „за“ (итерация), но е възможно задачата да бъде постигната само с помощта на един цикъл „за“ (итерация), но не сте били до това решение все пак и трябва да разберете повече!
Източник на изображението: https://goo.gl/
Предимства на алгоритъма
- Това е поетапно представяне на решение на всеки даден проблем, което го прави лесен за разбиране.
- Използва определена процедура.
- Той е независим от всеки език за програмиране, така че е лесно да се разбере за всеки, дори без знания за програмиране.
- Всяка стъпка има своя собствена логическа последователност, следователно е лесно да се отстрани грешката.
- С помощта на алгоритъма проблемът се разгражда на по-малки парчета или стъпки, затова програмистът е по-лесен да го преобразува в действителна програма
Необходими умения
За да се създаде надежден и най-добър алгоритъм за сложност на времето, човек трябва да бъде добро логично мислене и трябва да бъде добър в математиката и да знае поне един обектно-ориентиран език за програмиране. Необходимо е също познаване на структурата на данните.
- Компютри - Научете за масиви, свързани списъци, двоични дървета, хеш-таблици, графики, стекове, опашки, купища и други основни структури от данни.
- Математика - Научете за теорията на множествата, машините с ограничено състояние, регулярните изрази, умножението на матрицата, битовите операции, решаването на линейни уравнения и други важни понятия като пермутации, комбинации, принцип на гълъбовата дупка.
- Big-O & Runtime - Научете какво е Big-O и как да анализирате времената на работа на алгоритмите.
Защо трябва да използваме и защо се нуждаем от алгоритъм?
Човек трябва да използва алгоритъма, тъй като облекчава нашата работа и той ни предоставя най-оптималното решение. Ако не приложим алгоритъм, преди да решим някой сложен проблем, има големи шансове, че ще се ориентираме безрезултатно по отношение на решение. С алгоритъма спестяваме времето си за решаване на проблеми и гарантираме, че оптималността на алгоритъма на решението, както беше казано по-рано, е независима от всеки език за програмиране, така че всеки може да проектира алгоритъм, но за да създаде наистина добър алгоритъм, трябва да бъдете добри в логиката и математиката. Той служи като прототип на решение.
Например, представете си, че имаме две кубици на Рубик пред себе си. Единият от тях можете да използвате алгоритми (например колко пъти или в коя посока да обърнете лице), а другият трябва да намерите своя собствен път. Кой път ще бъде по-бърз? Със сигурност, това ще бъде първото.
Нека вземем интересен пример:
Да речем, че имаме масив от елементи и бихме искали да ги подредим във възходящ ред. Сега има различен алгоритмичен подход към това. Ще се съсредоточим върху времевата сложност на 2 от тях: сортиране на вмъкване и сортиране на сливане
Сортиране на вмъкване: Сортирането на вмъкване е просто сортиране.
(Сложността на времето е O (N 2).)
Сортиране на сортиране: При сортиране на сливане ние сортираме елементите, използвайки метода Разделяне и завладяване.
Времевата сложност е O (N log N).
Това би могло да бъде въздействието, с което ще се сблъскате, ако не следвате и не направите анализ на него.
Обхват на алгоритъма
Чрез изучаването и овладяването на алгоритъм бихте познали изкуството на „Решаване на проблеми“. С добра практика и непрекъснато обучение трябва да можете да решавате сложни проблеми. Той е в основата на проектирането на част от софтуера или кода, тъй като времето на работа на кода е един от най-важните фактори за определяне изпълнението на определена задача. Технически гиганти от света като Google и Facebook преценяват вашите умения за решаване на проблеми и в интервюта повечето от въпросите са свързани с проектиране на алгоритми и решаване на проблеми. Ще бъдете помолени да създадете алгоритъм и да го оптимизирате до възможно най-голяма сложност.
Малко точки:
- Това ще подобри вашите умения за решаване на проблеми, което ще ви накара да се състезавате по-добре на интервюта или онлайн изпити
- Ще намалите времето си за решаване на всеки проблем.
- Почти всички техни гиганти наемат кандидати въз основа на техните по-добри умения за решаване на проблеми
- Човек може да се възползва максимално от език за програмиране, като се научи как да конструира и проектира алгоритъм
Коя е подходящата аудитория за изучаване на технологии на алгоритмите?
От гледна точка на компютърните науки, всеки, който прави малко или повече програмиране, трябва да научи алгоритми. Ако напишете код, който не решава проблема ви, или ако той реши проблема, но използва ресурсите неефективно (например, отнема много време за изпълнение или използва твърде много компютърна памет), тогава вашият код не е оптималният, Но компаниите биха искали техният софтуер или продукти да реагират или да се изпълнят в най-кратки срокове.
Всеки, който разработва нещо, трябва да се научи как да прави анализ на алгоритъм, за да осигури оптимално функциониране на крайния продукт.
Как алгоритъмът ще ви помогне в кариерния растеж?
Дизайнът и анализът на алгоритъм не е роля (специфична), но идва като част от вашата работа и тази част играе жизненоважна роля в разработването на код. Ако създадете добър алгоритъм, ще напишете добри кодове с оптимално решение и в крайна сметка вашият краен продукт, който се доставя на клиентите, превъзхожда. Така че, ако проектирате и / или разработвате софтуер, знанията и опита с структури от данни и алгоритми са от съществено значение. Да кажем, че работите върху продукт за разработка на софтуер, отговорът на него трябва да бъде тестван старателно (разбира се, че бихте искали да проверите времето на работа, преди да предадете кода на екипа за тестване на софтуер) и това не е нещо, което бихте могли да познайте почти точно предварително, но трябва да използвате анализа на алгоритъм, за да изчислите сложността на времето.
заключение
Тъй като видяхме уводно описание на алгоритмите и различните му аспекти и видяхме, че може да има различни подходи за решаване на конкретен проблем, а сложността на Big-O и Time са параметрите, които ни помагат да изберем най-оптималното решение. Като изследвате голям брой алгоритми, вие ще станете силни в анализа на алгоритъма и ще можете да проектирате и изпълнявате анализ по алгоритъм с лекота.
Препоръчителни статии
Това е ръководство за това какво е алгоритми. Тук обсъдихме работата на алгоритмите с примери и различните му аспекти. Можете да разгледате и другите ни предложени статии, за да научите повече -
- Какво е Tableau Server?
- Ръководство за големи анализи на данни
- Какво е SQL Developer?
- Какво е Informatica