Що таке алгоритм?
Це послідовність правил / інструкцій, які викладені перед тим, як зробити підхід до вирішення будь-якої конкретної проблеми, гарантії вирішення проблеми. Наприклад, візьмемо приклад пункту залізничних воріт.
Алгоритм повинен:
- Будьте чітко визначені та впорядковані. Інструкції, надані в алгоритмі, повинні бути зрозумілими та визначеними.
- Однозначні операції, тобто кожен з кроків алгоритму повинен бути досить простим, щоб він не потребував подальшого спрощення
- Мати ефективно обчислювану операцію.
Джерело зображення: d262ilb51hltx0.cloudfront.net/
Розуміння алгоритму
Джерело зображення : goo.gl/images/u76bFe
Є датчик, який відчуває прибуття поїзда, вихід якого може мати 2 результати
- Поїзд прибуває
- Поїзд не прибуває
Результат першого результату передається дії, де він радить закрити ворота, тоді як результат другого результату знову буде перевірений, відправивши його в початковий вислів. Крім того, результат дії, що був результатом першої умови, піддається тестуванню, щоб перевірити, чи поїзд повністю від'їхав. Якщо відповідь "так", ворота відкриваються, а якщо вони негативні, то ворота залишаються закритими. Ми будемо обговорювати це більше і працювати з наступними темами (Підмножини / Створення будівельних блоків та робота алгоритму)
Як алгоритм робить роботу легкою?
Як ми знаємо, це план вирішення проблеми. Ну, якщо у нас немає плану, наш підхід до вирішення складної проблеми, можливо, буде збитий з першої спроби, і навіть якщо він вирішить проблему, шанси набагато менше, що це буде оптимальним рішенням цієї проблеми.
Хоча, з іншого боку, якщо ми створимо алгоритм перед тим, як вирішити будь-яку проблему, скажімо, ми створимо кілька алгоритмів і розберемо їх на основі оптимального рішення, яке вони надають, це гарантувало б вирішення даної проблеми. Це причина, чому скрізь, перш ніж вирішити будь-яку проблему, спочатку створюється алгоритм.
Провідні компанії з розробки алгоритмів
Створення чудового продукту вимагає дійсно гарного дизайну, хоча ми не можемо порівняти алгоритм для двох різних проблем, але ми можемо зробити, щоб перелічити назви компаній, які постачали в цей світ чудові продукти протягом 21 століття:
- DeepMind
- Байду
- Nvidia
- CloudWalk
- SenseTime
- Темний слід
- Кембрійський
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Зебра медичного зору
- Вавилон
- Intel
- Флатірон Здоров'я
- Підтверджуйте
- На початку
- Елемент ІІ
- CloudMinds
- DataRobot
- Анкі
- Цимерген
- 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 циклами "for" (ітерація), але можливо, що завдання можна досягти лише за допомогою одного циклу "for" (ітерація), але ви не були до цього рішення ще й вам потрібно розібратися більше!
Джерело зображення: https://goo.gl/
Переваги алгоритму
- Це поетапне подання рішення будь-якої заданої проблеми, що дозволяє легко зрозуміти.
- Він використовує певну процедуру.
- Він не залежить від будь-якої мови програмування, тому його легко зрозуміти для кожного, навіть не знаючи програмування.
- Кожен крок має свою логічну послідовність, тому легко налагоджувати.
- За допомогою алгоритму проблема розбивається на менші шматки або кроки, отже, програмісту простіше перетворити його на фактичну програму
Необхідні навички
Для того, щоб розробити надійний і найкращий алгоритм складності в часі, треба добре роздумувати логікою, мати математику і знати хоча б одну об'єктно-орієнтовану мову програмування. Знання структури даних також необхідні.
- Комп'ютери - Дізнайтеся про масиви, пов'язані списки, двійкові дерева, хеш-таблиці, графіки, стеки, черги, купи та інші основні структури даних.
- Математика - Дізнайтеся про теорію множин, машини з кінцевим станом, регулярні вирази, матричне множення, бітові операції, розв’язування лінійних рівнянь та інші важливі поняття, такі як перестановки, комбінації, принцип голубої свердловини.
- Big-O & Runtime - Дізнайтеся, що таке Big-O і як аналізувати час роботи алгоритмів.
Навіщо нам користуватися і навіщо нам потрібен алгоритм?
Слід використовувати алгоритм, оскільки він полегшує нашу роботу, і він пропонує нам найбільш оптимальне рішення. Якщо ми не застосуємо алгоритм перед тим, як вирішити будь-яку складну проблему, є велика ймовірність того, що ми підемо без орієнтування в плані рішення. За допомогою алгоритму ми економимо свій час на вирішенні проблем і забезпечуємо оптимальність алгоритму рішення, як було сказано раніше, незалежно від будь-якої мови програмування, тому кожен може розробляти алгоритм, але для того, щоб створити дійсно хороший алгоритм, слід бути хорошим логікою та математикою. Він служить прототипом рішення.
Наприклад, уявіть, що перед нами два кубики Рубіка. В одному з них вам дозволено використовувати алгоритми (наприклад, скільки разів або в якому напрямку повернути обличчя), а інший вам потрібно знайти власний шлях. Який шлях буде швидшим? Звичайно, це буде першим.
Візьмемо цікавий приклад:
Скажімо, у нас є масив елементів, і ми хотіли б сортувати їх у порядку зростання. Зараз існує інший алгоритмічний підхід до цього. Ми зупинимося на часовій складності 2 з них: сортування вставки та сортування об'єднань
Сортування вставки: Сортування вставки - це просте сортування.
(Складність часу дорівнює O (N 2).)
Сортування сортування: у сортуванні злиття ми сортуємо елементи за допомогою методу Ділення та підкорити.
Часова складність становить O (N log N).
Це може бути наслідком, з яким ви зіткнетесь, якщо не будете дотримуватися та не проводити аналіз на нього.
Область застосування алгоритму
Вивчаючи та опановуючи алгоритм, ви б знали мистецтво «Розв’язування задач». Маючи добру практику та безперервне навчання, ви зможете вирішувати складні проблеми. Це основа для розробки певного програмного забезпечення або коду, оскільки час роботи коду є одним з найважливіших факторів при визначенні виконання певного завдання. Технічні гіганти світу, такі як Google та Facebook, оцінюють ваші навички вирішення проблем, а в інтерв'ю більшість питань стосуються розробки алгоритму та вирішення проблем. Вам запропонують розробити алгоритм і оптимізувати його до максимально можливого часу складності.
Кілька пунктів:
- Це покращить ваші навички вирішення проблем, що призведе до того, щоб ви краще змагалися на співбесіді та онлайн-іспитах
- Ви скоротите свій час на вирішення будь-якої проблеми.
- Майже всі технічні гіганти наймають кандидатів на основі їх кращих навичок вирішення проблем
- Можна максимально використати мову програмування, навчившись будувати та проектувати алгоритм
Хто є потрібною аудиторією для вивчення алгоритмних технологій?
З точки зору інформатики, кожен, хто займається програмуванням мало чи більше, повинен вивчати алгоритми. Якщо ви пишете код, який не вирішує вашу проблему, або якщо він вирішує проблему, але неефективно використовує ресурси (наприклад, це запускає багато часу або використовує занадто багато пам'яті комп'ютера), то ваш код не є оптимальним . Але компанії хочуть, щоб їх програмне забезпечення чи продукти реагували або виконувались в найкоротші терміни.
Кожен, хто щось розробляє, повинен навчитися робити аналіз за алгоритмом, щоб забезпечити оптимальне функціонування кінцевого продукту.
Як алгоритм допоможе вам у кар’єрному зростанні?
Розробка та аналіз алгоритму не є роллю (специфічною), але він є частиною вашої роботи, і ця частина відіграє важливу роль у розробці коду. Якщо ви розробляєте хороший алгоритм, ви будете писати хороші коди з оптимальним рішенням і, зрештою, ваш кінцевий продукт, який поставляється клієнтам, перевершує. Отже, якщо ви розробляєте та / або розробляєте програмне забезпечення, то знання та досвід роботи зі структурами даних та алгоритмами є важливими. Скажімо, ви працюєте над продуктом розробки програмного забезпечення, відповідь на нього слід перевірити ретельно (звичайно, ви хочете перевірити час роботи, перш ніж передавати код команді тестування програмного забезпечення), і це не те, що ви могли б заздалегідь вгадайте майже точно, але вам потрібно використовувати аналіз алгоритму для обчислення часової складності.
Висновок
Отже, як ми бачили вступний опис алгоритмів та його різних аспектів, ми бачили, що для вирішення певної проблеми може бути різний підхід, а складність Big-O та Time - це параметри, які допомагають нам вибрати найбільш оптимальне рішення. Досліджуючи велику кількість алгоритму, ви принципово зміцнитеся в аналізі алгоритму, і ви зможете легко розробляти та запускати аналіз за алгоритмом.
Рекомендовані статті
Це було керівництвом щодо того, що таке алгоритми. Тут ми обговорили роботу алгоритмів із прикладами та різні його аспекти. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- Що таке сервер Tableau?
- Посібник з аналізу великих даних
- Що таке SQL Developer?
- Що таке Informatica