|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
|
Поиск кратчайшего пути в матрице или установка факта, что такового не существует10.03.2014, 18:59. Показов 8159. Ответов 13
Метки нет (Все метки)
Всем привет!!!я начал решать задачку и у меня не получается, а не получается у меня самое главное понять как её нужно сделать , помогите пожалуйста !!! Итак вот описание
Задается квадратная матрица матрица (NxN) и размер "корабля" (MxM) . задается то что начальная точка находится в левом верхнем углу , а конечная в правом нижнем , также известно что если в матрице встречается символ "." (точка ) следовательно это проходимое место , если встретится "*" то непроходимое , и найти нужно длину самого короткого пути либо убедиться что пути нет. Подскажите пожалуйста в какую сторону копать или мб кто нибудь встречался с подобными заданиями, или какой нибудь ресурс посвященный алгоритму знает!!! Всем спасибо за внимание!
0
|
|
| 10.03.2014, 18:59 | |
|
Ответы с готовыми решениями:
13
Поиск кратчайшего пути в матрице
Поиск кратчайшего пути в матрице через рекурсию |
| 10.03.2014, 19:19 | |
|
Это задачка на "динамику" (усложненная "размерами"), что не так уж просто. Поэтому не получается сходу = нормально. Метода такая: в каждой клетке храним величину минимального пути до нее + координаты клетки из которой пришли. Теперь "ходим" всеми возможными ходами (проверяем влазит ли корабль) из первой клетки. Попав в клетку вычисляем путь до нее (предыдуший + 1) и сравниваем с записанным в клетке. Если новый путь оказался короче - обновляем информацию в клетке и делаем все ходы из нее. На первый взгляд это ужасно - огромное число вариантов! Но на самом деле большинство комбинаций отсеется т.к. "старый путь короче". В конце-концов не остается клеток для перебора, тогда смотрим на правую нижнюю - если там сидит путь, то он минимальный
1
|
|
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
|
| 10.03.2014, 19:21 [ТС] | |
|
спасибо буду пробовать!
0
|
|
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 10.03.2014, 22:30 | |
|
Оглядываясь на решение которое предложил Igor3D хочу предложить свое.
Можно свести решение данной задачи к классической, и наверное более простым способом. Основная идея - в каждую ячейку исходного массива пытаемся поместить левый верхний край корабля и проверяем помещается ли сам корабль, результат записываем в новый массив. Получаем массив (N-M)^2 и уже на нем решаем самую обычную задачу.
1
|
|
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
||
| 11.03.2014, 08:13 [ТС] | ||
|
спасибо за совет, но я не очень понял как это так
Спасибо!
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||||||||
| 11.03.2014, 11:28 | ||||||||
|
Алгоритмы поиска на графах(википедия) Добавлено через 10 минут
1
|
||||||||
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
|
| 16.03.2014, 11:12 [ТС] | |
|
0
|
|
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 16.03.2014, 11:57 | |
|
Матрица размера (N-M)*(N-M) (даже более правильно будет (N-M+1)^2) полностью описывает возможные положения корабля размера M в поле размера N.
Если следить за положениями одного из угла корабля, то он всегда лежит в некотором квадрате со стороной (N-M+1). Вот как пример какие положения полоска размера 3 может принимать внутри полоски размера 5 11100 01110 00111 Очевидно, что для задания положения полоски размера 3 достаточно взять только один из её краев, который будет располагаться в полоске размера (5-3+1)=3
1
|
|
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
||||||||||||||||
| 16.03.2014, 12:59 [ТС] | ||||||||||||||||
|
понятно, Спасибо!
Добавлено через 24 минуты что то не получается у меня опять , вот что понаделал
далее создаю сконвертированную матрицу
Спасибо за внимание !
0
|
||||||||||||||||
|
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
|
|
| 16.03.2014, 13:29 | |
|
простите, совсем не ясно, какую роль играет размер корабля. ну есть у меня матрица и какие-то клетки проходимы, какие-то нет. найти кратчайший путь. где здесь размер?
0
|
|
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
||
| 16.03.2014, 17:59 [ТС] | ||
|
00100 00100 01000 0000Ф Сразу отмечу что пути для корабля размером 2х2 нет т к он "не пролезет" в этом маленьком перешейке а если будем рассматривать для корабля 1х1 то он дойдёт до финишной точки (финишная точка - Ф) вот наверное в этом и есть разница
0
|
||
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
||
| 16.03.2014, 18:44 | ||
|
Голова сейчас не варит чтобы разбираться в этом коде.
1
|
||
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
||||||
| 16.03.2014, 19:22 [ТС] | ||||||
|
Да я выводил) там почему то вниз не идет то есть допустим есть вот такое
..**... ..**... .**.... .**.... ........ он вот выводит вот такой результат 12**... 2.**... .**.... ........ а дальше( т е прямо вниз) он путь не видит почему то Спасибо за внимание! вот я ещё немного переисал функцию волновго алгоритма
0
|
||||||
|
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
|
|
| 31.03.2014, 16:44 [ТС] | |
|
Всё !!! спасибо всем!!! получилось !!!!!
0
|
|
| 31.03.2014, 16:44 | |
|
Помогаю со студенческими работами здесь
14
Нахождение кратчайшего пути по матрице, или передвижение привидений в игре Пакмен Создание графа по матрице и поиск кратчайшего пути из одного графа в другой Поиск кратчайшего пути Поиск кратчайшего пути Поиск кратчайшего пути Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|