Алгоритм создания сегмента лабиринта

Я хочу создать лабиринт, который выглядит следующим образом:

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

В частности, яне хочу лабиринт, как это:

потому что он не «бежит» только в одном направлении.

Кроме того, было бы неплохо, если бы решение этого лабиринта требовало от игрока «возврата» - то есть не просто все время двигаться вверх.