Жадібний алгоритм

У цьому підручнику ви дізнаєтесь, що таке жадібний алгоритм. Крім того, ви знайдете приклад жадібного підходу.

Жадібний алгоритм - це підхід до вирішення проблеми шляхом вибору найкращого варіанту, доступного на даний момент, не турбуючись про майбутній результат, який він принесе. Іншими словами, найкращий вибір на місцях спрямований на досягнення найкращих у світі результатів.

Цей алгоритм може бути не найкращим варіантом для всіх проблем. У деяких випадках це може привести до неправильних результатів.

Цей алгоритм ніколи не повертається назад до прийнятого рішення. Цей алгоритм працює у підході зверху вниз.

Головною перевагою цього алгоритму є:

  1. Алгоритм простіше описати .
  2. Цей алгоритм може працювати ефективніше, ніж інші алгоритми (але, не у всіх випадках).

Доступне рішення

Доцільним рішенням є рішення, яке забезпечує оптимальне вирішення проблеми.

Жадібний алгоритм

  1. Для початку набір рішень (що містить відповіді) порожній.
  2. На кожному кроці елемент додається до набору рішень.
  3. Якщо набір рішень здійсненний, поточний елемент зберігається.
  4. В іншому випадку пункт відхиляється і більше ніколи не розглядається.

Приклад - Жадібний підхід

 Проблема: Ви повинні змінити суму, використовуючи якнайменшу кількість монет. Сума: $ 28 Доступні монети: монета $ 5 монета $ 2 монета $ 1 монета

Рішення:

  1. Створіть порожній набір рішень = ().
  2. монети = (5, 2, 1)
  3. сума = 0
  4. Поки сума ≠ 28, зробіть наступне.
  5. Виберіть монету C з таких монет, яка має суму + C <28.
  6. Якщо С + сума> 28, рішення не повертається.
  7. В іншому випадку сума = сума + C.
  8. Додайте C до набору рішень.

До перших 5 ітерацій набір рішень містить 5 монет на 5 доларів. Після цього ми отримуємо монету в 1 долар і, нарешті, 1 монету в 1 долар.

Програми жадібного алгоритму

  • Сортування вибору
  • Проблема рюкзака
  • Мінімальне дерево, що охоплює
  • Проблема коротшого шляху з одним джерелом
  • Проблема планування роботи
  • Алгоритм мінімального розмаху дерева Прима
  • Алгоритм мінімального обширного дерева Крускала
  • Алгоритм мінімального розмаху дерева Дейкстри
  • Кодування Хаффмана
  • Алгоритм Форда-Фулькерсона

Цікаві статті...