awesome-everything EN
↑ Обратно к восхождению

Алгоритмы с нуля

Greedy: тест с выбором

Суть Синтез по всему юниту в формате выбора: greedy choice property, exchange argument, когда greedy обыгрывает DP и когда тихо ошибается, и правильный ключ сортировки для interval scheduling.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов через весь юнит. Каждый — это решение, которое вы принимаете, когда всерьёз тянетесь за greedy: не определение для пересказа, а суждение о том, доказуемо ли локальный выбор является глобальным, и что делать, когда это не так.

Цель

Убедитесь, что вы связываете воедино greedy choice property, exchange argument, выбор ключа сортировки для interval-задач и сигнатуру отказа небезопасного greedy — синтез, к которому вели все четыре урока.

Викторина

Коллега говорит: greedy прошёл все 40 моих случайных тестов, значит он корректен для этой задачи. Почему это рассуждение несостоятельно и что на самом деле решило бы вопрос?

Викторина

Нужно выбрать максимум непересекающихся встреч в одной комнате. Коллега сортирует по кратчайшей длительности (короткие встречи плотнее упаковываются). На [0,4], [3,5], [4,8] что получится и почему ключ неверен?

Викторина

В exchange argument для activity selection вы убираете первую работу X из оптимума O и вставляете greedy-работу G с самым ранним финишем. Какой единственный факт сохраняет расписание допустимым?

Викторина

Для размена монетами {1, 3, 4} и суммы 6 greedy выдаёт 4+1+1 = 3 монеты, а DP — 3+3 = 2. Что это рассогласование говорит про exchange argument и какой корректный запасной вариант?

Викторина

По всему юниту: в чём точное различие между greedy и динамическим программированием на одной и той же задаче оптимизации?

Викторина

В Gas Station коллега возвращает -1 в первый же момент, когда бак уходит в минус на станции i. Почему это неверно и какая логика корректна?

Итог

Сквозная линия юнита — одна дисциплина: greedy всегда выполняется и всегда что-то возвращает, поэтому единственный важный вопрос — доказуемо ли его локальный выбор глобален. Exchange argument (или stays-ahead) — то, чем вы доказываете безопасность; отсутствующий swap — как у монет 4 для 6 — сам по себе доказательство провала, а запасной вариант — DP. Для interval-задач сложное — это ключ сортировки: earliest finish для максимизации, start для merging, sweep по стартам и финишам для комнат. А для scan-greedy вроде Gas Station никогда не решайте по локальному провалу — решайте по глобальному инварианту.

Продолжить восхождение ↑Greedy: свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.