Жадные алгоритмы | Эффективные алгоритмы | Александр Куликов | Лекториум
📌 ЖАДНЫЕ АЛГОРИТМЫ? 🍫 💡 Что это? Жадный алгоритм — это такой метод решения задач, где на каждом шаге выбирается локально лучший вариант, который кажется наиболее выгодным прямо сейчас. Но жадность не всегда приводит к глобально лучшему решению. 🔍 Пример из жизни Представь, что ты собираешь рюкзак в поход, а места в нём мало. Ты решаешь брать предметы, которые дают максимум пользы за минимальный вес. Это и есть жадный подход. 📖 Пример на Python: сдача монетами Задача: у вас есть монеты номиналом 1, 5, 10 рублей. Нужно набрать минимальное количество монет, чтобы получить сумму, например, 28 рублей. def greedy_coins(amount, coins): result = [] for coin in sorted(coins, reverse=True): # Сортируем монеты по убыванию while amount >= coin: amount -= coin result.append(coin) return result coins = [1, 5, 10] print(greedy_coins(28, coins)) # Вывод: [10, 10, 5, 1, 1, 1] ⚡️ Почему это работает? В этой задаче жадный алгоритм работает идеально, потому что монеты устроены так, что на каждом шаге можно действительно выбрать лучшее. 🤔 Где ещё используется? • Алгоритмы сжатия данных (например, код Хаффмана). • Поиск кратчайшего пути (алгоритм Дейкстры). • Планирование задач. ⚠️ Когда жадность подводит? Если выбрать локально лучший вариант — это не всегда приводит к оптимальному решению. Например, при подборе маршрута с нестандартными условиями. 💡 Задачка для тебя: Как бы ты использовал жадный алгоритм, чтобы выбрать меньшее количество учебников для подготовки, если у каждого есть “вес” (объём материала)? 💬 Поделись своими идеями в комментариях! #информатика
Структуры данных: «жадные» алгоритмы
Источник: Nuances of Programming Предыдущая часть: “Структуры данных: асимптотический анализ” Алгоритм предназначен для достижения оптимального решения задачи. В подходе с жадным алгоритмом оно выбирается из заданной предметной области решений. Причём берутся ближайшие, кажущиеся оптимальными решения — отсюда и название «жадный». В «жадных» алгоритмах ведётся поиск локально оптимального решения, которое в итоге может привести к нахождению глобально оптимальных решений, но обычно глобально оптимальными они не оказываются...