Какая разница между жадным и эвристическим алгоритмом?

Какая разница между жадным и эвристическим алгоритмом?

Я прочитал несколько статей о аргументе, и мне кажется, что они более или менее похожи на один и тот же алгоритм, поскольку их основной характеристикой является выбор наилучшего (локального) варианта на каждой итерации для решения проблемы.

+14
03 февр. '14 в 20:26
источник поделиться
5 ответов

То, как эвристика описана мной, заключается в том, что они являются "эмпирическими правилами". Их способность создавать глобально оптимальное решение не может быть напрямую доказана, но, как правило, они выполняют хорошую работу. Они часто используются, когда стоимость определения оптимального решения слишком высока. Кроме того, эвристика часто кодирует определенный опыт в отношении того, как проблема была решена в прошлом. Лучший способ описать эвристику - это "Стратегия решения".

Алгоритм Greedy - это тот, который делает выбор на основе того, что выглядит лучше всего на данный момент. Другими словами, выбор является локально оптимальным, но не обязательно глобально оптимальным (может быть, если повезет, но вы не можете это доказать). Кроме того, алгоритм Greedy обычно не уточняет свое решение на основе новой информации. Это только одна стратегия решения (a.k.a - эвристика).

Чтобы привести пример того, как может работать жадный алгоритм, если вы использовали его, чтобы помочь вам спланировать маршрут с одной стороны страны на другую на кратчайшем расстоянии, скорее всего, выберете короткую медленную дороги. Не обязательно будет понимать, что лучшим вариантом будет автомагистраль, хотя и более длинная и, возможно, более прямая.

Альтернативная стратегия (эвристика) может быть направлена ​​на то, чтобы покрыть большую часть пути, используя автомагистрали (потому что для большинства направлений они, как правило, более прямые), а затем прибегают к использованию обычных дорог для перехода между ними. В некоторых случаях он, вероятно, будет действовать довольно паршиво, но в большинстве случаев это будет хорошо, и, честно говоря, это, вероятно, аналогичная эвристика, которую мы все используем при коммутации (если не использовать сатнав).

Завершение...

  • Все эвристики, жадные алгоритмы - нет

  • Все ли жадные алгоритмы, эвристика - в общем, да.

Чтобы помочь вам в некоторой степени, одной из первых проблем, которые я преподавал в классе алгоритмов в университете, была Проблема с продавцом. Он относится к NP-полному классу проблем, означающему отсутствие эффективных средств решения. То есть, по мере роста размера проблемы, время, затрачиваемое на поиск решения, существенно возрастает. Существует ряд доказанных алгоритмов, но их производительность невелика и в реальных приложениях мы склонны к эвристике (в том числе Greedy Algorithms - см. Ссылку).

+14
04 авг. '14 в 12:07
источник

их основной характеристикой является выбор наилучшего (локального) варианта на каждой итерации

Совсем не верно для эвристики. Эвристические алгоритмы делают выбор, который, как известно, субоптимален в теории, но на практике доказал, что он дает разумные результаты. Эвристика обычно находит приблизительное решение:

В информатике, искусственном интеллекте и математической оптимизации эвристика - это метод, предназначенный для решения проблемы быстрее, когда классические методы слишком медленны, или для нахождения приближенного решения, когда классические методы не могут найти точное решение. Это достигается благодаря оптимальности торговли, полноте, точности или точности для скорости.

Жадный - пример эвристики (сделать лучший выбор на местном уровне и надеяться на оптимальный глобальный результат), но это не значит, что эвристика жадна. Есть много эвристик, совершенно не связанных с жадными, например. генетические алгоритмы считаются эвристическими:

В области информатики искусственного интеллекта генетический алгоритм (GA) является эвристикой поиска, которая имитирует процесс естественного отбора.

+4
03 февр. '14 в 20:33
источник

Это две разные вещи: жадные алгоритмы пытаются взять "лучший выбор" на каждой итерации (например, если вы выберете ребра по графику по их длине, он будет выбирать самый длинный/самый короткий край на каждой итерации). Жадные алгоритмы обеспечивают точное решение!

Эвристические алгоритмы используют вероятность и статистику, чтобы избежать использования всех возможностей и обеспечить "наилучшее решение" (что означает, что если лучшее решение существует, оно будет только немного лучше).

+1
03 февр. '14 в 20:31
источник

Greedy говорят, когда вы объединяете элементы один за другим в решение (следуя некоторой стратегии выбора) и никогда не возвращаетесь назад. Пример: прямой выбор сортировки можно считать жадной процедурой.

Эвристика - это общий термин, который обозначает любое ad-hoc/интуитивное правило, используемое с надеждой на улучшение поведения алгоритма. Пример:. Правило медианного троих используется, чтобы выбрать точку опоры в Quicksort

+1
03 февр. '14 в 21:13
источник

Примечание: Я не уверен, что последующие действия применимы ко мне и моему "социальному кругу" или представляют собой стандартную глобальную концепцию.

В моем понимании эвристический алгоритм, как пишет Википедия:

эвристика - это метод, предназначенный для решения проблемы быстрее, когда классические методы слишком медленны, или для нахождения приближенного решения, когда классические методы не могут найти точного решения. Это достигается благодаря оптимальности торговли, полноте, точности или точности для скорости.

С другой стороны, жадный алгоритм - это то, что вы описали: алгоритм, который пытается найти лучшее решение, выбрав лучший вариант на каждом шагу. Это в значительной степени. Это не означает ничего о решении: иногда жадный алгоритм обеспечивает идеальное и оптимальное решение, в то время как в некоторых других случаях он может быть просто эвристическим → приблизительным (не идеальным), но более быстрым решением.

0
03 февр. '14 в 20:36
источник

Посмотрите другие вопросы по меткам или Задайте вопрос