Умовні позначення — Вхід - 2, Вихід - 3, Прохід - 0, Стіна - 1
Найкращі розміри матриці (легко сприймаються візуально) — від 10 до 15
Для розв'язання задачі було використано метод випадкового пошуку в глибину. Початково матрицю лабіринта можна розглядати як деяку шахову дошку, де "проходи" чергуються зі "стінами". Це справедливо, бо рух відбувається з кроком 2, прибираючи стіни на шляху до сусіднього "проходу".
Ми обираємо початкову клітину на одній зі стінок лабіринту, і запускаємо з неї випадковий пошук в глибину. Випадковість пошуку досягається завдяки постійному "перемішуванню" масиву з можливими напрямками, що гарантує випадковий вибір напрямку для настпуного кроку. Заповнити лабіринт шляхами вдається завдяки тому, що якщо з деякої клітини вдалося перейти в сусідню, то вона повертається у стек. Таким чином, клітина не повертається у стек тільки у випадку, якщо всі можливі сусідні кроки вже були виконані, що гарантує заповнення лабіринту проходами (стіни розставляємо на початку всюди, їми заповнювати не потрібно). Коли випадковий пошук у глибину генерує всі можливі (для цієї випадкової конфігурації) проходи, лишається випадково обрати клітинку виходу на краю лабіринту протилежному до клітинки з входом.
Перевага такого методу — шлях від старту до фінішу завжди існує за побудовою (будуємо усі можливі шляхи від старту, обираємо закінчення такого шляху на протилежному краю лабіринту).
Під час пошуку в глибину кожен прохід може бути розглянутий як поточна клітинка не більше ніж 4 рази, всього n^2 клітинок (фактичний розмір матриці більше, але частина — стіни). Вибір першої і останньої відбувається за константний час, для виведення отриманої матриці у кінці маємо квадратичну залежність від розміру матриці n. Всього маємо приблизно не більше ніж 4n^2+n2+c операція, де c — деяка константа. Отже, час роботи алгоритму = O(n^2).