Що таке алгоритм?
Алгоритм — це покрокова процедура вирішення проблеми. Хороший алгоритм повинен бути оптимізований з точки зору часу та простору. Різні типи проблем вимагають різних типів алгоритмічних методів, які розв’язуються найбільш оптимізованим способом. Існує багато типів алгоритмів, але найважливіші та основні алгоритми, які ви повинні обговорити в цій статті.
двозв'язаний список
1. Алгоритм грубої сили :
Це найосновніший і найпростіший тип алгоритму. Алгоритм грубої сили — це простий підхід до проблеми, тобто перший підхід, який приходить нам на думку, коли ми бачимо проблему. Технічно це схоже на ітерацію всіх доступних можливостей для вирішення цієї проблеми.
приклад:
Якщо є блокування 4-значного PIN-коду. Цифри, які потрібно вибрати з 0-9, потім грубою силою спробують одну за одною всі можливі комбінації, наприклад 0001, 0002, 0003, 0004 і так далі, доки ми не отримаємо правильний PIN-код. У гіршому випадку знадобиться 10 000 спроб, щоб знайти правильну комбінацію.
2. Рекурсивний алгоритм :
Цей тип алгоритму базується на рекурсія . У рекурсії проблема вирішується шляхом розбиття її на підпроблеми одного типу та виклику себе знову і знову, доки проблема не буде розв’язана за допомогою базової умови.
Деякі поширені проблеми, які вирішуються за допомогою рекурсивних алгоритмів Факторіел числа , Ряд Фібоначчі , Ханойська вежа , DFS для Graph і т.д.
а) Алгоритм розділяй і володарюй :
В алгоритмах «Розділяй і володарюй» ідея полягає в тому, щоб розв’язати задачу у двох розділах, перший розділ ділить проблему на підпроблеми одного типу. Другий розділ полягає в тому, щоб розв’язати меншу задачу незалежно, а потім додати об’єднаний результат для отримання остаточної відповіді на проблему.
Деякі поширені проблеми, які вирішуються за допомогою алгоритмів «Розділяй і володарюй». Двійковий пошук , Сортування злиттям , Швидке сортування, Множення матриці Штрассена і т.д.
б) Алгоритми динамічного програмування :
Цей тип алгоритму також відомий як техніка запам'ятовування оскільки тут ідея полягає в тому, щоб зберегти попередньо обчислений результат, щоб уникнути його обчислення знову і знову. У динамічному програмуванні розділіть складну проблему на менші перекриваються підпроблеми і зберегти результат для подальшого використання.
За допомогою алгоритму динамічного програмування можна вирішити наступні задачі Проблема ранця , Зважене планування завдань , Алгоритм Флойда Воршелла і т.д.
в) Жадібний алгоритм :
У Greedy Algorithm рішення будується частина за частиною. Рішення вибрати наступну частину приймається на основі того, що вона дає негайну користь. Він ніколи не розглядає вибір, який був зроблений раніше.
Ось деякі поширені проблеми, які можна вирішити за допомогою алгоритму Greedy Алгоритм найкоротшого шляху Дейкстри , Алгоритм Прима , Алгоритм Крускала , Кодування Хаффмана і т.д.
г) Алгоритм зворотного відстеження :
В алгоритмі зворотного відстеження проблема розв’язується поетапним способом, тобто це алгоритмічна техніка для рекурсивного розв’язання задач, намагаючись побудувати рішення поетапно, по частині за раз, видаляючи ті рішення, які не задовольняють обмежень проблеми в будь-який час. момент часу.
Деякі типові проблеми, які можна вирішити за допомогою алгоритму зворотного відстеження: Гамільтонів цикл , Задача М-розфарбування , N Queen Проблема , Щур в лабіринті Проблема і т.д.
логічне значення для рядка java
3. Рандомізований алгоритм :
У рандомізованому алгоритмі ми використовуємо випадкове число. Воно допомагає визначити очікуваний результат. Рішення вибрати випадкове число, щоб воно принесло негайну користь
Деякі поширені проблеми, які можна вирішити за допомогою рандомізованого алгоритму, це Quicksort: у Quicksort ми використовуємо випадкове число для вибору опорної точки.
4. Алгоритм сортування :
Алгоритм сортування використовується для сортування даних у порядку зростання або спадання. Він також використовується для впорядкування даних ефективним і корисним способом.
Деякі поширені проблеми, які можна вирішити за допомогою алгоритму сортування, це бульбашкове сортування, сортування вставкою, сортування злиттям, сортування вибором і швидке сортування, які є прикладами алгоритму сортування.
5. Алгоритм пошуку :
Алгоритм пошуку — це алгоритм, який використовується для пошуку конкретного ключа в конкретних відсортованих або несортованих даних. Деякі поширені проблеми, які можна вирішити за допомогою алгоритму пошуку, — двійковий пошук або лінійний пошук — один із прикладів алгоритму пошуку.
6. Алгоритм хешування :
Алгоритми хешування працюють так само, як алгоритм пошуку, але вони містять індекс із ідентифікатором ключа, тобто пару ключ-значення. У хешуванні ми призначаємо ключ певним даним.
Деякі типові проблеми можна вирішити за допомогою алгоритму хешування під час перевірки пароля.