intermediate
Жадные алгоритмы
Выбирайте locally optimal moves только когда exchange argument или invariant доказывает корректность.
Greedy algorithms делают locally best choice и не возвращаются к нему. Они привлекательны из-за маленькой реализации, но correctness требует доказательства: exchange argument, staying-ahead invariant или matroid-like property, делающая local choices безопасными.
Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.
На интервью: Ожидайте interval scheduling, coin-like choices, jump games и sorting by key перед одним проходом. Объясните, почему выбранный order не произволен.
Типовые ошибки: Greedy-looking решение может упасть, когда early choice блокирует better future. Ищите counterexample до финального выбора, особенно для knapsack-like problems.
Чеклист:
- Назовите local choice.
- Докажите exchange или invariant.
- Сортируйте по правильному key.
- Проверьте counterexamples.