IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задачка про Гамильтонов граф(((, очень нужна помощь!!!!!плз!!!!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


Люди добрые и многознающие!!! Помогите пжлсты решить задачку про гамильтонов граф....курсовая моя...

Вот текст задачки____:
Гамильтоновым называется граф,в котором существует простой цикл,содержащий все вершины графа(но необязательно все ребра). Разработать алгоритм и написать программу, позволяющую определять - является ли задаваемый граф Гамильтоновым или нет.

ПЖЛУСТО ПОМОГИТЕ МНЕ Я В ШКОЛЕ ГРАФЫ НЕ ПРОХОДИЛ И ВПЕРВЫЕ О НИХ УСЛЫШАЛ....
На форумах тему по Гамильтонов граф небыло...вот и написал

Помогите решить курсовую....я вообще уже поник mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Задача решается полным перебором. В инете инфы просто туча. Ищи.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


Я уже всё обыскал...ничё ненайду(((
Уже крыша от этого инэта и Паскаля едет blink.gif
Я просто непонимаю как сделать рандомно пути и по ним ходить....вообще немогу придумать процедуру как определить программно есть путь между вершинами графа или нет ??
да и вообще немогу граф построить ((

Сообщение отредактировано: ОтчаявшийсяПрогер -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


Или хотяб подкиньте прогу по созданию графа...
Я уж процедуры до думаю...
помоему это будет рекурсивная процедура...по проверке на наличие Гамильтонова графа..

Сообщение отредактировано: ОтчаявшийсяПрогер -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


"Прога по созданию графов" - в FAQ.

Алгоритм - *вторая ссылка в гугле* по запросу "гамильтонов цикл".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


СПС за инфу...но я FAQ просмотрел и нашел только алгоритмы над графами(Гамильтонового небыло)
А по ссылке Гугля....разберусь как нибудь
Я немогу понять как написать процедуру случайного расставления рёбер меж. вершинами(чтоб некоторые верш. соединяла,а некоторые нет)...
или все вершины у графа соединены между собой???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


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

если граф неориентированный, после этого делаешь матрицу симметричной.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


Всё...теперь понятно что представляет собой граф в Паскале yes2.gif

Подскажи тогда сначала рандомно вводишь, после этого симметричной делаешь?
К примеру ввел все элементы
0 1 0 1
0 0 1 1
1 0 0 1
1 1 1 0
и делаешь симметрию относительно главной диагонали...а сама глал. диагональ состоит из 0..
0 1 0 1
1 0 1 1
0 1 0 1
1 1 1 0
Вот так???

А так спасибо большое..терь я хоть чёто понял))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


чтобы сделать симметричной - копируешь инфу из верхней треугольной части в нижнюю (например):

for i := 1 to n do
for j := 1 to i - 1 do
a[i, j] := a[j, i];


т.е. да, ты правильно пример привел.

а можно и сразу генерить симметричную:

for i := 1 to n do
for j := 1 to i - 1 do begin
a[j, i] := random(2);
a[i, j] := a[j, i];
end

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


Понятно..
Я в принципе так и сделал ...
Осталась процедура на проверку наличия Гамильтонова цикла..
А по ссылке которую ты кинул я ходил, ток ничё не понял)) и сейчас она неактивна в добавок...
Там надо сделать рекурсию в процедуре или без неё обойтись можно??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Неактивную ссылку можно почитать в кеше у гугла.

Лучше с рекурсией.

Ладно, давай расскажу на пальцах.

Схема такая: заводишь масив булевых значений visited[]. Заполняешь fals'ами. В рекурсию принимаешь текущую точку и делаешь следующее: помечаешь ее как посещенную, и идешь циклом по всем достижимым из нее не посещенным. Для каждой запускаешь рекурсию. После этого цикла снимаешь флаг visited текущей точки.

Еще подумай, где и как здесь добавить проверку на то, что решение найдено.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.10.2021 1:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name