|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
Найти такой путь из клетки [i1, j1] в клетку [i2, j2], чтобы сумма чисел по данному пути была минимальной07.03.2019, 08:28. Показов 4708. Ответов 12
Метки нет (Все метки)
Здравствуйте, есть такая задача:
1.Дан двумерный числовой массив размером N1xN2. 2.Найти такой путь из клетки [i1,j1] в клетку [i2,j2], чтобы сумма чисел по данному пути была минимальной. 3.Из каждой клетки массива допустимо двигаться вправо, влево, вверх или вниз. В клетки с нулями заходить нельзя. 4.Числа i1,i2,j1,j2 вводятся с клавиатуры. Задача на динамическое программирование, понимающие, помогите пожалуйста с алгоритмом, код сам могу написать.
0
|
|
| 07.03.2019, 08:28 | |
|
Ответы с готовыми решениями:
12
В матрице найти такой путь от первой колонки к последней, чтобы сумма чисел пройденных по пути была минимальная В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N Найти такой путь из клетки (1,1) в клетку (А, В), чтобы сумма чисел равнялась заданному числу К |
|
Заблокирован
|
|
| 07.03.2019, 08:32 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
| 07.03.2019, 12:00 [ТС] | |
|
А другие варианты решения есть ?
0
|
|
|
Заблокирован
|
|
| 07.03.2019, 12:30 | |
волной вроде тоже годится, а те чем плохи?
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
| 07.03.2019, 14:31 [ТС] | |
|
Обход графа в ширину - это и есть волновой обход не ? Просто волновой алгоритм мне нужно использовать в следующем задании, не в этом, данное же задание нужно решить без использования графов.
0
|
|
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
| 07.03.2019, 14:46 | |
|
Котананас, волновой алгоритм реализуется без использования графов и в первоначальном своем виде решает задачу поиска пути без учета стоимости прохода. Впрочем, вы же сами обозначили тему динамическое программирование.
Алгоритм. 1. Создать таблицу 1, в которую будет записываться оптимальная стоимость прохода в каждую ячейку на данном этапе оптимизации. 2. В начальную ячейку записать стоимость ее посещения, остальные ячейки заполнить числом -1.3. Создать новую таблицу 2 аналогично таблице 1. 4. Выполнить просмотр всех ячеек таблицы 2 в цикле. 4.1 Если текущая ячейка проходима (стоимость посещения > 0), то выбрать одну из проходимых ячеек слева, справа, сверху или снизу в таблице 1, стоимость прохода для которой минимальна. 4.2 Записать в текущую ячейку таблицы 2 стоимость прохода до выбранной ячейки + стоимость посещения текущей ячейки. 5. Переписать значения из таблицы 2 в таблицу 1. 6. Повторять шаги 3-5 до тех пор, пока есть хотя бы одна оптимизация. 7. После завершения цикла конечная ячейка таблицы 1 содержит минимальную стоимость прохода до нее. Чтобы сохранить маршрут, можно создать еще одну таблицу, в которой отмечать, какая из ячеек была выбрана для оптимизации.
1
|
|
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
| 07.03.2019, 16:46 | |
|
Сейчас заметил, что алгоритм получился не очень удачный: он делает больше шагов, чем требуется. Можно попробовать адаптировать алгоритм Дейкстры. Если получится, выложу сюда.
1
|
|
|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
| 07.03.2019, 17:33 [ТС] | |
|
Спасибо.
0
|
|
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
| 07.03.2019, 23:13 | |
Сообщение было отмечено Котананас как решение
Решение
При внимательном рассмотрении алгоритма Дейкстры выясняется, что он несколько избыточен для данной задачи. В графе больше свободы, чем в таблице. Попытки его упрощения приводят к волновому алгоритму с задержками. В отличие от базового его варианта, волна должна задерживаться в клетке на указанное количество шагов. Чтобы не просматривать все клетки в поиске следующего шага, можно использовать приоритетную очередь, из которой первыми извлекаются элементы с наименьшей оценкой.
Алгоритм. 1. Создать таблицу d, в которой все элементы равны -1, элемент (i1, j1) равен стоимости посещения данной ячейки.2. Поместить в очередь координаты (i1, j1).3. Извлечь из очереди координаты (i, j) с минимальной оценкой d[i][j].4. Рассмотреть соседние ячейки сверху, снизу, справа и слева. Если среди них есть доступные для посещения ( стоимость > 0) и ранее не посещенные (d[i'][j'] < 0), записать для них в таблицу d сумму d[i][j] + стоимость посещения выбранной ячейки. Поместить координаты этой ячейки (i', j') в очередь.5. Пока очередь не пуста, повторять шаги 3 - 4. Восстановление пути: запись направлений во вспомогательный массив или поиск пути от (i2, j2) к (i1, j1) по ячейкам таблицы d с минимальной оценкой d[i][j].
2
|
|
|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
| 09.03.2019, 19:54 [ТС] | |
|
Ответьте пожалуйста:
1.На 3 этапе мы извлекли элемент с минимальной оценкой, куда этот элемент записывается ? 2.на 4 этапе "Поместить координаты этой ячейки (i', j') в очередь", какой именно, в которую мы записали "d[i][j] + стоимость посещения выбранной ячейки" ? 3.В 5-ом пункте, где именно нужно ставить это условие ?
0
|
|
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
||||
| 09.03.2019, 20:35 | ||||
while (!priority_queue.empty()), в котором будут выполняться действия шагов 3-4. Очередь можно сделать на обычном массиве/векторе с последующей сортировкой по убыванию. Нужный элемент всегда будет в конце и удаляется из массива за 1 шаг.Если нужен код с примером реализации - скажите, выложу.
1
|
||||
|
0 / 0 / 0
Регистрация: 13.06.2018
Сообщений: 18
|
|
| 10.03.2019, 16:46 [ТС] | |
|
Спасибо, сделал, а как реализовать такую тему как у вас, чтобы в реальном времени показывало как по массиву идем ?
Добавлено через 1 час 49 минут Можете не отвечать, уже сделал.
0
|
|
|
0 / 0 / 0
Регистрация: 20.04.2021
Сообщений: 1
|
|
| 20.04.2021, 02:16 | |
|
0
|
|
| 20.04.2021, 02:16 | |
|
Помогаю со студенческими работами здесь
13
В таблице клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N) Найти последовательность из трех чисел, чтобы их сумма была равна 10 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|