Loading...

Какво е общото между Ханойската кула и алгоритмите?

Какво е общото между Ханойската кула и алгоритмите?

Ханойските кули, кръстени на едноименния град Ханой, са популярна логическа задача с цветни дискове с различни размери. Вероятно и на теб са ти попадали, особено ако обичаш да решаваш пъзели. Това е една от най-популярните математически игри, които познаваме, а по-интересното е, че може да бъде решена чрез рекурсия.


Какво е рекурсията? Това е компютърен алгоритъм, който ще използваш често в практиката, ако се отдадеш на кариера в програмирането. Истината е, че алгоритмите са това, което ни позволяват да създаваме програми, които работят. По своята същност представляват последователност от стъпки и инструкции, които, когато приложени върху даден проблем, водят до конкретен резултат.


Рекурсията се изучава в курса Algorithms Fundamentals with C#, където ще се запознаеш с най-популярните техники и методи за програмиране. А интригуващите Ханойски кули ще можеш да надвиеш и със затворени очи.

Приложение на Ханойските кули

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


Поради своето естество, играта се прилага с различни цели в няколко сфери:


  • Психолозите я прилагат за тестване на уменията за решаване на проблеми;
  • Невролозите я използват за оценка на състоянието и откриване на нарушения в паметта и мозъчната дейност на пациенти;
  • При създаването на резервни копия на данни върху магнитни ленти, Ханойската кула диктува схемата за смяна на ролките.
  • Учебните институции използват примера на Ханойските кули, за да обяснят на учениците и студентите работата на рекурсията, а пример за решение ще ти дадем и ние!

Алгоритъм за решение на Ханойските кули в C#

Целта на рекурсивното решение на играта е побеждаването ѝ с най-малък възможен брой ходове. Рекурсията предлага елегантен вариант за справяне със задачата, тъй като всеки ход може да се разглежда като малък под-проблем и за всеки може да се приложи същата логика на инструкцията. Ето и само един пример как може да приложиш алгоритъма за намиране на решение, чийто output ще ти подскаже кой диск на кой стълб трябва да преместиш за постигане на точния резултат с минимален брой ходове:


Факт е, обаче, че когато работиш с алгоритми, ще трябва да избереш най-подходящия, за да свърши работата, от която се нуждаеш. Макар и елегантна, рекурсията не винаги е най-удачното решение на проблемите. За постигане на оптимални резултати, максимално бързо и с най-малък разход на ресурси, трябва да си добре подготвен за това какво представляват алгоритмите и кои техники в кои случаи да прилагаш. Нещо, което е от изключителна важност за всеки успешен програмист.


Именно това цели да те научи курсът Algorithms Fundamentals with C#, който започва през декември. В него ще се сблъскаш на практика с основните класове алгоритми, които се използват от разработчиците в практиката, ще поставиш основите на алгоритмичното си мислене и ще се научиш да създаваш и анализираш алгоритми. Обучението стартира на 9 декември и, ако вече свободно боравиш с променливи, цикли, условни конструкции и масиви, а C# е езикът, който си избрал, курсът е точно за теб. Запиши се до 7 декември ето ТУК. Очакваме те!

Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.