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



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

1040   12  

12 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

есть определенные категории алгоритмов, из которых эвристический алгоритм один. В зависимости от (доказанных) свойств алгоритма в этом случае он попадает в одну из этих трех категорий (Примечание 1):

  • точно: решение оказалось оптимальным (или точно решение) к проблеме ввода
  • приближение: доказано, что отклонение значения решения никогда не будет дальше от оптимального значения, чем некоторые заранее определенные привязка (например, не более чем на 50% больше, чем оптимальное значение)
  • эвристика: алгоритм не был доказан как оптимальный, ни в пределах заранее определенной границы оптимального решения

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

для некоторых проблем, никто никогда не нашел "эффективные" алгоритм вычисления оптимальных решений (примечание 2). Одной из таких проблем является известная задача коммивояжера. Кристофидес алгоритм для задачи коммивояжера, например, раньше называлось эвристика, так как не было доказано, что она находится в пределах 50% от оптимального решения. Поскольку было доказано, однако, алгоритм Кристофидес более точно называют алгоритм аппроксимации.

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

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

(Примечание 1): кроме того, алгоритмы характеризуются тем, включают ли они случайные или недетерминированные элементы. Алгоритм, который всегда выполняется одинаково и дает один и тот же ответ, называется детерминированным.

(сноска 2): Это называется проблемой P vs NP, а проблемы, которые классифицируются как NP-полные и NP-жесткие, являются вряд ли есть "эффективный" алгоритм. Примечание; как упоминалось в комментариях @Kriss, есть даже "худшие" типы проблем, для вычисления которых может потребоваться экспоненциальное время или пространство.

есть несколько ответов, которые отвечают на часть вопроса. Я счел их менее полными и недостаточно точными и решил не редактировать принятый ответ, сделанный @Kriss

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

но тогда мое сомнение после прочтения выше ответов "Как эвристика может быть успешно применена с использованием методов стохастической оптимизации? или они могут функционировать как полноценные алгоритмы при использовании со стохастической оптимизацией?"

http://en.wikipedia.org/wiki/Stochastic_optimization

одно из лучших объяснений, которые я прочитал, исходит из великой книги Код, который я сейчас цитирую:

эвристика-это метод, который помогает вам искать ответ. Свой результаты подвержены случайности, потому что эвристика говорит вам только как искать, а не то, что найти. Он не говорит вам, как получить непосредственно от точки A до точки B; он может даже не знать, где точка A и точки B. По сути, эвристика-это алгоритм в клоуне подходить. Это менее предсказуемо, это более весело, и это происходит без 30-дневного, гарантия возврата денег.

вот алгоритм для вождения в чей-то дом: возьмите шоссе 167 на юг в Пуйаллапе. Возьмите выход South Hill Mall и проехать 4,5 км в гору. Поверните направо на светофоре у продуктового магазина, а затем первый поворот налево. Поверните на подъездную дорожку большого коричневого дома на слева, на 714 Северной кедровой.

вот эвристика для получения чей-то дом: Найди последний письмо, которое мы вам отправили. Поездка в город по обратному адресу. Когда приезжай в город, спроси у кого-нибудь, где наш дом. Все знают нас-кто-то будет рад вам помочь. Если вы не можете никого найти, позвоните нам из телефона-автомата, и мы приедем за тобой.

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

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

Comments

    Ничего не найдено.