Drukarnia.BLOG

Жадібні алгоритми. Частина 1

Задача про розклад уроків 📚

Уявімо, що у нас є навчальний клас, у якому треба провести якомога більшу кількість уроків.

Провести всі уроки в класі не вийде, адже деякі з них пересікаються за часом.

Основною умовою є проведення у класі якомога більше уроків. Як обрати уроки, щоб отриманий набір виявився найбільшим із усіх можливих?
На допомогу приходить жадібний алгоритм. Працює він наступним чином:
1. Обрати урок, який закінчується раніше за всі інші. Це перший урок, який буде проведено в класі.

  1. Наступним кроком необхідно обрати урок, який починається по завершенню першого уроку. І знову необхідно обрати урок, який закінчується раніше за інші. Він буде другим у розкладі.

  2. Продовжувати виконувати 2 крок алгоритму допоки не закінчиться список уроків - і ви отримаєте відповідь!

Спробуємо використати алгоритм на нашому прикладі. Ми можемо побачити, що малювання закінчується раніше за всі інші уроки ( о 10:00), тому його ми й оберемо першим уроком.

Тепер необхідно знайти наступний урок, який починається після 10:00 і закінчується раніше за всі інші.

Англійська мова відпадає, бо її початок пересікається з малюванням. Проте математика підходить. Нарешті, інформатика має перетин із математикою, а ось музика може бути третім уроком.

Отже, розклад матиме наступний вигляд:

Жадібний алгоритм достатньо простий: на кожному кроці він обирає оптимальний варіант. У нашому прикладі, він обирає предмет, який завершиться раніше за всі інші. В технічній термінології: на кожному кроці обирається локально-оптимальне рішення, а, як результат, ви отримуєте глобально-оптимальне рішення. Цей алгоритм знаходить оптимальне рішення задачі зіставлення розкладу.

Articles about local business and interesting people:

Share your ideas in a new publication.
We are waiting for your longread!
@yllbnts

@yllbnts

@yllbnts

3Longreads
373Views
5Followers
On Drukarnia since March 11 2024

More from the author

You may also be interested in:

Comments (0)

Support the author first.
Write a comment!

You may also be interested in: