Генерация и решение лабиринта с помощью метода поиска в глубину по графу. Мастерим сложные бродилки

Пожалуй, все владельцы дачных участков пытаются сделать во дворе что-то необычное и оригинальное, что-то такое, что выделяло бы его из остальных. Это может быть небольшой , спрятанная между развесистыми деревьями, другие варианты. Это все классика, но есть и другие, более таинственные садовые элементы – вспомните, к примеру, лабиринты во времена Средневековья, который обрамляли роскошные дворцы! И нечто подобное (в более скромных масштабах, разумеется) может сделать любой владелец загородного участка, если у него есть возможности и желание. И о том, как сделать садовый лабиринт своими руками , мы и расскажем в сегодняшней статье.

Интересно! Знаете ли вы, что существует несколько способов корчевания пней? Если желаете узнать об этом поподробнее, то для вас!

Но чем хорош лабиринт в саду? Вы удивитесь, но у данной затеи есть многочисленные преимущества:

  • сад будет обустроен нетрадиционно, оригинально;
  • детишкам это будет полезно в плане развития;
  • домашние и гости смогут отлично развлечься.

Определяемся, что собой представляет садовый лабиринт

Сразу оговоримся, что любой лабиринт является крайне сложной системой, которая состоит из запутанных проходов и дорожек, идущих к единой цели, а именно к центру всей композиции. Вовсе не обязательно, чтобы лабиринт в саду был большим – есть среди них и относительно маленькие, отличающиеся подчеркнутой простотой выполнения. Помимо этого, для создания композиции можно использовать самые разные материалы – от традиционной живой изгороди до оригинальных дорожек из камня.

А если у вас есть дети, то помните, что такой лабиринт очень быстро станет их любимым местом для игр, ведь там так интересно играть в прятки! Для взрослых же это – отличная возможность не спеша прогуляться, увлекшись своими мечтами и мыслями.

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

Теперь – непосредственно к процессу создания лабиринта!

Этап первый. Месторасположение, композиция

До того как начинать что-то делать, определитесь с тем, где будет располагаться композиция. Очевидно, что практически все лабиринты увидеть полностью возможно только сверху, по этой причине очень хорошо, если у вас на участке есть какая-то возвышенность или дом с двумя этажами (со второго этажа можно будет любоваться прелестями композиции). А что же касается места размещения, то лучше обустроить лабиринт рядом с детской площадкой или зоной отдыха.

Самым примитивным вариантом лабиринта является закрученная спираль, дорожки которой соединяются по центру. А вот с композициями, в которых есть несколько выходов или тупик, все намного сложнее. И отличным тому примером может являться любой парковый лабиринт Европы, а если его упростить, то можно получить и собственную оригинальную схему.

При создании лабиринта следует уделять внимание как переплетению дорожек, так и «сердцу» композиции, то есть центральной части. Там рекомендуется обустроить зону отдыха, для чего можно, например, поставить столик с креслами, соорудить перголу и так далее. «Сердцем» может стать даже красивая скульптура, клумба, водоем или даже солнечные часы.

Этап второй. Выбираем растения

Если лабиринт будет маленьким, то есть для детей, то при его создании можно использовать однолетние растения (такие, как кудрявая петрушка), цветочные горшки, маленькие булыжники. А вот если конструкция будет достаточно большой, то для нее потребуется высадить кустарники. Важно, чтобы они были такими, чтоб ни стрижка, ни уход не вызывали особых трудностей (а все это крайне необходимо для придания композиции требуемой формы и регулировки габаритов стенок).

При создании среднего лабиринта используются растения высотой не более 0,5 метра (это может быть низкорослая спирея, альпийская смородина, самшит). Все указанные культуры произрастают в средней полосе. А если вы затеваете действительно что-то масштабное – композицию, в котором и взрослые некоторое время будут блудить, то оптимальным вариантом будут деревья высотой до 3-х метров. По мнению опытных специалистов, для этого больше всего подходит тис, шиповник, татарский клен, граб, другие.

Обратите внимание! Сочетание видов культур должно быть подобрано так, чтобы те имели разные периоды цветения, то есть цвели не в одно время. Только в таком случае садовый лабиринт будет выглядеть великолепно большую часть года!

Как уже отмечалось, традиционно садовые лабиринты выполняются в виде круга, хотя при желании можно использовать любую другую форму – треугольника, квадрата, его можно даже сделать в виде инициалов. Словом, вариантов масса, поэтому можете смело подключать к процессу детей – она с огромным удовольствием в нем поучаствуют. Самый примитивный вариант композиции состоит из:

  • входа;
  • нескольких поворотов;
  • выхода.

Что же касается форм, то самыми простыми из них являются спиралевидные композиции, где все дорожки соединяются по центру. Существует также сквозная схема, в которой отсутствует ярко выраженное «сердце». А теперь разберемся, какие виды лабиринтов самые популярные в ландшафтном дизайне.

Этап третий. Беремся за дело – несколько возможных вариантов действий

Существует четыре основных видов композиции, и дальнейшие ваши действия будут зависеть от того, какой именно из них вы выбрали. Итак, вкратце со всеми ознакомимся.

Вариант №1. Композиция из живой изгороди

Самым привлекательным, а оттого и заманчивым вариантом является садовый лабиринт, выполненный из живой изгороди. Вполне очевидно, что этот вариант является еще и самым трудоемким и сложным в выполнении. Культуры (это могут быть как деревья, так и кусты), образующие ходы в такого рода композиции, нуждаются в постоянном уходе и частой стрижке. Более того, площадь такой вот прелести будет немалой – никакие 6 соток в данном случае уже не спасут.

Хотя если площадь участка достаточно большая, а вы сами преисполнены желанием поддерживать живую изгородь «в форме», то такая конструкция превратится в ваше любимое место для прогулок! Скорее всего, не только дети, но и внуки смогут играть в запутанных ходах, так как при должном уходе композиция будет все так же привлекательной десятки лет.

Если планируете использовать в качестве «стройматериала» живую изгородь, то советуем прибегнуть к:

  • кизильнику блестящему;
  • лавру;
  • бирючине;
  • вечнозеленому самшиту.

А ежели желания ждать того, когда вырастут многолетние кусты, у вас нет, можете сделать все по-быстрому, используя быстрорастущие однолетние культуры (это может быть, к примеру, веничная кохия, которая вырастает не выше 1-го метра). Она в рекордно короткие сроки образует плотную зеленую массу, к тому же, ее достаточно легко стричь. Хотя есть и существенный минус – такой лабиринт из однолетних культур придется восстанавливать каждый год, по этой причине он – скорее временный вариант.

Вариант №2. Лабиринт из камня

Для создания лабиринта также можете использовать камень – в таком случае готовая композиция будет внешне напоминать руины древнего сказочного строения. Безусловно, она будет предназначаться исключительно для обзора и, может быть, для пеших прогулок, поскольку использовать ее для «блуждания» едва ли получится. Для выкладывания декоративной спирали берите маленькие камешки, имеющие одинаковые размеры, либо же кладку-бортик. А если использовать большие камни, то это поможет сделать своего рода прогулочный вариант композиции.

При желании или же, к примеру, если вам кажется, что лабиринт из камня выглядит чересчур мрачно, можете «оживить» его с помощью растений, высаженных между валунами. В данном случае если использовались маленькие камешки, то отлично подойдут «альпийские» культуры (молодило, очиток). А вот для преображения каменной стены специалисты советуют брать плющ, кобею, жимолость или же дихондру.

Вариант №3. Композиция из цветов

Лабиринт в виде спиралевидных цветочных посадок пользуется огромной популярностью. Важно, чтобы были подобраны компактные цветы, стебли у которых прямостоячие. Культуры должны с четкостью повторять все очертания данной композиции, из-за чего раскидистые цветы вряд ли подойдут (они, как известно, «любят» разрастаться). Пересеивающиеся культуры также нежелательно использовать для создания садового лабиринта (это может быть эшшольция или мак), поскольку они, как видно из названия, склонны к самосеву.

Обратите внимание! Если эти самосеющиеся культуры все же использовать, то композиция потеряет четкость и станет расплывчатым пятном. Поэтому лучше брать для этого компактные растения – розу бордюрную, например, или же кустовую петунию.

Что же касается цвета, то лабиринт в этом плане должен быть максимально четким и однородным, в противном случае очертания смажутся и не будут восприниматься целостно. А если композиция будет состоять из двух спиралей, соединенных по центру, то можете использовать два цвета, контрастирующих друг к другу. К слову, цветочная композиция может выступать в роли только обычной клумбы, то есть ее можно лишь осматривать или же использовать для прогулок. Если были выбраны прогулки, то между посадками проложите дорожки из гравия, четко повторяющие все проходы.

Вариант №4. Фантазийная композиция

Данный вариант является наиболее непредсказуемым, так как он находится в стороне от четких линий и геометрических законов. Никакая планировка схемы здесь не требуется, равно как и наличие «сердца»; основной упор здесь делают на предельной запутанности ходов, максимальном количестве поворотов, тупиках в неожиданных местах. И, прогуливаясь по такому лабиринту, человек сможет принять участие в увлекательном путешествии, в ходе которого не будет знать, что ожидает его за следующим перекрестком.

Лабиринты фантазийного типа интересны тем, что могут являться не только строго очерченной зоной загородного участка, как описанные выше варианты, а расположиться на всей территории сада, включая игровую зону, зону для отдыха и проч. Необходимо лишь, чтобы переходы были незначительными и «перемешивались» с различными перекрестками и поворотами. Только в таком случае человек, находящийся внутри композиции, не будет знать о том, что ждет его всего в нескольких метрах впереди. И для этого могут использоваться перголы, трельяжи или арки, украшенные вьющимися растениями.

Все растительные культуры, в том числе живая изгородь, будут здесь свободно произрастать, разрастаться так, как «захочется», дабы скрыть от человека все, что находится в нескольких шагах. И после каждого поворота посетителя будет ждать что-то необычное и в то же время приятное: прекрасная клумба, удобная скамья для отдыха, гипсовая скульптура и т. д.

Подводя итоги

Если вы сделаете садовый лабиринт своими руками, то жалеть о своей затее вы однозначно не будете, так как данный элемент оформления сада всегда будет привлекать внимание, а вы, в свою очередь, будете гордиться своим творением! И не стоит опасаться того, что путь к мечте может оказаться чересчур запутанным. В лабиринтах выход имеется всегда, необходимо лишь приложить усилия и найти его!

По традиции, еще со времен Древних Египта и Греции, под лабиринтом понимают участок местности с дорожками, тропинками, которые создают замысловатый рисунок и при этом ведут к центральной части. Изгородь из растений, высаженных в подобной форме, стала появляться в средневековых садах к середине XV в. Наверняка все любители Джерома К. Джерома помнят, как его герои блуждали по лабиринту (кстати, немаленькому – длина аллей ок. 500 м), находящемуся в Хемпптон-корте. Интересно, что хоть он был создан аж в 1690 году, но пройти по следам веселых персонажей из «Трое в лодке, не считая собаки» можно и сегодня.

Не чужда изгородь в подобной форме и русским садам, в усадьбах Архангельское, Кусково, Петергофе аллеи из аккуратно подстриженных кустов формировали четкий рисунок. Со временем композиции из живой изгороди усложнялись, создавая запутанные конструкции. Переменчивая мода на какое-то время забыла о лабиринтах, но в наши дни они снова стали объектом интереса ландшафтных дизайнеров.

Лабиринт у себя на участке

Если размеры участка позволяют, то вполне можно создать садовый лабиринт, и у этой идеи есть много достоинств:

  • это оригинальное, нетрадиционное обустройство сада;
  • великолепное средство развлечения для домашних и гостей;
  • полезно для развития детей.

Лабиринты бывают разных видов, например, гармоничной частью пейзажного сада станет фантазийный или цветочный, в регулярный сад органично впишется практически любой вариант. Посадочный материал для создания такого элемента ландшафта достать не проблема, ассортимент растений на рынке очень широкий, поэтому всегда можно подобрать растения, подходящие для запланированной высоты бордюра или стенки.


Растения, формирующие изгородь, определяют размеры композиции, можно создать детский мини-вариант диаметром до 2 метров, а можно и с поперечников в 10-20 м, из которых далеко не сразу найдешь выход.

Растения для сада-лабиринта

Маленький детский лабиринт можно создать даже из однолетних растений (кудрявая петрушка, бархатцы), горшков с цветами, небольших камней. Ну а для большого используют кустарники. Подбирают такие кустарники, стрижка и обрезка которых не связана с большими сложностями, а это необходимо для придания лабиринту определенной формы и регулирования размеров его стенок.

Для декоративной композиции средних размеров выбирают растения высотой до 50 см, например можно посоветовать спирею низкорослую, чашечковый зверобой, самшит, альпийскую смородину. Перечисленные виды растут в средней полосе. Если же замахнуться на большой лабиринт, в котором и взрослые люди проплутают некоторое время, то придется подбирать деревья, вырастающие до 3 м. Дизайнеры рекомендуют в этих целях использовать шиповник, барбарис Тунберга, граб, магонию, клен татарский, тис. Подойдет и уже упоминавшийся выше самшит, еще можно взять боярышник, иргу, форзицию среднюю.

Стоит постараться и подобрать сочетания видов кустарников таким образом, чтобы периоды цветения у них не совпадали, тогда ваш садовый лабиринт будет в цвету большую часть года.


Традиционная форма композиции - круг, но вполне допустимо устроить сад-лабиринт в форме квадрата, треугольника или в виде букв – инициалов человека. Вариантов интересных можно придумать множество, подключите к этому своих детей, чтобы и они поучаствовали в процессе. Простая схема включает вход, пару поворотов, выход. Среди простых форм можно назвать спираль, в которой все тропинки смыкаются в центре. Можно выбрать сквозную схему без выраженного центра, а если он будет, то расположить в нем фонтан или уютную беседку, а то и пруд или патио.

Лабиринтные формы

Помимо эстетической ценности, лабиринт является отличным средством для проведения досуга, устройства всевозможных конкурсов, соревнований, что будет особенно привлекательно для детей. В тупичках для детей родители могут сделать тайник с призами, фантами. А взрослые участники получат шанс отыскать здесь томик стихов, рюмку коньяка, гитару и т.п. В общем, при желании и некоторой креативности лабиринт можно превратить в прекрасное место для развлечений.

Выбор места для композиции

Окинуть взглядом лабиринт можно только сверху, поэтому целесообразно устраивать его рядом с возвышенностью, с которой будет возможно насладиться его видом сверху. Точкой обзора может стать и второй этаж дома. Обычно лабиринт располагают в зоне отдыха, неподалеку от детской площадки, так как для детей он обладает притягательной силой и становится любимым местом их игр.


Территориально этот элемент ландшафта можно устроить и между домом и садом, огородом. Впрочем, советуем предусмотреть и более короткую обходную дорожку с интересным покрытием.

Садовый лабиринт из живой изгороди

В ландшафтном дизайне различают несколько типов лабиринта по основному «строительному материалу». Живая изгородь до 3 метров высотой – идеальный материал. Но помните, что внешняя красота такого лабиринта сопряжена с необходимостью уделять изрядно сил и времени поддержанию деревьев в надлежащем виде, в том числе стрижке, обрезанию веток. Конечно, под устройство этого варианта требуется довольно большая площадь, но если уж вы можете себе такое позволить, то получите чудесное место для прогулок, а ваши дети – для игр.

Лабиринт из изгороди отличается долговечностью (при хорошем уходе, конечно). Быстро создать такой можно методом высадки однолетников, например кохии веничной, которая достигает 1 метра, обрастает густой листвой и хорошо формуется. Естественно на будущий год придется высаживать растения снова или все же приступать к сооружению композиции из многолетних кустарников.

Цветочный лабиринт

Это очень оригинальная организация цветника, цветы в данном случае высаживаются обычно по спирали. Лучше всего подойдут компактные цветы с прямыми стеблями и правильной формой. Так как цветочный лабиринт невысок и его можно охватить взглядом без проблем, то его форма должна быть эстетичной. Поэтому от чересчур раскидистых цветов придется отказаться, а также тех, что склонны к самосеву (мак, эшшольции). Из-за самосева композиция рискует быстро потерять изначально задуманную форму, контуры смажутся и рисунок потеряет в эстетичности.

Хорошие варианты для оформления – львиный зев, роза бордюрная, кустовая петуния.

Чтобы получить эстетичный вид, необходимо соблюдать однородную гамму оттенков и строгость в контурах, дабы границы клумб не размазывались. Можно устроить лабиринт не из одной, а из двух спиралей или линий, которые в определенном месте будут смыкаться. В таком можно высаживать растения двух контрастирующих окрасок.

Лабиринт может стать оригинальной клумбой, от созерцания которой всегда можно будет получить эстетическое. Но цветочную конструкцию можно приспособить и для прогулок. В этом случае между лентами из цветов прокладываются мощеные или присыпанные гравием дорожки, повторяющие лабиринтные проходы.

Каменный лабиринт

Свое обаяние имеет и композиция из камней, напоминающая руины некогда величественных культовых построек. План тот же – спираль, вдоль которой выкладываются небольшие камни приблизительно равного размера. Такой вариант предназначен, скорее, для созерцания, для пеших прогулок возводят каменные стены или используя крупные глыбы. Внести некоторое оживление в серый, несколько мрачноватый тон камней можно растениями.

На каменных стенах будут интересно смотреться лианы, ампельные виды (плющ, ипомея, клематис и др.), а в лабиринте из небольших камней можно высадить очитки, молодилу.

Фантазийная композиция

Этот тип наиболее близок к исконной сущности лабиринта – сооружения с крайне запутанными тропинками, по которым можно блуждать очень долго в поисках верной дороги. В фентезийном лабиринте не акцентируется центр, его просто нет, зато в изобилии присутствуют многочисленные тропинки, оканчивающиеся тупиком, множество похожих друг на друга поворотов и перекрестков. Войдя в такой, поневоле начинаешь ощущать себя искателем приключении.

Фантазийная композиция может охватить собой весь сад вместе с зоной отдыха, площадкой для детей и прочими дорожками. Только надо делать переходы делать короткими и часто чередовать их с поворотами, петлями. Тогда в поле зрения будет лишь пара-тройка метров. Такой эффект запутанности достигается за счет использования пергол, вьющихся растений на трельяжах, арок.

Каменный лабиринт в саду (видео)

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

Прогулка по лабиринту будет особенно приятна, если за поворотом путника будет ждать красивая скамья, изящная клумба или оригинальная скульптура.

Создание лабиринта своими руками - процесс крайне увлекательный и творческий, периодически в него можно вносить изменения и воплощать новые идеи, так что это может стать любимым занятием, а выстроенный самостоятельно объект — наглядным свидетельством вашей креативности и законным поводом для гордости. Рекомендуем прочесть статью о

Наверное, каждый владелец мечтает создать у себя в саду что-нибудь . Поэтому сегодня мы решили посвятить свою статью неповторимому по своей красоте и стилю лабиринту , который пришел к нам в из старой Европы. Именно там, в XVIII веке возникла мода на живые лабиринты из плотных и высоких растительных стен. Знатные гости в качестве развлечения разделялись на группы и искали выход из , решая, таким образом, своеобразные головоломки. Нередко под покровом ночи в укромных уголках лабиринта кавалеры назначали свидание дамам своего сердца, а в случае опасности незаметно скрывались в густом ограждении. Как это ни печально, но с приходом XX века со своими сложными геометрическими формами ушли в прошлое, а в ландшафтном дизайне начали цениться естественность и простота. Но сегодня мода на изысканную и сложную красоту начинает возрождаться, а вместе с ней на возвращаются и лабиринты, но уже более современные и разнообразные.

Что такое лабиринт?


Если обратиться к энциклопедии, то лабиринт представляет собой участок внутри парка, на котором проходы между плотной стриженой зеленью (например, липы, граба, лавра) специально запутаны. А вот словарь символов гласит, что является метафорой путешествия человека от рождения к смерти. Если же посмотреть с технической точки зрения, то лабиринт – это не что иное, как сложная система переходов и дорожек, которые ведут к определенной цели, а именно к центру лабиринта. Интересно, что лабиринты изображали на скалах еще наши предки, и такие рисунки были найдены по всему миру. Существует теория, что таким образом древние люди пытались запутать злых духов и оградить от них свои жилища. Впрочем, современные специалисты по тоже уверены, что грамотно выполненный лабиринт способен правильно направлять энергетические потоки и с достоинством выполнять функцию оберега. При этом абсолютно неважно, из каких материалов сделан лабиринт, насколько он огромен и запутан, главное здесь – правильно выбранный рисунок.

Общая композиция лабиринта


Если вы решили сделать лабиринт в своем саду , то, прежде всего, необходимо отвести под него подходящее место и определиться с площадью. Здесь нельзя не отметить, что большинство , причем их высота не имеет значения, замечательно смотрятся сверху. А это означает, что очень неплохо было бы видеть лабиринт из окна дома, например, со второго этажа. Что касается общей концепции сада, то лабиринт можно разместить вблизи зоны отдыха или на детской площадке в качестве места для игр и прогулок. Самой простой формой лабиринта является (можно сделать две смыкающиеся спирали). В более сложных формах лабиринта могут быть предусмотрены тупики, многочисленные входы и различные варианты пути к центру. Центральную площадку лабиринта нужно обязательно хорошо продумать, ведь именно она является целью запутанного путешествия. Можно поместить в центре лабиринта мощеную площадку для отдыха со столиком, скамейками, и горшками. Также центром лабиринта могут стать: садовая скульптура, пергола с вьющимися растениями, клумба, солнечные часы, маленький бассейн с фонтаном, интересное растение, к примеру, в маленьком лабиринте можно поставить деревце-бонсай на подставке. Давайте теперь рассмотрим более подробно, как можно сделать некоторые виды лабиринтов, которые получили наибольшее распространение в .

Лабиринт-клумба


Лабиринт из цветов является одним из наиболее простых в исполнении лабиринтов, под размещение которого совсем необязательно отдавать большие площади сада. Для лабиринта-клумбы нужно подбирать компактные, не раскидистые (шарообразными кустиками или с прямостоячими стеблями), не склонные к самосеву. Это необходимо для того, чтобы очертания лабиринта со временем не расплывались и он не превратился бы в простое смазанное пятно. Например, для обустройства лабиринта-клумбы категорически не подходят такие активно пересеивающиеся цветы, как и мак . Зато прекрасным выбором станут многолетние и однолетние бордюрные цветы: колеус, роза бордюрная, сальвия сверкающая, карликовый львиный зев и т.п. По цветовому решению лабиринт-клумба должен быть достаточно однородным, иначе зрительно его очертания не будут иметь четких линий. Однако если ваш лабиринт будет состоять из нескольких линий, например, двух смыкающихся спиралей, то их можно сделать контрастными между собой. Лабиринт из может быть компактным и предназначенным только для обзора, а может быть местом для прогулок, где цветочные ряды сочетаются с садовыми дорожками. Интересным вариантом является «исчезающий» цветочный лабиринт , расположенный на , который появляется только весной, но ежегодно возобновляется. Такой лабиринт выполняют из луковичных цветов, которые не требуют ежегодной выкопки: рябчиков, тюльпанов, нарциссов . Для того чтобы сделать подобный лабиринт своими руками, вам понадобятся: несколько метров , длинная веревка и достаточное количество цветочных луковиц. Закладку лабиринта-клумбы необходимо проводить в начале осени. Для этого при помощи веревки нужно проложить на газоне рисунок будущего лабиринта. Затем по контуру вырезать и снять газонный дерн так, чтобы получилась посадочная площадка с глубиной в две луковицы. Стандартная ширина цветочной ленты составляет 0.5 м, но может быть и меньше – здесь все зависит от общей площади лабиринта. Теперь требуется посадить луковицы в землю (желательно плотно), после чего накрыть их снятым дерном. Лабиринт готов, но его очертания вы увидите только весной, когда взойдут цветы.

Лабиринт из живой изгороди


Лабиринт из живой изгороди
, особенно если он выше человеческого роста, является, пожалуй, самым заманчивым, но и наиболее трудоемким вариантом, который ко всему прочему требует еще постоянного и тщательного ухода. К тому же площадь для такого лабиринта потребуется немалая – вряд ли удастся разместить такое чудо на традиционных шести сотках. Но если площадь вашего сада все-таки позволяет, и есть возможность и желание ухаживать за , то такой лабиринт вполне сможет претендовать на звание любимого места для прогулок и игр. Тем более что лабиринты из живой изгороди при надлежащем уходе на протяжении многих лет и даже столетий, не теряют своей привлекательности. Для того чтобы сделать лабиринт из вам понадобится схема, которую нужно будет наметить на земле, как план посадок. Обычно такую изгородь делают односторонней и стригут несколько раз за сезон, соблюдая все правила топиарного искусства. Для обустройства лабиринта из живой изгороди подойдут такие растения, как бирючина обыкновенная, самшит вечнозеленый, вяз мелколистный, кизильник блестящий, дерен кроваво-красный и белый, лавр обыкновенный . Для наглядного примера в качестве простейшего временного варианта можно сделать из однолетников. Для такой цели хорошо подойдет кохия веничная , высота которой достигает 1 м. Это растение создает зеленую густую массу и замечательно поддается стрижке и формовке.

Каменный лабиринт


Весьма интересным вариантом ландшафтной композиции является лабиринт из камня , который, как и лабиринт-клумба, может быть небольшой обзорной либо масштабной прогулочной композицией. Для создания каменного лабиринта желательно подбирать достаточно большие камни, приблизительно одинакового размера, цвета и формы. можно уложить цепочкой в один ряд либо соорудить из них невысокую кладку-бортик. К слову сказать, такой лабиринт будет украшать сад не только весной и летом, но и зимой: под снегом очертания смотрятся чрезвычайно эффектно. Огромным преимуществом каменного лабиринта перед многими другими видами является то, что после окончания строительства он практически не нуждается в уходе. Впрочем, не обязательно должен состоять исключительно из камней, его вполне можно оживить при помощи растительности. Особенно хорошо для такой цели подходят невысокие альпийские растения, молодила, седумы и т.п. Более того, каменную кладку можно запросто превратить в цветущую стену, посадив между камнями .

Фантазийный лабиринт


Фантазийный лабиринт
– самый непредсказуемый из всех видов лабиринтов, ведь законов здесь не существует и единственным ограничением является только предел вашей фантазии. Фантазийный лабиринт, в отличие от лабиринтов традиционных, не имеет четких очертаний, заранее спланированного рисунка и главной цели – центра. Главным здесь является запутанность , перекрестков и поворотов, словом должен присутствовать эффект неожиданности, когда ты не знаешь, что тебя ждет за следующим углом. Фантазийный лабиринт может занимать весь сад вместе с подходами к дому, зоной отдыха и . Основная идея состоит в том, что небольшие дорожки-переходы должны иметь частые повороты и даже «петли», чтобы, стоя на одном участке лабиринта, вы не могли видеть, что скрывается на другом, буквально в нескольких метрах от вас. Добиться такого эффекта можно за счет высоких растений, арок. Живые изгороди в фантазийном лабиринте не стригутся, они свободно разрастаются, заслоняя собой очередные сюрпризы.

За каждым поворотом вас может ожидать что-то новое: необычная ландшафтная композиция, изящная скульптура, беседка или скамеечка для отдыха. Но самое интересное, что продолжением фантазийного лабиринта может быть все что угодно, даже . Вдоль дорожек здесь вполне могут выстроиться бордюры из капусты или перголы с декоративной тыквой и вьющейся фасолью. Что касается овощных грядок, то их можно выполнить в форме закрученных спиралей - это подчеркнет их принадлежность к лабиринту.

Но на каком бы из вариантов вы не остановили свой выбор, в любом случае лабиринт будет одним из самых эффектных элементов и обязательно станет гордостью владельца сада. А напоминает вам, что из любого, даже самого сложного лабиринта есть выход, а потому даже самые запутанные мечты могут сбыться.

В этой статье речь пойдет о самом простом в реализации алгоритме генерации «идеального» лабиринта и его применении для поиска пути.

Мы рассмотрим алгоритм, основанный на бэктрекинге, позволяющий создавать лабиринты без циклов, имеющие единственный путь между двумя точками. Алгоритм не самый быстрый, довольно требователен к ресурсам, по сравнению с алгоритмом Эйлера или Крускала, но очень прост в реализации и позволяет создавать ветвистые лабиринты с очень длинными тупиковыми ответвлениями.

Заинтересовавшихся - прошу под кат.

В русскоязычном интернете очень мало информации по алгоритмам генерации лабиринтов, что и стало причиной для написания этой статьи.
Примеры кода на языке Си, а также полный исходный код проекта на GitHub доступны под лицензией GNU GPLv3.
Ссылки на англоязычные ресурсы и проект вы найдете в конце статьи.

Описание алгоритма
Замечание: предполагается, что изначально у каждой клетки есть стенки со всех четырех сторон, которые отделяют ее от соседних клеток.


2. Пока есть непосещенные клетки



    3. Уберите стенку между текущей клеткой и выбранной
    4. Сделайте выбранную клетку текущей и отметьте ее как посещенную.
  2. Иначе если стек не пуст

    2. Сделайте ее текущей
  3. Иначе
    1. Выберите случайную непосещенную клетку, сделайте ее текущей и отметьте как посещенную.

Вы, вероятно, заметили что при выполнении условия 3, готовый лабиринт вероятнее всего будет иметь изолированную область.
Это условие включено в алгоритм в порядке исключения, на практике при нормальной работе алгоритма и правильных исходных данных, оно не выполняется никогда.

Реализация
Как уже сказано выше, предполагается, что при начале работы алгоритма все клетки отделены стенками.
Иллюстрация работы алгоритма
 0.    < - Начальная матрица.

1.    < - Выбираем начальную точку стартовой.

2.1.   < - Перемещаемся к случайному непосещенному соседу, пока таковые есть.

2.2.   < - Непосещенных соседей нет. Возвращаемся назад по стеку, пока нет непосещенных соседей.

2.1.   < - Непосещенные соседи есть. Перемещаемся к случайному непосещенному соседу.

2.    < - Нет непосещенных клеток. Лабиринт сгенерирован.

Программный код
Приступаем к самому интересному.

Начнем действовать по порядку и сначала сгенерируем начальную матрицу, с которой будет работать алгоритм.
Для удобства условимся, что все типы клеток заданы в перечислении.

Int maze; //создаем матрицу - двумерный массив for(i = 0; i < height; i++){ for(j = 0; j < width; j++){ if((i % 2 != 0 && j % 2 != 0) && //если ячейка нечетная по x и y, (i < height-1 && j < width-1)) //и при этом находится в пределах стен лабиринта maze[i][j] = CELL; //то это КЛЕТКА else maze[i][j] = WALL; //в остальных случаях это СТЕНА. } }
Теперь, когда все приготовления сделаны, можно приступать к генерации.

Typedef struct cell{ //структура, хранящая координаты клетки в матрице unsigned int x; unsigned int y; } cell; typedef struct cellString{ cell* cells; unsigned int size; } cellString;
Структуры значительно упростят жизнь при обмене информацией между функциями.

Отрывок кода, отвечающий за генерацию:

Cell startCell = {1, 1} cell currentCell = startCell; cell neighbourCell; do{ cellString Neighbours = getNeighbours(width, height, maze, startPoint, 2); if(Neighbours.size != 0){ //если у клетки есть непосещенные соседи randNum = randomRange(0, Neighbours.size-1); neighbourCell = cellStringNeighbours.cells; //выбираем случайного соседа push(d.startPoint); //заносим текущую точку в стек maze = removeWall(currentCell, neighbourCell, maze); //убираем стену между текущей и сосендней точками currentCell = neighbourCell; //делаем соседнюю точку текущей и отмечаем ее посещенной maze = setMode(d.startPoint, d.maze, VISITED); free(cellStringNeighbours.cells); } else if(stackSize > 0){ //если нет соседей, возвращаемся на предыдущую точку startPoint = pop(); } else{ //если нет соседей и точек в стеке, но не все точки посещены, выбираем случайную из непосещенных cellString cellStringUnvisited = getUnvisitedCells(width, height, maze); randNum = randomRange(0, cellStringUnvisited.size-1); currentCell = cellStringUnvisited.cells; free(cellStringUnvisited.cells); } while(unvisitedCount() > 0);
Как видно, реализация алгоритма проста и абстрактна от теории, как говорится, «справится даже ребенок».
Чтобы не перегружать статью, код функций, используемых в вышеприведенном отрывке, под спойлером.

Код функций

Функция getNeighbours возвращает массив непосещенных соседей клетки

CellString getNeighbours(unsigned int width, unsigned int height, int** maze, cell c){ unsigned int i; unsigned int x = c.x; unsigned int y = c.y; cell up = {x, y - distance}; cell rt = {x + distance, y}; cell dw = {x, y + distance}; cell lt = {x - distance, y}; cell d = {dw, rt, up, lt}; unsigned int size = 0; cellString cells; cells.cells = malloc(4 * sizeof(cell)); for(i = 0; i < 4; i++){ //для каждого направдения if(d[i].x > 0 && d[i].x < width && d[i].y > 0 && d[i].y < height){ //если не выходит за границы лабиринта unsigned int mazeCellCurrent = maze.y].x]; cell cellCurrent = d[i]; if(mazeCellCurrent != WALL && mazeCellCurrent != VISITED){ //и не посещена\является стеной cells.cells = cellCurrent; //записать в массив; size++; } } } cells.size = size; return cells;
Функция removeWall убирает стенку между двумя клетками:

MazeMatrix removeWall(cell first, cell second, int** maze){ short int xDiff = second.x - first.x; short int yDiff = second.y - first.y; short int addX, addY; cell target; addX = (xDiff != 0) ? (xDiff / abs(xDiff)) : 0; addY = (yDiff != 0) ? (yDiff / abs(yDiff)) : 0; target.x = first.x + addX; //координаты стенки target.y = first.y + addY; maze = VISITED; return maze; }
Сначала вычисляется значение разности координат второй и первой точек. Очевидно, значение может быть либо отрицательное, либо положительное, либо 0.

Надо найти такие координаты xy, чтобы при сложении их с координатами первой точки получались координаты стенки.

Так как мы точно знаем, что вектор разности между координатами стенки и первой точке равен либо (|1|, 0) либо (0, |1|), мы можем этим воспользоваться.

Таким образом, аддитив для x координаты при xDiff != 0 будет равен xDiff / |xDiff|, при xDiff = 0, нулю. Для y соответственно.
Получив аддитивы для x и y, мы легко вычисляем координаты стенки между первой и второй клетками и назначаем клетку по этим координатам посещенной.


Итак, теперь у нас есть генератор лабиринтов, который может строить запутанные лабиринты, размер которых ограничен только размером оперативной памяти.

В итоге, мы можем получить что-то такое:

Лабиринты. Осторожно, трафик!

100x100


  500x500



Генерация работает, теперь дело за малым: найти в таком лабиринте выход.

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

И все еще сильнее упрощается, так как нам больше не надо убирать стенки.

Алгоритм поиска пути бэктрекингом:
1. Сделайте начальную клетку текущей и отметьте ее как посещенную.
2. Пока не найден выход
  1. Если текущая клетка имеет непосещенных «соседей»
    1. Протолкните текущую клетку в стек
    2. Выберите случайную клетку из соседних
    3. Сделайте выбранную клетку текущей и отметьте ее как посещенную.
  2. Иначе если стек не пуст
    1. Выдерните клетку из стека
    2. Сделайте ее текущей
  3. Иначе выхода нет

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

Критерий нахождения «выхода» очень прост: достаточно сравнить координаты текущей точки и координаты «выхода»: если они равны, путь между стартовой и выходной точками найден.

Посмотрим что вышло:

Вот и все, что нужно для самой простой реализации генератора случайных лабиринтов.

Для тех, кто заинтересовался, полный исходный код проекта на GitHub.

Нарисовать этот лабиринт очень просто. Возьмите лист бумаги. Нарисуйте крест и поставьте точки в центре каждой из четырех четвертей креста. Это – прототип лабиринта.

Шаг 1. Прототип трехкружного лабиринта

Теперь нарисуйте, начиная с вершины креста, дугу – либо вверх и налево к точке в верхней левой четверти, либо вверх и направо к точке в верхней правой четверти. В данном примере – вверх и направо.

Шаг 2. Первая дуга

Затем от точки в верхней левой четверти креста проведите дугу к правому концу горизонтальной линии.

Шаг 3. Вторая дуга

А от левого конца этой горизонтальной линии – к точке в нижней правой четверти креста.

Шаг 4. Третья дуга

И наконец, от точки в нижней левой четверти креста – к нижнему концу вертикальной линии.

Шаг 5. Четвертая дуга

Этот лабиринт называется левосторонним, так как первый поворот при входе в него – налево. Если первую дугу провести вверх и налево, получится правосторонний лабиринт.

Пожалуйста, возьмите чистый лист бумаги и карандаш и нарисуйте три классических трехкружных лабиринта.
Очень важно сделать лабиринт своими руками, а не только умозрительно. В том, чтобы самостоятельно сделать лабиринт, есть нечто особенное. Это происходит после пятого или шестого раза. Действительно, когда известен способ, несложно понять рассудком, как чертится лабиринт, но после полудюжины рисунков руки перестают знать и начинают ведать, как это делается. Не пренебрегайте этими упражнениями, ибо они помогут понять этот магический инструмент таким способом, который никогда не откроется, если только читать или размышлять о лабиринтах. Классические лабиринты предполагают другой способ постижения.