|
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
|
||||||
Перевод лабиринта в граф24.11.2016, 14:56. Показов 6111. Ответов 10
Метки нет (Все метки)
Подскажите, пожалуйста, если я задаю лабиринт таким вот образом :
0
|
||||||
| 24.11.2016, 14:56 | |
|
Ответы с готовыми решениями:
10
Граф задан цепными списками. Построить его реберный граф Как преобразовать неориентированный граф в ориентированный граф из матричной записи Ориентированный граф задан матрицей смежности. Нарисовать граф с наименьшим количеством пересечений |
|
|
|
| 24.11.2016, 15:24 | |
|
дать хорошее определение вершины графа для этой ситуации
например вершина - это если поле заполнено (сверху или снизу) И (справа или слева) соответственно далее после отделения вершин рассмотреть все остальные заполненные поля и переводить их в ребра, связывающие вершины
1
|
|
|
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
|
|
| 24.11.2016, 15:29 [ТС] | |
|
Я беру каждую клетку и если она имеет более двух свободных соседних клеток, то я считаю её вершиной и на её место ставлю номер ей соответствующий.
А вот как дальше ввести рёбра не знаю. Добавлено через 1 минуту Думаю может пробежаться сначала по всем рядам горизонтально и присоединять вершины учитывая стенки лабиринта, а потом тоже самое сделать вертикально. Но возникает проблема по времени.
0
|
|
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
||
| 24.11.2016, 18:34 | ||
|
Если нужно найти проход из одной клетки в другую, то вершины -- свободные клетки
1
|
||
|
|
|
| 24.11.2016, 20:25 | |
|
да, забыл сказать, тут надо инвертировать сначала лабиринт - пустые сделать непустыми и наоборот.
как найти вершины, я показал, пронумеруем их по ходу нахождения и запомним их координаты в отдельном массиве а в этом массиве промаркируем их. например, заменим буквой X. теперь опять бежим по массиву и для каждого знака # запускаем поиск по горизонтали и вертикали ближайших вершин (X) дошли до вершин с обеих сторон - вот вам ребро. записали, пометили например * продолжаем, пока на экране есть #
1
|
|
|
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
|
||
| 24.11.2016, 22:26 [ТС] | ||
|
Мне необходимо используя DFS и BFS решить задачу поиска выхода из лабиринта, а потом нарисовать решение и вывести его в консоль.
Добавлено через 15 минут
0
|
||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||
| 24.11.2016, 23:10 | ||
|
1
|
||
|
|
||||||||||||||||
| 24.11.2016, 23:12 | ||||||||||||||||
|
попробовал накидать более подробно, всплыли подводные камни, если коридоры шире единицы - плохо.
попробую оптимизировать
для этого заведем список вершин но вершина будет не точкой а прямоугольником! и будет хранить ID и 4 координаты. x,y,w,h. ниже объясню. смотрим на прямоугольник из одной точки - точки A. это первая вершина (1,0, 1,1) ищем пустое пространство вокруг А. точка (1,1). подходит. назовем ее B. из точки B "надуваем" (просчитываем, пытаемся вместить в пустое пространство) два прямоугольника - один в ширину, потом вниз, другой вниз, потом в ширину выбираем из них макс. по площади. запоминаем B как вершину (1,1, 8,2) - 8.2 -это ширина и высота найденного прямоугольника. помечаем все, что входит в B, непустым
продолжаем искать вокруг прямоугольника A (1,0,1,1) если есть еще пустые по периметру, повторяем. переходим к прямоугольнику B и ходим уже по его периметру. вот примерно так будут развиваться события
это просто оптимизация метода волны.
1
|
||||||||||||||||
|
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
|
|
| 25.11.2016, 00:14 [ТС] | |
|
К сожалению все советы тщетны.
Я беру указанный выше лабиринт и считываю его в двумерный массив. Первая координата - ряд, вторая - столбец. Теперь мне необходимо сначала узнать количество вершин в графе, который задаёт данный лабиринт, потом найти решение лабиринта в графе и наконец-то вывести решение, нарисованное в этом же лабиринте, в консоль. Считать лабиринт в массив - нет проблем. Узнать количество вершин, благодаря совету выше, просто посчитав все пустые соседние клетки - нет проблем. Перенести лабиринт в граф - есть проблемы. Граф у меня работает исключительно на числах и каждой вершине должно ставиться в соответствие отличное число. Как это реализовать я не знаю. Найти решение в графе - нет проблем. Вывести решение в графе в консоль - не имею представления как это сделать.
0
|
|
|
|
|
| 25.11.2016, 00:34 | |
|
как узнать кол-во вершин, не перечислив их
а если перечисляете, то почему бы не пронумеровать? не понимаю суть проблемы Добавлено через 1 минуту решение в консоли - как вариант перечисление координат вершин (0,0) (10,0) (10,2) (25,2) ....
1
|
|
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||
| 25.11.2016, 01:24 | ||
|
1
|
||
| 25.11.2016, 01:24 | |
|
Помогаю со студенческими работами здесь
11
Реализовать граф от 1 до 10: граф связный; -число от 1 до 10, могут повторяться Дан список, содержащий смешанный граф. Выбрать из него однонаправленные ветви и занести в результирующий граф Считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл Разработка лабиринта Выход из лабиринта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|