С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 19.11.2021
Сообщений: 3
1

Гамильтонов цикл для неориентированного графа

19.11.2021, 20:00. Показов 1326. Ответов 5

Author24 — интернет-сервис помощи студентам
Есть код для нахождения Гамильтонова цикла в графе который задается матрицой.

Можно ли как-то сделать код для Списка инцидентности?
в нем мы задаем от какой точки к какой будет путь построен, но так как это неориентированный граф, то мы должны задавать в разном порядке и все должно работать

код:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <vector>
#include <Windows.h>
#include <stack>
#include <unordered_map>
#include <string>
#include <iostream>
using namespace std;
 
#define V 5
 
void printSolution(int path[]);
 
bool isSafe(int v, bool graph[V][V],
    int path[], int pos)
{
    if (graph[path[pos - 1]][v] == 0)
        return false;
 
 
    for (int i = 0; i < pos; i++)
        if (path[i] == v)
            return false;
 
    return true;
}
 
bool hamCycleUtil(bool graph[V][V],
    int path[], int pos)
{
    if (pos == V)
    {
        if (graph[path[pos - 1]][path[0]] == 1)
            return true;
        else
            return false;
    }
 
    for (int v = 1; v < V; v++)
    {
        if (isSafe(v, graph, path, pos))
        {
            path[pos] = v;
 
            if (hamCycleUtil(graph, path, pos + 1) == true)
                return true;
 
            path[pos] = -1;
        }
    }
 
    return false;
}
 
bool hamCycle(bool graph[V][V])
{
    int* path = new int[V];
    for (int i = 0; i < V; i++)
        path[i] = -1;
 
    path[0] = 0;
    if (hamCycleUtil(graph, path, 1) == false)
    {
        cout << "\nSolution does not exist";
        return false;
    }
 
    printSolution(path);
    return true;
}
 
void printSolution(int path[])
{
    cout << "Solution Exists:"
        " Following is one Hamiltonian Cycle \n";
    for (int i = 0; i < V; i++)
        cout << path[i] << " ";
 
    cout << path[0] << " ";
    cout << endl;
}
 
int main()
{
    bool graph1[V][V] = { {0, 1, 0, 1, 0},
                        {1, 0, 1, 1, 1},
                        {0, 1, 0, 0, 1},
                        {1, 1, 0, 0, 1},
                        {0, 1, 1, 1, 0} };
 
    hamCycle(graph1);
 
    bool graph2[V][V] = { {0, 1, 0, 1, 0},
                         {1, 0, 1, 1, 1},
                         {0, 1, 0, 0, 1},
                         {1, 1, 0, 0, 0},
                         {0, 1, 1, 0, 0} };
 
    hamCycle(graph2);
 
    return 0;
}
Добавлено через 1 час 27 минут
Никто не знает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2021, 20:00
Ответы с готовыми решениями:

Ввод списка ребер для взвешенного неориентированного графа
Здравствуйте, подскажите, пожалуйста, как сделать следующую вещь. Имеется вот такой код для...

Поиск кратчайших путей из одного источника для неориентированного графа
Дорогие программисты! Прошу вас помочь мне в очень срочном деле! Очень нужен код программы,...

Найти длину кратчайшего пути из А в B для взвешенного неориентированного графа
Здравствуйте. Программа находит длину кратчайшего пути из А в B для взвешенного неориентированного...

Для заданного списка рёбер неориентированного графа проверьте, является ли он полным
Здравствуйте! Нужна помощь с задачей: Граф называется полным, если любая пара его различных...

K-связность неориентированного графа
Ребят, третью неделю уже думаю, не могу решить. Нужно написать программу на с++, определяющую...

5
Злостный нарушитель
9558 / 5187 / 1182
Регистрация: 12.03.2015
Сообщений: 24,489
19.11.2021, 20:04 2
Цитата Сообщение от KolyaLeonov Посмотреть сообщение
Никто не знает?
Дело не в этом. Главное - штоб задача интересная была. Интересная настолько, чтобы отложить лежание на диване в пятницу вечером (с пивом, канешна) и взяться за решение проблемы неизвестного анонимуса.

0
0 / 0 / 0
Регистрация: 19.11.2021
Сообщений: 3
20.11.2021, 12:19  [ТС] 3
Можете хотя-бы подсказать как? Я сам попробую

Добавлено через 4 минуты
Verevkin, Понял, видимо придётся самому пытаться
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37343 / 20775 / 4276
Регистрация: 12.02.2012
Сообщений: 34,187
Записей в блоге: 14
20.11.2021, 13:04 4
Цитата Сообщение от KolyaLeonov Посмотреть сообщение
матрицой.
- матрицей

Да, конечно. И самое простое - из списка инцидентности получить матрицу (смежности или инцидентности - надо смотреть). Задача будет сведена к предыдущей.
0
0 / 0 / 0
Регистрация: 19.11.2021
Сообщений: 3
21.11.2021, 17:02  [ТС] 5
Catstail, следующий мой вопрос, это как из списка получить матрицу
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37343 / 20775 / 4276
Регистрация: 12.02.2012
Сообщений: 34,187
Записей в блоге: 14
21.11.2021, 20:15 6
KolyaLeonov, это не особо трудно. Дайте список инцидентности, я напишу код, который строит матрицу смежности.
0
21.11.2021, 20:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2021, 20:15
Помогаю со студенческими работами здесь

Обход неориентированного графа в глубину
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt;...

Матрица смежности неориентированного графа
#include &lt;iostream&gt;; #include &lt;fstream&gt;; using namespace std; int main() { string input =...

Количество рёбер неориентированного графа
Я сделал ориентированый граф, а от как сделать неориентированый граф, я уже не знаю как, помогите...

Гамильтонов цикл
надо разобрать прогу.выявления Гамильтонова цикла в графе...

Гамильтонов цикл в графе
Нужно написать функцию нахождения гамильтонова цикла в графе. Цикл ищется по матрице смежности...


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

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