|
|
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Дана матрица (размерность может быть любая) заполненная числами. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2010, 17:08 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
dimbasbearПри переходе из одной ячейки в другую - числа этих ячеек суммируются. Как дойти из ячейки A1 в E4 чтобы сумма была минимальной и наоборот ? В лоб: перебором всех путей и суммой получающейся в процессе каждого пути. Университетов не заканчивали, так что о возможном математическом методе можем и не знать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2010, 18:23 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Алгоритм Дейкстры или Priority-First-Search (что то же самое). Далее -- google/wikipedia, что больше нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2010, 20:01 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
dimbasbear, строишь рекурсивную функцию, каторая проверяет путь через все соседние клетки самой себя. И возращаешь пару: путь и сумма. зы. это без математики, самый банальное 20 строчное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 00:50 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
не могли бы вы привести конкретный пример на любом из языков, например pascal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 10:18 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Конечно . Пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 11:11 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Еще бы уточнить - путь строится любом направлении, или только вправо/вниз/(вправо-вниз)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 14:33 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
AndreTMЕще бы уточнить - путь строится любом направлении, или только вправо/вниз/(вправо-вниз)? Строиться может в любом направлении важно чтобы когда добрался до конечной точки сумма была максимальной или минимальной :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 15:33 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Похоже мы имеем дело с графом, у которого "веса" стоят на вершинах. Для Дейкстры надо будет сделать перерасчёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 17:01 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
maytonПохоже мы имеем дело с графом, у которого "веса" стоят на вершинах. Для Дейкстры надо будет сделать перерасчёт. Он же тривиален и делается "на лету". Хотя может быть сделан, кстати, двумя разными способами (считать весом дуги вес вершины, для которой она является исходящей или для которой она является входящей), которые будут давать один и тот же результат (маршрут). Что-то в этом роде на питоне: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 17:51 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Это, блин, азбука (см.). С гарантией делается ТОЛЬКО прямым перебором. Любая эвристика дает только наиболее вероятный путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 19:54 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
УнрегистередЭто, блин, азбука (см.). С гарантией делается ТОЛЬКО прямым перебором. Любая эвристика дает только наиболее вероятный путь. Чушь сказал. Ты хоть понял что мы говорим об Алгоритме Дейкстры? Какие прямые переборы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2010, 20:00 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Прошу прощения. Невнимательно прочел исходный пост, показалось, что речь идет о максимальной сумме. Для минимальной суммы (если значения неотрицательны) действительно будет работать алгоритм Дейкстры. И вообще любой рекурсивный алгоритм, выбирающий соседний элемент с меньшим весом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 12:59 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Унрегистеред, Любая задача максимизации однозначной функции может быть переформулирована в задачу минимизации другой однозначной функции; решения этих задач (точки оптимума) будут совпадать. Это же очевидно. "F(x) -> max" эквивалентно "G(x) = -F(x) -> min" В данной задаче достаточно приписать минус ко всем числам в матрице. Или переопределить оператор сравнения элементов priority queue (для c++/c#/java). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 13:12 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiot Код: plaintext 1. 2. 3. Я тут прикинул на глаз. Оптимальный путь должен быть (для 4-х связных соседей) примерно такой: Код: plaintext 1. 2. 3. Стоимость = 35. У тебя такой-же ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 13:25 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Похоже, что да. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 13:33 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
А максимум, после добавления строки Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 13:37 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotА максимум, после добавления строки Код: plaintext Код: plaintext Хотя это весьма глупо. Также как и это: junior idiot Унрегистеред, Любая задача максимизации однозначной функции может быть переформулирована в задачу минимизации другой однозначной функции; решения этих задач (точки оптимума) будут совпадать. Это же очевидно. "F(x) -> max" эквивалентно "G(x) = -F(x) -> min" В данной задаче достаточно приписать минус ко всем числам в матрице. Или переопределить оператор сравнения элементов priority queue (для c++/c#/java). Ляпнул неподумавши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 13:42 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotПохоже, что да. Код: plaintext Если слегка изменить исходные данные. Ввести туда скажем бесконечно большой вес (для простоты пускай будет X), то постановка приобретает несколько иной оттенок. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 14:44 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
а там отсечения есть ? например если на промежуточном этапе получили сумму которая больше чем сумма какого нибудь варианта до этого, то закончить поиск и перейти к следующему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 14:52 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
У "волны" нет отсечений. Вернее для неё отсечения безсмысленны т.к. на каждом уровне рекурсии происходит проверка следующего уровня и тут-же возврат наверк для перехода к следующей ветке. Да и сама рекурсия там "вырождена" в вычисления на декартовой плоскости. Для Дейкстры - не знаю. Надо подумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2010, 15:06 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Вообще, ТС сказал, что двигаться можно в любом направлении (я так понимаю, что и по диагонали, и влево, и вверх... естественно, без пересечений пути). Тогда задача нахождения минимального пути решается по Дейкстре (ну, граф будет немного побольше, но это непринципиально). А максимумом будет сумма всех клеток, так что это будет задача "пройти по полю из угла в угол, побывав в каждой клетке по одному разу". Алгоритм этот уже известен и реализуется в несколько строк. Если же матрица будет содержать и отрицательные значения, то минимум можно найти по Беллману-Форду, а максимум можно посчитать и перебором путей, например... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 14:54 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
AndreTMВообще, ТС сказал, что двигаться можно в любом направлении (я так понимаю, что и по диагонали, и влево, и вверх... естественно, без пересечений пути). Думаю нет. Тогда задача нахождения минимального пути решается по Дейкстре (ну, граф будет немного побольше, но это непринципиально). Волна - это тот-же Дейкстра. Только частный случай, оптимизированный для декартова порядка вершин и одинаковых весов дуг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 15:31 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
AndreTMА максимумом будет сумма всех клеток, так что это будет задача "пройти по полю из угла в угол, побывав в каждой клетке по одному разу". Алгоритм этот уже известен и реализуется в несколько строк. Несовсем (не всегда) так. Случай с чётным количеством строк и чётным количеством столбцов совсем не очевиден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 15:46 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36829010&tid=1343479]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 203ms |
| total: | 522ms |

| 0 / 0 |
