В чем польза жадных алгоритмов? Реальный пример?
Примеры использования жадных алгоритмов?
Ответы (10)
Минимальное связующее дерево — алгоритм Prim и алгоритм Крускала
Расчет кратчайшего пути — алгоритм Дейкстры
Подробнее: (Дробная задача о рюкзаке, Кодирование Хаффмана, Оптимальное слияние, Топологическая сортировка).
Некоторые проблемы таковы, что жадное решение на самом деле будет оптимальным, и иногда они так устроены. Забавным примером является то, что стоимость монет во многих странах такова, что жадный подход к возврату сдачи (т. е. всегда возвращать максимально возможную монету, пока вы не закончите) работает.
Все, где оптимальное решение было бы невозможным или очень сложным.
Жадные алгоритмы выбирают лучшее решение на данный момент, даже если это не лучшее решение, если вы рассмотрели все альтернативы.
Я удивлен, что никто не указал кодировку Хаффмана/Шеннона...
В чем польза жадных алгоритмов?
Жадные алгоритмы выбирают лучшее/оптимальное решение на каждом этапе. Посмотрите статью в Википедии.
Реальный пример?
Алгоритмы минимального связующего дерева являются жадными алгоритмами.
Знаменитый алгоритм Дейкстры также является жадным алгоритмом.
Реальным примером жадного алгоритма будет интервальное планирование.
Например, если вы хотите максимизировать количество клиентов, которые могут использовать конференц-зал, вы можете использовать алгоритм интервального планирования.
В чем польза жадных алгоритмов?
Мы используем жадный алгоритм для получения оптимального решения. Но не все задачи можно решить с помощью жадного алгоритма.
Свойство оптимальной подструктуры и свойство жадного выбора являются ключевыми компонентами. Если мы сможем продемонстрировать, что задача обладает этими свойствами, значит, мы на правильном пути к разработке для нее жадного алгоритма.
Реальные примеры?
- Проблема планирования активности
- Код Хаффмана
- Номинал монеты
- Задача о кратчайшем пути из одного источника (Дейкстра)
- Минимальное остовное дерево (алгоритм Прима, алгоритм Крускала)
- Дробная задача о рюкзаке.
Почти все проблемы, которые можно решить с помощью динамического подхода, можно решить с помощью жадного подхода.
Здесь я перечислил некоторые жадные алгоритмы и их потенциальные варианты использования в реальном мире.
Алгоритм Дейкстры
- IP-маршрутизация для поиска кратчайшего пути.
- Протоколы сетевой маршрутизации
Узнайте больше о реальных приложениях алгоритма Дейкстры здесь
Алгоритм минимального связующего дерева Prim
Отслеживание и проверка лица в режиме реального времени (т. е. обнаружение человеческих лиц в видеопотоке).
Протоколы в информатике, чтобы избежать сетевых циклов.
Максимальное количество узких мест.
Дизеринг (добавление белого шума к цифровой записи для уменьшения искажений).
Задача коммивояжера
Планирование работы цеха без промежуточного хранения
Кластеризация массива данных
Маршрутизация транспортных средств
График — Цвет карты
Составление расписания/расписания
судоку
Присвоение частот мобильной радиосвязи
Подробнее об этом можно прочитать в этой статье.
Алгоритм минимального связующего дерева Крускала
Формирование телесети
Экскурсионные операции
Проблема с рюкзаком
Использование в реальном мире решения о том, что брать с собой в ограниченном пакете поездок