0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
1

Рекурсия. Написать программу поиска минимального пути для произвольной пары городов

19.12.2013, 11:50. Показов 4003. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. Помогите пожалуйста решить задачку:
Расстояния между городами заданы матрицей (Если между городами i,j есть прямой путь с расстоянием N, то элементы матрицы A(i,j) и A(j,i) содержат значение N, иначе 0). Написать программу поиска минимального пути для произвольной пары городов.

Нужно использовать рекурсию.
Буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2013, 11:50
Ответы с готовыми решениями:

Существует N городов для каждой пары городов (і, j) можно построить путь
Существует N городов для каждой пары городов (і, j) можно построить путь который соединит их, но не...

Написать программу поиска вектора минимального по длине
Здравствуйте. Пожалуйста помогите решить данную задачу. Даны m векторов х1 = (х11, х21, ...,хn1),...

Написать программу поиска минимального пути обхода
Расстояния между городами заданы матрицей (Если между городами i,j есть прямой путь с расстоянием...

Граф. Для каждой пары городов найти длину кратчайшего пути между ними.
Задана система двухсторонних дорог. Для каждой пары городов найти длину кратчайшего пут между ними.

11
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
19.12.2013, 12:02 2
Алгоритмы, БФС(обход графа в ширину), ДФС (обход графа в глубину), алг. Дейкстры Вам в помощь!
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
19.12.2013, 18:48  [ТС] 3
Помогите пожалуйста, не могу сообразить как реализовать написанное выше
0
44 / 44 / 9
Регистрация: 01.02.2012
Сообщений: 823
19.12.2013, 19:15 4
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
Алгоритмы, БФС(обход графа в ширину), ДФС (обход графа в глубину), алг. Дейкстры Вам в помощь!
а как вы хотите применять БФС/ДФС на взвешенном графе?

thejadefalcon, или граф невзвешенный? N может быть любым или только 0, 1?
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
19.12.2013, 19:41  [ТС] 5
Цитата Сообщение от max777alex Посмотреть сообщение
а как вы хотите применять БФС/ДФС на взвешенном графе?

thejadefalcon, или граф невзвешенный? N может быть любым или только 0, 1?
Видимо, что N может быть любым
0
44 / 44 / 9
Регистрация: 01.02.2012
Сообщений: 823
19.12.2013, 19:49 6
Цитата Сообщение от thejadefalcon Посмотреть сообщение
Видимо, что N может быть любым
странно, а насчет рекурсии вы уверены? было бы очень логично решать эту задачу алгоритмом Флойда-Уоршелла, но он нерекурсивный
0
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
20.12.2013, 09:15 7
max777alex, на взвешеном никак, Дейкстра на взвешеном

Добавлено через 53 секунды
thejadefalcon, а Вы уже пытались ? покажите код или спросите что непонятно
0
44 / 44 / 9
Регистрация: 01.02.2012
Сообщений: 823
20.12.2013, 09:16 8
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
max777alex, на взвешеном никак, Дейкстра на взвешеном
Ну это да, но я что-то не умею писать рекурсивную Дейкстру, а вы?
0
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
20.12.2013, 09:37 9
max777alex, есть реализация Дейкстры через БФС, но с использованием приоритетной очереди, но там кажись не очень-то и рекурсия ...
0
44 / 44 / 9
Регистрация: 01.02.2012
Сообщений: 823
20.12.2013, 09:56 10
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
max777alex, есть реализация Дейкстры через БФС, но с использованием приоритетной очереди, но там кажись не очень-то и рекурсия ...
там не БФС, а та же Дейкстра, только один цикл в ней заменен на извлечение элемента из кучи
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
20.12.2013, 11:02  [ТС] 11
У меня получилось реализовать через рекурсию алгоритм Дейкстры, но совершенное рандомно, особенно если количество городов много, выдает ошибку. В других случаях считат правильно. Чуть позже код скину.
0
44 / 44 / 9
Регистрация: 01.02.2012
Сообщений: 823
20.12.2013, 11:13 12
C++
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <ctime>
#include <iomanip>
#include <cstring>
using namespace std;
 
const int MAXN = 100;
 
int a[MAXN][MAXN];
int n;
 
void init()
{
    cin >> n;
    for(int i = 0; i < n; ++i)
    {
        for(int j = 0; j < n; ++j)
            cin >> a[i][j];
    }
}
 
int d[MAXN];
bool was[MAXN];
 
void dijkstra()
{
    int minDist = 1000000;
    int minInd = -1;
 
    for(int i = 0; i < n; ++i)
    {
        if(!was[i] && minDist > d[i] && d[i] != -1)
        {
            minDist = d[i];
            minInd = i;
        }
    }
 
    if(minInd == -1)
        return;
 
    was[minInd] = 1;
 
    for(int i = 0; i < n; ++i)
    {
        if(a[minInd][i] && (d[i] == -1 || d[i] > d[minInd] + a[minInd][i]))
            d[i] = d[minInd] + a[minInd][i];
    }
    dijkstra();
}
 
int main()
{
    init();
 
    int u, v;
    cin >> u >> v;
 
    memset(d, -1, sizeof d);
    memset(was, 0, sizeof was);
    d[u] = 0;
 
    dijkstra();
 
    cout << d[v] << endl;
 
    return 0;
}
0
20.12.2013, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2013, 11:13
Помогаю со студенческими работами здесь

Написать программу для поиска минимального среди 5,7,3,9,6,5
Заранее спасибо

Написать рекурсивную программу поиска минимального элемента массива
Написать рекурсивную программу поиска минимального элемента массива.

Написать программу поиска и вывода всех пар одинаковых соседских символов, если такие пары ссуществуют.
Дана строка. Написать программу поиска и вывода всех пар одинаковых соседских символов, если такие...

Описать алгоритм поиска кратчайшего пути от произвольной вершины к заданной
Ребят, помогите, пожалуйста с задачей. Нужно описать алгоритм поиска кратчайшего пути от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru