|
|
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Ничего алгоритм Дейкстры не отсекает. Он меняет порядок перебора вершин (в первую очередь на каждом шаге рассматривается наиболее "перспективная", то есть "ближайшая" к исходной для данной итерации, и потому как только ей оказывается целевая вершина, можно сразу утверждать, что найдет кратчайший путь). "Волна" (breadth-first-search) в принципе расчитана на графы любой топологии (не обязательно прямоугольные сетки), но вершины для перебора хранятся в "обычной" очереди (queue); а в алгоритме Дейкстры всё то же самое, но очередь заменена на кучу (heap) или очередь с приоритетом (priority queue), что суть разные названия одной струтуры данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 18:48:08 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotНичего алгоритм Дейкстры не отсекает. Он меняет порядок перебора вершин (в первую очередь на каждом шаге рассматривается наиболее "перспективная", то есть "ближайшая" к исходной для данной итерации, и потому как только ей оказывается целевая вершина, можно сразу утверждать, что найдет кратчайший путь). "Волна" (breadth-first-search) в принципе расчитана на графы любой топологии (не обязательно прямоугольные сетки), но вершины для перебора хранятся в "обычной" очереди (queue); а в алгоритме Дейкстры всё то же самое, но очередь заменена на кучу (heap) или очередь с приоритетом (priority queue), что суть разные названия одной струтуры данных. Ну как же не отсекает если отсекает заведомо безперспективные варианты. Он просто туда не переходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 20:58:25 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
rstudioНу как же не отсекает если отсекает заведомо безперспективные варианты. Он просто туда не переходит. Что значит "не переходит"? Может и перейти, если со временем выяснится, что "перспективные" варианты не дают лучшего результата. Ни одна ситуация не "забывается", а именно это называют "отсечением", когда какое-то подмножество решений вообще исключается из перебора ещё до окончания работы алгоритма, и к нему не возвращаются ни при каких условиях (например, если уже найдено решение, лучшее, чем предельно возможное на этом подмножестве -- простейший алгоритм ветвей и границ). В алгоритме Дейкстры такого не происходит. В частности, если маршрута до целевой вершины не существует вообще, то будут перебраны все вершины графа, достижимые из исходной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 21:25:43 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotAndreTMА максимумом будет сумма всех клеток, так что это будет задача "пройти по полю из угла в угол, побывав в каждой клетке по одному разу". Алгоритм этот уже известен и реализуется в несколько строк. Несовсем (не всегда) так. Случай с чётным количеством строк и чётным количеством столбцов совсем не очевиден. Вот процедура, заполняющая массив (maxI,maxJ,2) векторами перехода к следующему полю (двигаясь от 1,1 до maxI,maxJ "змейкой", перпендикулярной диагонали), при этом обходятся все поля без пересечений Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 21:34:05 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
AndreTM Код: plaintext 1. 2. 3. 4. Диагональные перемещения? Скукота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 22:09:47 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotДиагональные перемещения? Скукота. Вообще, это было по поводу "Случай с чётным количеством строк и чётным количеством столбцов совсем не очевиден", поскольку для любой матрицы доказывается (как сам метод, так и инвариант алгоритма). А что, предлагаете стохастически решать? :) Просто, я "поиск максимума" со слов ТС именно так понял... а про минимум уже рассуждений хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 22:27:54 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
AndreTMА что, предлагаете стохастически решать? Нет, предлагаю найти оптимальную "змейку", решив, какую(ие) именно клетку(и) выбросить из полного обхода (который невозможен при чётном количестве столбцов и строк, если не делать диагональных скачков, отсутствие коих, на мой взгляд, подразумевается, поскольку с ними в задаче поиска маршрута минимальной суммы становятся бессмысленными вертикально-горизонтальные перемещения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 23:17:51 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Как это полный обход невозможен? Тут уж все только глубиной стека возвратов будет определяться да мощностями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 23:26:36 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Честно говоря, я не понял что в excel-нике. Два каких-то маршрута, ни один из которых не покрывает всю матрицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2010, 23:39:11 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Ну, это для примера. Рекурсивный поиск минимума и максимума с условием движения только вниз или вправо. Естественно, можно сделать из этого алгоритма поиск и во все стороны (ну, без диагоналей), но данная реализация будет медленной. Поэтому должно делаться в массиве и с дополнительным массивом-маской пути. Ресурсов, конечно, требует немалых... но и работать будет на любых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2010, 00:02:24 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotНичего алгоритм Дейкстры не отсекает. Он меняет порядок перебора вершин (в первую очередь на каждом шаге рассматривается наиболее "перспективная", то есть "ближайшая" к исходной для данной итерации, и потому как только ей оказывается целевая вершина, можно сразу утверждать, что найдет кратчайший путь). "Волна" (breadth-first-search) в принципе расчитана на графы любой топологии (не обязательно прямоугольные сетки), но вершины для перебора хранятся в "обычной" очереди (queue); а в алгоритме Дейкстры всё то же самое, но очередь заменена на кучу (heap) или очередь с приоритетом (priority queue), что суть разные названия одной струтуры данных. гуглим на википедии Дейкстру и читаем Все соседи вершины 1 проверены. Текущее минимальное расстояние до вершины 1 считается окончательным и пересмотру не подлежит(то, что это действительно так, впервые доказал Э. Дейкстра) . Вычеркнем её из графа, чтобы отметить, что эта вершина посещена. Улавливаешь ? Дейкстра доказал что можно найти минимальное расстояние для этой вершины и больше никогда туда не возвращаться. Тоесть отсечь любые дополнительные расчеты "в лоб" с этой вершиной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 14:49:36 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
rstudio, я прекрасно знаю, как и почему работает алгоритм Дейкстры. Но rstudioОн просто туда не переходит. rstudioбольше никогда туда не возвращаться. несколько разные вещи. Иными словами, ты ни на что не возразил из мною сказанного. Отсутствие же "дополнительных расчётов" при уже найденном решении (подзадачи) называть "отсечением" -- более чем странно; эдак любое, скажем, аналитическое решение можно записать в "методы отсечения", оно же все варианты в лоб не перебирает. Классическими примерами алгоритмов с отсечениями являются метод ветвей и границ (и его улучшенная версия -- альфа-бета отсечения) и алгоритм Гомори (который иногда даже так и называют -- "метод отсечений Гомори"). Вот их лучше "погугли в википедии", чтобы называть вещи своими именами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 15:23:33 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotОтсутствие же "дополнительных расчётов" при уже найденном решении (подзадачи) называть "отсечением" -- более чем странно; эдак любое, скажем, аналитическое решение можно записать в "методы отсечения", оно же все варианты в лоб не перебирает. В аналитеческое решение к отсечениям можно записать только такое решение, которое отсекает заведомо доказанные провальные ветки . Вот Дейкстра тоже, аналитически доказал, что больше обсчитывать не нужно. Минимальное расстояние есть окончательным и пересчетам не подлежит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 15:59:24 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Ну ладно. Пусть, скажем, поиск корня линейного уравнения a * x = b при a =/= 0, b =/= 0 по аналитической формуле x = b / a тоже будет называться "методом отсечения", раз уж это аналитически доказано и полный перебор не производится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 16:11:25 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiotНу ладно. Пусть, скажем, поиск корня линейного уравнения a * x = b при a =/= 0, b =/= 0 по аналитической формуле x = b / a тоже будет называться "методом отсечения", раз уж это аналитически доказано и полный перебор не производится. Нет. Во-первых здесь ограничение потому что на ноль делить нельзя. Во-вторых, отсечение это по сути сужение расчетов за счето того, что в процессе работы алгоритма были высчитаны некоторые данные, которые по сути доказали несостоятельность дальнейшего развития с этой точки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 16:18:30 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
rstudioВо-первых здесь ограничение потому что на ноль делить нельзя. Никто и не просит: junior idiota =/= 0, b =/= 0 rstudioВо-вторых, отсечение это по сути сужение расчетов за счето того, что в процессе работы алгоритма были высчитаны некоторые данные, которые по сути доказали несостоятельность дальнейшего развития с этой точки. Именно так. В процессе работы алгоритма было высчитано отношение b к a, которое по сути доказало несостоятельность дальнейших поисков значений x, удовлетворяющих равенству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 16:38:09 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
junior idiot, ладно, закроем этот разговор. Он уже скорей напоминает разговор о русском языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 17:39:35 |
|
||
|
Помогите решить задачку
|
|||
|---|---|---|---|
|
#18+
Ну, в принципе, всё уже понятно. Минимум ищем по Дейкстре, а максимум - перебором с условием окончания при нахождении первого же полного пути. Единственный затык - алгоритм поиска максимума при условии того, что у нас чётные M и N более 4, плюс наличие неположительных значений в матрице... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2010, 23:47:52 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36829074&tid=1343479]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 448ms |

| 0 / 0 |
