Какво е общото между Ханойската кула и алгоритмите?
Ханойските кули, кръстени на едноименния град Ханой, са популярна логическа задача с цветни дискове с различни размери. Вероятно и на теб са ти попадали, особено ако обичаш да решаваш пъзели. Това е една от най-популярните математически игри, които познаваме, а по-интересното е, че може да бъде решена чрез рекурсия.
Какво е рекурсията? Това е компютърен алгоритъм, който ще използваш често в практиката, ако се отдадеш на кариера в програмирането. Истината е, че алгоритмите са това, което ни позволяват да създаваме програми, които работят. По своята същност представляват последователност от стъпки и инструкции, които, когато приложени върху даден проблем, водят до конкретен резултат.
Рекурсията се изучава в курса Algorithms Fundamentals with C#, където ще се запознаеш с най-популярните техники и методи за програмиране. А интригуващите Ханойски кули ще можеш да надвиеш и със затворени очи.
Приложение на Ханойските кули
Ако решиш да се пробваш с играта, за да предизвикаш алгоритмичното си мислене, ще се изправиш срещу няколко, обикновено разноцветни, диска с различна големина и три стълба. Дисковете са подредени по големина на левия стълб, а ти трябва да ги преместиш на десния, премествайки само най-горния диск от стълб на ход и без да можеш да поставяш по-големите върху по-малките дискове.
Поради своето естество, играта се прилага с различни цели в няколко сфери:
- Психолозите я прилагат за тестване на уменията за решаване на проблеми;
- Невролозите я използват за оценка на състоянието и откриване на нарушения в паметта и мозъчната дейност на пациенти;
- При създаването на резервни копия на данни върху магнитни ленти, Ханойската кула диктува схемата за смяна на ролките.
- Учебните институции използват примера на Ханойските кули, за да обяснят на учениците и студентите работата на рекурсията, а пример за решение ще ти дадем и ние!
Алгоритъм за решение на Ханойските кули в C#
Целта на рекурсивното решение на играта е побеждаването ѝ с най-малък възможен брой ходове. Рекурсията предлага елегантен вариант за справяне със задачата, тъй като всеки ход може да се разглежда като малък под-проблем и за всеки може да се приложи същата логика на инструкцията. Ето и само един пример как може да приложиш алгоритъма за намиране на решение, чийто output ще ти подскаже кой диск на кой стълб трябва да преместиш за постигане на точния резултат с минимален брой ходове:
Факт е, обаче, че когато работиш с алгоритми, ще трябва да избереш най-подходящия, за да свърши работата, от която се нуждаеш. Макар и елегантна, рекурсията не винаги е най-удачното решение на проблемите. За постигане на оптимални резултати, максимално бързо и с най-малък разход на ресурси, трябва да си добре подготвен за това какво представляват алгоритмите и кои техники в кои случаи да прилагаш. Нещо, което е от изключителна важност за всеки успешен програмист.
Именно това цели да те научи курсът Algorithms Fundamentals with C#, който започва през декември. В него ще се сблъскаш на практика с основните класове алгоритми, които се използват от разработчиците в практиката, ще поставиш основите на алгоритмичното си мислене и ще се научиш да създаваш и анализираш алгоритми. Обучението стартира на 9 декември и, ако вече свободно боравиш с променливи, цикли, условни конструкции и масиви, а C# е езикът, който си избрал, курсът е точно за теб. Запиши се до 7 декември ето ТУК. Очакваме те!