Чим відрізняється евристичний від алгоритму?


103

Чим відрізняється евристичний від алгоритму?



1
Якщо ви дивитесь на евристичний алгоритм як на якусь структуру дерева, я думаю, ви могли б назвати це алгоритмом спеціального призначення.
Джеймс П.

Евристика - це алгоритм, який (не доводиться) працює.
JeffE

Відповіді:


99

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

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

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

Типові приклади - з ігор. Коли ви пишете програму шахових ігор, ви могли б уявити собі спроби кожного можливого руху на якомусь рівні глибини та застосувати деяку функцію оцінювання до дошки. Евристика виключала б цілі гілки, які починаються з очевидно поганих кроків.

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


3
Ще одне поширене використання для евристики - у виявленні вірусів, де ви можете бути не впевнені, що вірус є, але ви можете шукати конкретні ключові ознаки вірусу.
Дана Хольт

Хіба це правда і для злому програм
Streetparade

1
@kriss, Отже .. евристика - це свого роду алгоритм.
Pacerier

1
@Pacerier: так. Це алгоритм, який допомагає орієнтуватися в просторі рішення певної проблеми. Ви також можете бачити це як стратегію зміни алгоритму, щоб зробити його практичним (мета-алгоритм). Це все ще алгоритм, всі методи є, а евристичний - це безумовно метод.
kriss

33
  • Алгоритм, як правило, детермінований і доведено, що він дає оптимальний результат
  • Евристика не має доказів правильності, часто включає випадкові елементи і може не дати оптимальних результатів.

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

Існують деякі перекриття: "генетичні алгоритми" - це прийнятий термін, але строго кажучи, це евристика, а не алгоритми.


2
Я б не сказав, що доведено, що алгоритм дає оптимальний результат: це залежить від алгоритму, щодо якої проблеми.
nbro

Отримання оптимального результату не є важливою якістю алгоритмів, це точність, тобто точний результат, тоді як евристичний дає вам приблизні результати.
Марина Данст

22

Евристично, у двох словах - «Освічена здогадка». Вікіпедія це гарно пояснює. Наприкінці метод оптимального вирішення зазначеної проблеми приймається методом «загального прийняття».

Евристичний - прикметник для методів, заснованих на досвіді, які допомагають у вирішенні проблем, навчанні та відкритті. Евристичний метод застосовується для швидкого приходу до рішення, яке сподівається бути близьким до найкращого можливого відповіді, або до «оптимального рішення». Евристика - це "великі правила", освічені здогадки, інтуїтивні судження або просто здоровий глузд. Евристика - це загальний спосіб вирішення проблеми. Евристика як іменник - це інша назва евристичних методів.

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

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

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


8

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

Існують певні категорії алгоритмів, з яких є евристичний алгоритм. Залежно від (доведених) властивостей алгоритму в цьому випадку він підпадає під одну з цих трьох категорій (примітка 1):

  • Точне : рішення виявляється оптимальним (або точним рішенням) для вхідної проблеми
  • Наближення : доведено, що відхилення величини рішення ніколи не відрізняється від оптимального значення, ніж деяка попередньо визначена межа (наприклад, ніколи не більше ніж на 50% більша від оптимальної величини)
  • Евристичний : алгоритм не виявився оптимальним, ані заздалегідь визначеним межею оптимального рішення

Зауважте, що алгоритм наближення також є евристичним, але з більш сильною властивістю, що існує доведене пов'язане з рішенням (значенням), яке воно виводить.

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

Через обмеження того, що можуть робити комп’ютери, не завжди вдається ефективно знайти найкраще можливе рішення. Якщо в проблемі достатньо структури, може виявитися ефективним способом пройти простір рішення, навіть якщо простір рішення є величезним (тобто у випадку найкоротшого шляху).

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

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

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

Є кілька відповідей, які відповідають на частину питання. Я вважав їх менш повними та недостатньо точними, і вирішив не редагувати прийняту відповідь, зроблену від @Kriss


Я вважаю, що ваше визначення алгоритму слова є занадто обмежуючим. Чи означає використання послідовності слів непаралельне? Алгоритми Parallell чудові і навіть звичні в наш час. Що щодо вирішення проблеми за допомогою нейронної мережі? Або інструмент розповсюдження обмежень? Алгоритми? Мета-алгоритми?
kriss

Читач відчуває, що проблеми з NP - чим гірші. Це неправда. Є справді важкі проблеми, що потребують справді поганих алгоритмів, таких як експоненціальні або гірші. NP є особливими, тому що якщо у нас є рішення, його легко і швидко перевірити, тоді як знайти його дуже важко, якщо у нас його ще немає. Легко перевірити, чи є у нас правильні вказівки, щоб вийти з лабіринту, набагато складніше знайти вихід. Таким чином, NP є і легкими, і важкими, якби ми могли спробувати всі можливі рішення одночасно (не детерміновано) вирішити це було б дуже просто ... але ми не можемо.
kriss

Дякуємо за відгук! Я трохи оновив фразу і по-різному підійшов до цього. На мою думку, розповсюдження обмежень - це техніка наближення до чогось, але це ще не алгоритм, який описує, як поетапно дійти до рішення, описаного при поширенні обмежень. Ви, звичайно, правильні щодо класів простору і «гірше», я також додав до цього записку. BTW: будь ласка, напишіть NP-Complete та / або NP-Hard повністю, оскільки підмножина NP містить також "ефективно" розв’язувані проблеми, які не є (як передбачається,) одним класом.
Joost

Звичайно, ви праві, я повинен був написати NP-Complete. Моє ліжко.
kriss

Це набагато краще, ніж те, що називає хтось із моїх колег: NP-ness (це звучить просто жахливо і якось грубо ...)
Joost

6

Насправді я не думаю, що між ними є багато спільного. Деякі алгоритми використовують евристику у своїй логіці (часто для меншої кількості обчислень або отримання більш швидких результатів). Зазвичай евристику використовують у так званих жадібних алгоритмах.

Евристика - це деякі «знання», які, на нашу думку, добре використовувати для того, щоб отримати найкращий вибір у нашому алгоритмі (коли вибір слід робити). Наприклад ... евристика в шахах могла бути (завжди беріть королеву опонента, якщо можете, оскільки ви знаєте, що це сильніша фігура). Евристика не гарантує вам, що приведе вас до правильної відповіді, але (якщо припущення є правильним), часто отримуйте відповідь, близький до кращого за набагато коротший час.


4

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

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


4

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

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

Він також може обчислити випадкове значення, яке з високою ймовірністю близьке до точного значення.

Евристичний алгоритм використовує деяке розуміння вхідних значень і обчислює не точне значення (але може бути близьким до оптимального). У деяких особливих випадках евристика може знайти точне рішення.


3

Алгоритм - це чітко визначений набір інструкцій для вирішення проблеми, евристика передбачає використання підходу до вивчення та відкриття для досягнення рішення.

Отже, якщо ви знаєте, як вирішити проблему, тоді використовуйте алгоритм. Якщо вам потрібно розробити рішення, то це евристика.


2

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


2

Я думаю, що евристика - це скоріше обмеження, яке використовується в моделі, заснованій на навчанні в штучному інтелекту, оскільки майбутні варіанти рішення важко передбачити.

Але тоді я сумніваюся після прочитання вищезазначених відповідей: "Як би можна було успішно застосувати евристику за допомогою методів стохастичної оптимізації? Чи можуть вони функціонувати як повноцінні алгоритми при використанні зі стохастичною оптимізацією?"

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


ой !! орфографічна помилка, це має бути "Штучний інтелект"
A_tanA

2

Одне з найкращих пояснень, які я прочитав, - це велика книга Code Complete , яку я зараз цитую:

Евристика - це техніка, яка допомагає шукати відповідь. Її результати підлягають випадковістю, оскільки евристика говорить лише про те, як шукати, а не що їх шукати. Це не говорить вам, як дістатися безпосередньо від точки А до точки В; він може навіть не знати, де точка А і точка В. Насправді евристика - це алгоритм у костюмі клоуна. Це менш передбачувано, веселіше, і це не має 30-денної гарантії повернення грошей.

Ось алгоритм руху до чийогось будинку: їдьте шосе 167 на південь до Пуй-Алупа. Виїжджайте на South Hill Mall вихід і їдьте 4,5 милі вгору на пагорб. Поверніть праворуч на світло біля продуктового магазину, а потім візьміть перший ліворуч. Поверніть на дорогу великого засмагового будинку ліворуч, на 714 Північний Кедр.

Ось евристика про те, як потрапити до когось будинку: Знайдіть останній лист, який ми вам надіслали по електронній пошті. Їхати до міста за зворотною адресою. Приїхавши до міста, запитайте когось, де наш будинок. Всі нас знають - хтось буде радий допомогти вам. Якщо ви нікого не можете знайти, зателефонуйте нам із загальнодоступного телефону, і ми приїдемо за вами.

Різниця між алгоритмом та евристикою незначна, і два терміни дещо перебігають. Для цілей цієї книги основна відмінність між ними - рівень непрямості від рішення. Алгоритм дає вам інструкції безпосередньо. Евристик розповідає, як розкрити інструкції для себе або хоча б де їх шукати.


Заявити, що існує різниця між алгоритмом і евристикою, це як заявити, що існує різниця між птахом і куркою. Евристика - це тип алгоритму.
Joost

0

Вони знаходять рішення субоптимально, без жодної гарантії щодо якості знайденого рішення, очевидно, що для розвитку евристики має сенс лише поліном. Застосування цих методів підходить для вирішення проблем реального світу або великих проблем, настільки незручних з обчислювальної точки зору, що для них не існує навіть алгоритму, здатного знайти приблизне рішення в поліноміальний час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.