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

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

100
задан Joost 20 April 2016 в 07:47
поделиться

8 ответов

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

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

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

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

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

94
ответ дан 24 November 2019 в 04:52
поделиться
  • Алгоритм обычно детерминирован, и доказано, что он дает оптимальный результат.
  • Эвристика не имеет доказательства правильности, часто включает случайные элементы и может не дать оптимальных результатов.

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

Есть некоторые совпадения: «генетические алгоритмы» - общепринятый термин, но, строго говоря, это эвристики, а не алгоритмы.

32
ответ дан 24 November 2019 в 04:52
поделиться

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

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

6
ответ дан 24 November 2019 в 04:52
поделиться

Из всех битовых операций XOR имеет лучшие свойства перетасовки битов.

В этой таблице истинности объясняется, почему

A B AND
0 0  0
0 1  0
1 0  0
1 1  1

A B OR
0 0  0
0 1  1
1 0  1
1 1  1

A B XOR
0 0  0
0 1  1
1 0  1
1 1  0

Как вы видите для И и ИЛИ плохо справляются со смешиванием битов.

ИЛИ будет в среднем производить 3/4 один бит. И, с другой стороны, будет производить в среднем 3/4 нулевых битов. Только XOR имеет четное однобитовое или нулевое битовое распределение. Это делает его таким ценным для генерации хеш-кода.

Помните, что для хеш-кода вы хотите использовать как можно больше информации о ключе и получить хорошее распределение хеш-значений. Если вы используете И или ИЛИ вы получите числа, которые смещены в сторону либо чисел с большим количеством нулей или чисел с большим количеством единиц.

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

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

Есть несколько перекрытий: «генетические алгоритмы» - это принятый термин, но строго говоря, это эвристика, а не алгоритмы.

-121--745923-

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

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

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

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

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

22
ответ дан 24 November 2019 в 04:52
поделиться

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

Алгоритм может давать точные или приблизительные значения.

Он также может вычислить случайное значение, которое с высокой вероятностью близко к точному значению.

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

4
ответ дан 24 November 2019 в 04:52
поделиться

Посмотрите здесь

http://bengross.com/smallunix.html

-121--3357661-

Не можете просто получить последний элемент, а затем использовать .prev () для получения предпоследнего элемента?

Если вы можете опубликовать свой HTML, это поможет.

-121--2576825-

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

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

4
ответ дан 24 November 2019 в 04:52
поделиться

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

Итак, если вы знаете, как решить проблему, используйте алгоритм. Если вам нужно разработать решение, то это эвристика.

3
ответ дан 24 November 2019 в 04:52
поделиться

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

2
ответ дан 24 November 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: