Чим відрізняється евристичний від алгоритму?
Чим відрізняється евристичний від алгоритму?
Відповіді:
Алгоритм - це опис автоматизованого рішення проблеми . Те, що алгоритм робить, точно визначено. Рішення може бути чи не може бути найкращим з можливих, але ви знаєте з самого початку, який результат ви отримаєте. Ви реалізуєте алгоритм, використовуючи деяку мову програмування, щоб отримати (частину) програми .
Зараз деякі проблеми важкі, і ви, можливо, не зможете отримати прийнятне рішення у прийнятний час. У таких випадках ви часто можете отримати не надто погане рішення набагато швидше, застосувавши кілька довільних виборів (освічені здогадки): це евристика .
Евристика все ще є своєрідним алгоритмом, але той, який не вивчить усі можливі стани проблеми, або розпочнеться з вивчення найбільш ймовірних.
Типові приклади - з ігор. Коли ви пишете програму шахових ігор, ви могли б уявити собі спроби кожного можливого руху на якомусь рівні глибини та застосувати деяку функцію оцінювання до дошки. Евристика виключала б цілі гілки, які починаються з очевидно поганих кроків.
У деяких випадках ви шукаєте не найкраще рішення, а будь-яке рішення, яке відповідає деяким обмеженням. Хороший евристик допоможе знайти рішення за короткий час, але може також не знайти його, якщо єдині рішення знаходяться в штатах, які він вирішив не намагатися.
Багато проблем, для яких не відомий ефективний алгоритм пошуку оптимального рішення, мають евристичні підходи, які дають майже оптимальні результати дуже швидко.
Існують деякі перекриття: "генетичні алгоритми" - це прийнятий термін, але строго кажучи, це евристика, а не алгоритми.
Евристично, у двох словах - «Освічена здогадка». Вікіпедія це гарно пояснює. Наприкінці метод оптимального вирішення зазначеної проблеми приймається методом «загального прийняття».
Евристичний - прикметник для методів, заснованих на досвіді, які допомагають у вирішенні проблем, навчанні та відкритті. Евристичний метод застосовується для швидкого приходу до рішення, яке сподівається бути близьким до найкращого можливого відповіді, або до «оптимального рішення». Евристика - це "великі правила", освічені здогадки, інтуїтивні судження або просто здоровий глузд. Евристика - це загальний спосіб вирішення проблеми. Евристика як іменник - це інша назва евристичних методів.
Точніше кажучи, евристика розглядає стратегії, що використовують легкодоступну, хоча і слабко застосовну, інформацію для управління вирішенням проблем у людях і машинах.
Тоді як алгоритм - це метод, що містить кінцевий набір інструкцій, що використовуються для вирішення проблеми. Метод було доведено математично чи науково, щоб працювати над проблемою. Існують формальні методи та докази.
Евристичний алгоритм - це алгоритм, який здатний створити прийнятне рішення задачі за багатьма практичними сценаріями за способом загального евристичного характеру, але для якого немає офіційного підтвердження його правильності.
Алгоритм є самодостатнім крок за кроком набором операцій, що підлягає виконанню 4 , як правило , інтерпретуються як кінцева послідовність (комп'ютер або людина) інструкція для визначення вирішення проблеми , такі як: існує шлях від А до B, або який найменший шлях між A і B. В останньому випадку ви також можете бути задоволені "розумно близьким" альтернативним рішенням.
Існують певні категорії алгоритмів, з яких є евристичний алгоритм. Залежно від (доведених) властивостей алгоритму в цьому випадку він підпадає під одну з цих трьох категорій (примітка 1):
Зауважте, що алгоритм наближення також є евристичним, але з більш сильною властивістю, що існує доведене пов'язане з рішенням (значенням), яке воно виводить.
З деяких проблем ніхто ще не знайшов "ефективного" алгоритму для обчислення оптимальних рішень (примітка 2). Однією з таких проблем є відома проблема продавця подорожей. Наприклад, алгоритм Христофідеса для проблеми продавця подорожі називали евристичним , оскільки не було доведено, що він знаходиться в межах 50% від оптимального рішення. Однак, оскільки це було доведено, але алгоритм Крістофіда більш точно називають алгоритмом наближення.
Через обмеження того, що можуть робити комп’ютери, не завжди вдається ефективно знайти найкраще можливе рішення. Якщо в проблемі достатньо структури, може виявитися ефективним способом пройти простір рішення, навіть якщо простір рішення є величезним (тобто у випадку найкоротшого шляху).
Евристика зазвичай застосовується для поліпшення часу роботи алгоритмів, додаючи "експертну інформацію" або "освічені здогадки" для керування напрямком пошуку. На практиці, евристика може бути також підпрограма для алгоритму оптимального, щоб визначити , де шукати перший .
(Примітка 1) : Крім того, алгоритми характеризуються тим, включають вони випадкові чи недетерміновані елементи. Алгоритм, який завжди виконується однаково і виробляє однакову відповідь, називається детермінованим.
(Примітка 2) : Це називається проблемою P vs NP, і проблеми, які класифікуються як NP-завершені та NP-hard, навряд чи мають "ефективний" алгоритм. Примітка; як @Kriss, згаданий у коментарях, існують ще «гірші» типи проблем, для обчислення яких може знадобитися експоненціальний час або простір.
Є кілька відповідей, які відповідають на частину питання. Я вважав їх менш повними та недостатньо точними, і вирішив не редагувати прийняту відповідь, зроблену від @Kriss
Насправді я не думаю, що між ними є багато спільного. Деякі алгоритми використовують евристику у своїй логіці (часто для меншої кількості обчислень або отримання більш швидких результатів). Зазвичай евристику використовують у так званих жадібних алгоритмах.
Евристика - це деякі «знання», які, на нашу думку, добре використовувати для того, щоб отримати найкращий вибір у нашому алгоритмі (коли вибір слід робити). Наприклад ... евристика в шахах могла бути (завжди беріть королеву опонента, якщо можете, оскільки ви знаєте, що це сильніша фігура). Евристика не гарантує вам, що приведе вас до правильної відповіді, але (якщо припущення є правильним), часто отримуйте відповідь, близький до кращого за набагато коротший час.
Евристика - це алгоритми, тому в цьому сенсі цього немає, однак евристика застосовує «здогадку» підходу до вирішення проблеми, даючи «достатньо хороший» відповідь, а не шукаючи «найкращого» рішення.
Хороший приклад - коли у вас дуже складна (читайте NP-завершена) проблема, для якої ви хочете вирішити, але у вас немає часу, щоб прийти до неї, тому доведеться використовувати досить хороше рішення, засноване на евристичному алгоритмі, наприклад пошук рішення проблеми мандрівного продавця за допомогою генетичного алгоритму.
Алгоритм - це послідовність деяких операцій, яка дає вхід щось обчислює (функцію) і видає результат.
Алгоритм може дати точні або приблизні значення.
Він також може обчислити випадкове значення, яке з високою ймовірністю близьке до точного значення.
Евристичний алгоритм використовує деяке розуміння вхідних значень і обчислює не точне значення (але може бути близьким до оптимального). У деяких особливих випадках евристика може знайти точне рішення.
Алгоритм - це чітко визначений набір інструкцій для вирішення проблеми, евристика передбачає використання підходу до вивчення та відкриття для досягнення рішення.
Отже, якщо ви знаєте, як вирішити проблему, тоді використовуйте алгоритм. Якщо вам потрібно розробити рішення, то це евристика.
Евристика - це зазвичай оптимізація або стратегія, яка зазвичай дає достатньо хорошу відповідь, але не завжди та рідко найкращу відповідь. Наприклад, якщо ви вирішили проблему продавця подорожей грубою силою, відмова від часткового рішення, коли його вартість перевищить ціну поточного найкращого рішення, є евристичною: іноді це допомагає, інше - ні, і це, безумовно, не є ' t покращити теоретичний (великі-ох позначення) час виконання алгоритму
Я думаю, що евристика - це скоріше обмеження, яке використовується в моделі, заснованій на навчанні в штучному інтелекту, оскільки майбутні варіанти рішення важко передбачити.
Але тоді я сумніваюся після прочитання вищезазначених відповідей: "Як би можна було успішно застосувати евристику за допомогою методів стохастичної оптимізації? Чи можуть вони функціонувати як повноцінні алгоритми при використанні зі стохастичною оптимізацією?"
Одне з найкращих пояснень, які я прочитав, - це велика книга Code Complete , яку я зараз цитую:
Евристика - це техніка, яка допомагає шукати відповідь. Її результати підлягають випадковістю, оскільки евристика говорить лише про те, як шукати, а не що їх шукати. Це не говорить вам, як дістатися безпосередньо від точки А до точки В; він може навіть не знати, де точка А і точка В. Насправді евристика - це алгоритм у костюмі клоуна. Це менш передбачувано, веселіше, і це не має 30-денної гарантії повернення грошей.
Ось алгоритм руху до чийогось будинку: їдьте шосе 167 на південь до Пуй-Алупа. Виїжджайте на South Hill Mall вихід і їдьте 4,5 милі вгору на пагорб. Поверніть праворуч на світло біля продуктового магазину, а потім візьміть перший ліворуч. Поверніть на дорогу великого засмагового будинку ліворуч, на 714 Північний Кедр.
Ось евристика про те, як потрапити до когось будинку: Знайдіть останній лист, який ми вам надіслали по електронній пошті. Їхати до міста за зворотною адресою. Приїхавши до міста, запитайте когось, де наш будинок. Всі нас знають - хтось буде радий допомогти вам. Якщо ви нікого не можете знайти, зателефонуйте нам із загальнодоступного телефону, і ми приїдемо за вами.
Різниця між алгоритмом та евристикою незначна, і два терміни дещо перебігають. Для цілей цієї книги основна відмінність між ними - рівень непрямості від рішення. Алгоритм дає вам інструкції безпосередньо. Евристик розповідає, як розкрити інструкції для себе або хоча б де їх шукати.
Вони знаходять рішення субоптимально, без жодної гарантії щодо якості знайденого рішення, очевидно, що для розвитку евристики має сенс лише поліном. Застосування цих методів підходить для вирішення проблем реального світу або великих проблем, настільки незручних з обчислювальної точки зору, що для них не існує навіть алгоритму, здатного знайти приблизне рішення в поліноміальний час.