В чем разница между эвристикой и алгоритмом?
в чем разница между эвристикой и алгоритмом?
12 ответов
алгоритм-это описание автоматическое решение проблемы. То, что делает алгоритм, точно определено. Решение может быть или не может быть лучшим, но вы с самого начала знаете, какой результат вы получите. Вы реализуете алгоритм используя некоторый язык программирования, чтобы получить (часть) a программа.
теперь, некоторые проблемы трудны и вы не можете мочь получить приемлемое решение в приемлемое время. В таких случаях вы часто можете получить не слишком плохие решения намного быстрее, применяя произвольный выбор (догадки): это эвристика.
эвристика по-прежнему является своего рода алгоритмом, но тот, который не будет исследовать все возможные состояния проблемы, или начнет с изучения наиболее вероятных из них.
типичные примеры из игры. При написании шахматной программы вы можете представить себе, что пытаетесь каждый возможный ход на некоторой глубине уровень и применение некоторых функций оценки к совету. Эвристика исключает полные ветви, которые начинаются с явно плохих ходов.
в некоторых случаях вы не ищете лучшее решение, но для любого решения сторона некоторые ограничения. Хорошая эвристика поможет найти решение за короткое время, но также может не найти его, если единственные решения находятся в состояниях, которые он решил не пробовать.
- алгоритм обычно детерминирован и доказал, что дает оптимальный результат
- эвристика не имеет доказательств правильности, часто включает случайные элементы и может не давать оптимальных результатов.
многие задачи, для которых не известен эффективный алгоритм поиска оптимального решения, имеют эвристические подходы, которые дают почти оптимальные результаты очень быстро.
есть некоторые перекрытия: "генетические алгоритмы" - это принятый термин, но строго это эвристика, а не алгоритмы.
эвристика, в двух словах-это "образованная догадка". Википедия это прекрасно объясняет. В итоге в качестве оптимального решения указанной задачи принимается метод "общего принятия".
эвристика-прилагательное для методы, основанные на опыте, которые помогают в решении проблем, обучении и открытие. Используется эвристический метод быстро прийти к решению, которое надеялся быть ближе к лучшему ответ, или "оптимальное решение". Эвристика "эмпирическое правило", догадки, интуитивные суждения или просто здравый смысл. Эвристика-это общий способ решения проблемы. Эвристика как существительное-другое название для эвристических методов.
в более точных терминах, эвристики стенд для стратегий с использованием легко доступный, хотя свободно применимый, информация для управления решением задач в людях и машинах.
в то время как алгоритм-это метод, содержащий конечное множество инструкции, используемые для решения проблемы. Метод был доказан математически или научно, чтобы работать для этой проблемы. Существуют формальные методы и доказательства.
эвристический алгоритм - это алгоритм, который способен производить приемлемое решение проблемы в много практически сценариев, в мода на общую эвристику, но для которого нет формального доказательства его правильность.
на самом деле я не думаю, что есть много общего между ними. Некоторые алгоритмы используют эвристику в своей логике (часто, чтобы сделать меньше вычислений или получить более быстрые результаты). Обычно эвристика используется в так называемых жадных алгоритмов.
эвристика-это некоторые "знания", которые, как мы предполагаем, хорошо использовать, чтобы получить лучший выбор в нашем алгоритме (когда выбор должен быть сделан). Например... эвристика в шахматах может быть (всегда берите ферзя противников, если можете, поскольку вы знаете, что это сильный показатель). Эвристика не гарантирует вам, что приведет вас к правильному ответу, но (если предположения верны) часто получают ответ, который близок к лучшему за гораздо более короткое время.
эвристика-это алгоритмы, поэтому в этом смысле их нет, однако эвристика использует "угадывающий" подход к решению проблемы, давая "достаточно хороший" ответ, а не находя "наилучшее возможное" решение.
хорошим примером является то, что у вас есть очень сложная (прочитанная NP-полная) проблема, для которой вы хотите решение, но не имеете времени, чтобы прийти к нему, поэтому должны использовать достаточно хорошее решение, основанное на эвристическом алгоритме, например, найти решение проблемы коммивояжера используя генетический алгоритм.
алгоритм-это последовательность некоторых операций, которые при заданном входе вычисляют что-то (функцию) и выводят результат.
алгоритм может давать точные или приблизительные значения.
Он также может вычислить случайное значение, которое с высокой вероятностью близко к точному значению.
эвристический алгоритм использует некоторое представление о входных значениях и вычисляет не точное значение (но может быть близко к оптимальному). В некоторых особых случаях эвристика может найти точное решение.
алгоритм-это четко определенный набор инструкций для решения проблемы, эвристика предполагает использование подхода обучения и открытия для достижения решения.
Итак, если вы знаете как решить проблему, то используют алгоритм. Если вам нужно разработать решение, то это эвристики.
An алгоритм - это автономный пошаговый набор операций, которые необходимо выполнить 4, обычно интерпретируется как конечная последовательность (компьютерных или человеческих) инструкций для определения решения такой проблемы, как: есть ли путь от A до B или какой наименьший путь между A и B. В последнем случае вы также можете быть удовлетворены "разумно близким" альтернативным решением.
есть определенные категории алгоритмов, из которых эвристический алгоритм один. В зависимости от (доказанных) свойств алгоритма в этом случае он попадает в одну из этих трех категорий (Примечание 1):
- точно: доказано, что решение является оптимальным (или точно решение) к проблеме ввода
- приближение: доказано, что отклонение значения решения никогда не будет дальше от оптимального значения, чем некоторые предопределенные bound (например, никогда не более чем на 50% больше оптимального значения)
- эвристика: алгоритм не был доказан как оптимальный, ни в пределах заранее определенной границы оптимального решения
обратите внимание, что алгоритм аппроксимации также является эвристическим, но с более сильным свойством, что существует доказанная связь с решением (значением), которое он выводит.
для некоторых проблем, никто никогда не нашел "эффективные" алгоритм вычисления оптимальных решений (примечание 2). Одна из этих проблем-хорошо известная проблема коммивояжера. Кристофидес алгоритм для задачи коммивояжера, например, раньше называлось эвристика, так как не было доказано, что он находится в пределах 50% от оптимального решения. Поскольку было доказано, однако, алгоритм Кристофидес более точно называют алгоритм аппроксимации.
из-за ограничений на то, что компьютеры могут делать, это не всегда возможно эффективно найти лучшие решение возможно. Если в задаче достаточно структуры, может быть эффективный способ пересечь пространство решения, даже если пространство решения огромно (т. е. в задаче кратчайшего пути).
эвристика обычно применяется для улучшения времени работы алгоритмов, добавляя "экспертную информацию" или "образованные догадки", чтобы направлять направление поиска. На практике эвристика может также подпрограмма для оптимального алгоритма, чтобы определить, где искать первый.
(Примечание 1): кроме того, алгоритмы характеризуются тем, включают ли они случайные или недетерминированные элементы. Алгоритм, который всегда выполняется одинаково и дает один и тот же ответ, называется детерминированным.
(сноска 2): Это называется проблемой P vs NP, а проблемы, которые классифицируются как NP-complete и NP-hard, являются вряд ли у него есть "эффективный" алгоритм. Примечание; как упоминалось в комментариях @Kriss, существуют еще более "худшие" типы проблем, для вычисления которых может потребоваться экспоненциальное время или пространство.
есть несколько ответов, которые отвечают на часть вопроса. Я счел их менее полными и недостаточно точными и решил не редактировать принятый ответ, сделанный @Kriss
эвристика обычно является оптимизацией или стратегией, которая обычно дает достаточно хороший ответ, но не всегда и редко лучший ответ. Например, если вы должны были решить проблему коммивояжера с грубой силой, отбрасывая частичное решение, когда его стоимость превышает стоимость текущего лучшего решения, является эвристикой: иногда это помогает, в других случаях это не так, и это определенно не улучшает теоретическое (Big-oh notation) время выполнения алгоритма
Я думаю, что эвристика-это скорее ограничение, используемое при обучении модели на основе искусственного интеллекта, поскольку будущие состояния решения трудно предсказать.
но тогда мои сомнения после прочтения выше ответов "Как эвристика может быть успешно применена с использованием методов стохастической оптимизации? или они могут функционировать как полноценные алгоритмы при использовании со стохастической оптимизацией?"
одно из лучших объяснений, которое я прочитал, происходит из великой книги Код, который я сейчас цитирую:
эвристика-это техника, которая помогает вам искать ответ. Свой результаты подвержены случайности, потому что эвристика говорит вам только как искать, а не то, что найти. Он не говорит вам, как получить напрямую из точки A в точку B; он может даже не знать, где точка A и точки B. По сути, эвристика-это алгоритм в клоуне подходить. Это менее предсказуемо, это более весело, и это происходит без 30-дневного, гарантия возврата денег.
вот алгоритм для вождения в чей-то дом: возьмите шоссе 167 на юг в Пуйаллапе. Съезд South Hill Mall и проехать 4,5 км в гору. Поверните направо на светофоре у продуктового магазина, а затем первый поворот налево. Сверните на подъездную дорожку к большому загорелому дому. слева, на 714 Северного кедра.
вот эвристика для получения чей-то дом: найти последний письмо, которое мы вам отправили. Поезжайте в город по обратному адресу. Когда приезжай в город, спроси кого-нибудь, где наш дом. Все знают мы-кто-то будет рад помочь вам. Если вы никого не найдете, позвоните нам из телефона-автомата, и мы приедем за тобой.
разница между алгоритмом и эвристикой тонкая, и два срока на круге. Для целей настоящей книги основные разница между этими двумя является уровнем абстрагирование от решение. Алгоритм дает вам инструкции напрямую. Ля эвристика говорит вам, как открыть инструкции для себя, или по крайней мере, где их искать.
Они находят решение субоптимально без какой-либо гарантии качества найденного решения, очевидно, что для развития эвристики имеет смысл только полином. Применение этих методов подходит для решения реальных задач или больших задач, настолько неудобных с вычислительной точки зрения, что для них нет даже алгоритма, способного найти приближенное решение в полиномиальное время.