Алгоритм пошуку зі сходженням до вершини (англ. Hill climbing) являє собою звичайний цикл, в якому постійно відбувається переміщення в напрямку зростання деякого значення, тобто підйом. Робота цього алгоритму закінчується після досягнення «піку», в якому жоден з сусідніх станів не має більш високого значення. У цьому алгоритмі не передбачено супровід дерева пошуку, тому в структурі даних поточного вузла необхідно реєструвати тільки стан і відповідне йому значення цільової функції.
В алгоритмі зі сходженням до вершини не здійснюється прогнозування за межами станів, які є безпосередньо сусідніми по відношенню до поточного стану. Це нагадує спробу альпініста, який страждає від амнезії, знайти вершину гори Еверест в густому тумані.
В інформатиці алгоритм сходження на вершину — це математичний метод оптимізації, який належить до сім'ї локального пошуку. Це ітераційний алгоритм, який починається з довільного розв'язку проблеми, а потім намагається знайти краще рішення, поступово змінючи один елемент розв'язку.
Наприклад, алгоритм сходження на вершину може бути застосований до задачі комівояжера. Легко знайти початкове значення, яке відвідує всі міста, але це буде дуже «бідним» в порівнянні з оптимальним рішенням. Алгоритм починається з таким рішенням і робить невеликі зміни до нього, такі, як зміна порядку відвідування двох міст. Зрештою, набагато коротший маршрут, ймовірно, буде отримано.
Алгоритм сходження на вершину хороший для знаходження локального оптимуму (рішення, яке не може бути поліпшене шляхом розгляду сусідніх конфігурацій), але знаходження оптимального розв'язку (глобальний оптимум) з усіх можливих рішень (простір пошуку) не гарантується.
Відносна простота алгоритму робить його популярним вибором серед алгоритмів оптимізації. Він широко використовується в галузі штучного інтелекту, для досягнення цільового стану від початкового вузла. Пов'язані алгоритми вибирають наступні та початкові вузли по-різному. Незважаючи на більш просунуті алгоритми, такі як імітація відпалу або табу-пошук, які можуть дати кращі результати, в деяких ситуаціях алгоритм сходження на вершину працює так само добре. Алгоритм сходження на вершину часто дає кращий результат, ніж інші алгоритми, коли кількість часу для виконання пошуку обмежена, наприклад, у системах реального часу.
Математичний опис
Алгоритм сходження на вершину максимізує (або мінімізує) цільову функцію , де це вектор безперервного і / або дискретного значення. На кожній ітерації алгоритм сходження на вершину буде регулювати один елемент в і визначає, чи підвищує значення . (Зауважимо, що це відрізняється від методів градієнтного спуску, які регулюють всі значення в на кожній ітерації відповідно до градієнту пагорба.) Сходження на вершину приймає будь-яку зміну, яка поліпшує і процес триває допоки не буде знайдено значення в якому неможливо поліплишити Тоді оголошують локальним оптимальним розв'яком.
У дискретних векторних просторах, кожне можливе значення для можна собі уявити як вершину в графі.
Варіанти
У спрощеному алгоритмі сходження на вершину, обирають перший ближчий до розв'язку вузол, тоді як у найстрімкішому сходжені всі наступники порівнюються з обраним і тоді вибирається найближчий до розв'язку. Обидва варіанти можуть зазнати невдачі, якщо немає ближчого вузла, це може статись, якщо в області пошуку є локальні максимуми не розв'язки.
Стохастичний алгоритм сходження на вершину не розглядає всіх сусідів, перш ніж вирішити, як рухатися. Він радше обирає сусіда навмання і вирішує (спираючись на розмір поліпшення у цьому сусіді) чи вибрати цього сусіда чи перевірити іншого.
Проблеми
Локальні максимуми
Локальний максимум являє собою пік, вищий в порівнянні з кожним з його сусідніх станів, але нижчий, ніж глобальний максимум. Алгоритми зі сходженням до вершини, які досягають околиць локального максимуму, забезпечують просування вгору, до цього піку, але після цього заходять в глухий кут, з якого більше нікуди рухатися.
Хребти
Приклад хребта зображений на малюнку. При наявності хребтів виникають послідовності локальних максимумів, завдача проходження яких для жадібних алгоритмів є дуже важкою через те, що кожен крок робить рух лише уздовж координатних осей. Якщо цільова функція утворює вузький хребет, що зростає не уздовж якоїсь з осей тоді алгоритм сходження може рухатись лише зігзагами. Якщо хребет надто вузький, то кроки будуть дуже маленькими і час на підйом може бути неприйнятно великим (або спуск, якщо шукаємо мінімум і маємо справу з улоговиною).
Плато
Це область в ландшафті простору станів, в якій функція оцінки є плоскою. Воно може являти собою плоский локальний максимум, з якого не існує виходу вгору, або уступ, з якого можливе подальше успішне просування. Пошук зі сходженням до вершини може виявитися нездатним вийти за межі плато.
Псевдокод
Discrete Space Hill Climbing Algorithm currentNode = startNode; loop do L = NEIGHBORS(currentNode); nextEval = -INF; nextNode = NULL; for all x in L if (EVAL(x) > nextEval) nextNode = x; nextEval = EVAL(x); if nextEval <= EVAL(currentNode) return currentNode; currentNode = nextNode;
Continuous Space Hill Climbing Algorithm currentPoint = initialPoint; stepSize = initialStepSizes; acceleration = someAcceleration; candidate[0] = -acceleration; candidate[1] = -1 / acceleration; candidate[2] = 0; candidate[3] = 1 / acceleration; candidate[4] = acceleration; loop do before = EVAL(currentPoint); for each element i in currentPoint do best = -1; bestScore = -INF; for j from 0 to 4 currentPoint[i] = currentPoint[i] + stepSize[i] * candidate[j]; temp = EVAL(currentPoint); currentPoint[i] = currentPoint[i] - stepSize[i] * candidate[j]; if(temp > bestScore) bestScore = temp; best = j; if candidate[best] is not 0 currentPoint[i] = currentPoint[i] + stepSize[i] * candidate[best]; stepSize[i] = stepSize[i] * candidate[best]; if (EVAL(currentPoint) - before) < epsilon return currentPoint;
Див. також
Посилання
- Hill Climbing visualization [ 30 серпня 2009 у Wayback Machine.] Візуалізація алгоритму сходження на вершину для задачі «N-Queens puzzle», зроблена Yuval Baror.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm poshuku zi shodzhennyam do vershini angl Hill climbing yavlyaye soboyu zvichajnij cikl v yakomu postijno vidbuvayetsya peremishennya v napryamku zrostannya deyakogo znachennya tobto pidjom Robota cogo algoritmu zakinchuyetsya pislya dosyagnennya piku v yakomu zhoden z susidnih staniv ne maye bilsh visokogo znachennya U comu algoritmi ne peredbacheno suprovid dereva poshuku tomu v strukturi danih potochnogo vuzla neobhidno reyestruvati tilki stan i vidpovidne jomu znachennya cilovoyi funkciyi V algoritmi zi shodzhennyam do vershini ne zdijsnyuyetsya prognozuvannya za mezhami staniv yaki ye bezposeredno susidnimi po vidnoshennyu do potochnogo stanu Ce nagaduye sprobu alpinista yakij strazhdaye vid amneziyi znajti vershinu gori Everest v gustomu tumani V informatici algoritm shodzhennya na vershinu ce matematichnij metod optimizaciyi yakij nalezhit do sim yi lokalnogo poshuku Ce iteracijnij algoritm yakij pochinayetsya z dovilnogo rozv yazku problemi a potim namagayetsya znajti krashe rishennya postupovo zminyuchi odin element rozv yazku Napriklad algoritm shodzhennya na vershinu mozhe buti zastosovanij do zadachi komivoyazhera Legko znajti pochatkove znachennya yake vidviduye vsi mista ale ce bude duzhe bidnim v porivnyanni z optimalnim rishennyam Algoritm pochinayetsya z takim rishennyam i robit neveliki zmini do nogo taki yak zmina poryadku vidviduvannya dvoh mist Zreshtoyu nabagato korotshij marshrut jmovirno bude otrimano Algoritm shodzhennya na vershinu horoshij dlya znahodzhennya lokalnogo optimumu rishennya yake ne mozhe buti polipshene shlyahom rozglyadu susidnih konfiguracij ale znahodzhennya optimalnogo rozv yazku globalnij optimum z usih mozhlivih rishen prostir poshuku ne garantuyetsya Vidnosna prostota algoritmu robit jogo populyarnim viborom sered algoritmiv optimizaciyi Vin shiroko vikoristovuyetsya v galuzi shtuchnogo intelektu dlya dosyagnennya cilovogo stanu vid pochatkovogo vuzla Pov yazani algoritmi vibirayut nastupni ta pochatkovi vuzli po riznomu Nezvazhayuchi na bilsh prosunuti algoritmi taki yak imitaciya vidpalu abo tabu poshuk yaki mozhut dati krashi rezultati v deyakih situaciyah algoritm shodzhennya na vershinu pracyuye tak samo dobre Algoritm shodzhennya na vershinu chasto daye krashij rezultat nizh inshi algoritmi koli kilkist chasu dlya vikonannya poshuku obmezhena napriklad u sistemah realnogo chasu Matematichnij opisAlgoritm shodzhennya na vershinu maksimizuye abo minimizuye cilovu funkciyu f x displaystyle f mathbf x de x displaystyle mathbf x ce vektor bezperervnogo i abo diskretnogo znachennya Na kozhnij iteraciyi algoritm shodzhennya na vershinu bude regulyuvati odin element v x displaystyle mathbf x i viznachaye chi pidvishuye znachennya f x displaystyle f mathbf x Zauvazhimo sho ce vidriznyayetsya vid metodiv gradiyentnogo spusku yaki regulyuyut vsi znachennya v f x displaystyle f mathbf x na kozhnij iteraciyi vidpovidno do gradiyentu pagorba Shodzhennya na vershinu prijmaye bud yaku zminu yaka polipshuye f x displaystyle f mathbf x i proces trivaye dopoki ne bude znajdeno znachennya v yakomu nemozhlivo poliplishiti f x displaystyle f mathbf x Todi x displaystyle mathbf x ogoloshuyut lokalnim optimalnim rozv yakom U diskretnih vektornih prostorah kozhne mozhlive znachennya dlya x displaystyle mathbf x mozhna sobi uyaviti yak vershinu v grafi Opukla poverhnya VariantiU sproshenomu algoritmi shodzhennya na vershinu obirayut pershij blizhchij do rozv yazku vuzol todi yak u najstrimkishomu shodzheni vsi nastupniki porivnyuyutsya z obranim i todi vibirayetsya najblizhchij do rozv yazku Obidva varianti mozhut zaznati nevdachi yaksho nemaye blizhchogo vuzla ce mozhe statis yaksho v oblasti poshuku ye lokalni maksimumi ne rozv yazki Stohastichnij algoritm shodzhennya na vershinu ne rozglyadaye vsih susidiv persh nizh virishiti yak ruhatisya Vin radshe obiraye susida navmannya i virishuye spirayuchis na rozmir polipshennya u comu susidi chi vibrati cogo susida chi pereviriti inshogo ProblemiLokalni maksimumi Poverhnya z dvoma lokalnimi maksimumami Lokalnij maksimum yavlyaye soboyu pik vishij v porivnyanni z kozhnim z jogo susidnih staniv ale nizhchij nizh globalnij maksimum Algoritmi zi shodzhennyam do vershini yaki dosyagayut okolic lokalnogo maksimumu zabezpechuyut prosuvannya vgoru do cogo piku ale pislya cogo zahodyat v gluhij kut z yakogo bilshe nikudi ruhatisya Hrebti Priklad hrebta zobrazhenij na malyunku Pri nayavnosti hrebtiv vinikayut poslidovnosti lokalnih maksimumiv zavdacha prohodzhennya yakih dlya zhadibnih algoritmiv ye duzhe vazhkoyu cherez te sho kozhen krok robit ruh lishe uzdovzh koordinatnih osej Yaksho cilova funkciya utvoryuye vuzkij hrebet sho zrostaye ne uzdovzh yakoyis z osej todi algoritm shodzhennya mozhe ruhatis lishe zigzagami Yaksho hrebet nadto vuzkij to kroki budut duzhe malenkimi i chas na pidjom mozhe buti neprijnyatno velikim abo spusk yaksho shukayemo minimum i mayemo spravu z ulogovinoyu Hrebet Plato Ce oblast v landshafti prostoru staniv v yakij funkciya ocinki ye ploskoyu Vono mozhe yavlyati soboyu ploskij lokalnij maksimum z yakogo ne isnuye vihodu vgoru abo ustup z yakogo mozhlive podalshe uspishne prosuvannya Poshuk zi shodzhennyam do vershini mozhe viyavitisya nezdatnim vijti za mezhi plato PsevdokodDiscrete Space Hill Climbing Algorithm currentNode startNode loop do L NEIGHBORS currentNode nextEval INF nextNode NULL for all x in L if EVAL x gt nextEval nextNode x nextEval EVAL x if nextEval lt EVAL currentNode return currentNode currentNode nextNode Continuous Space Hill Climbing Algorithm currentPoint initialPoint stepSize initialStepSizes acceleration someAcceleration candidate 0 acceleration candidate 1 1 acceleration candidate 2 0 candidate 3 1 acceleration candidate 4 acceleration loop do before EVAL currentPoint for each element i in currentPoint do best 1 bestScore INF for j from 0 to 4 currentPoint i currentPoint i stepSize i candidate j temp EVAL currentPoint currentPoint i currentPoint i stepSize i candidate j if temp gt bestScore bestScore temp best j if candidate best is not 0 currentPoint i currentPoint i stepSize i candidate best stepSize i stepSize i candidate best if EVAL currentPoint before lt epsilon return currentPoint Div takozhSpisok algoritmivPosilannyaHill Climbing visualization 30 serpnya 2009 u Wayback Machine Vizualizaciya algoritmu shodzhennya na vershinu dlya zadachi N Queens puzzle zroblena Yuval Baror