Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2008, 16:44
Аватар для Koshka669
Koshka669 Koshka669 вне форума
Прохожий
 
Регистрация: 04.07.2008
Адрес: Москва
Сообщения: 2
Репутация: 10
По умолчанию Графы Нужна помощь!!!!

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

Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов. У одного из них есть книга, которую все хотели бы прочитать и потом обсудить с некоторыми из остальных.
Написать программу, которая разбивает людей на S групп, где будет обсуждаться книга, таким образом, чтобы вместе с каждым человеком в ту же самую группу вошло не более P его врагов.
Примечание: предполагается, что S*P>=K.

Всем, кто ответит и сможет помочь, заранее СПАСИБО)))
Ответить с цитированием
  #2  
Старый 04.07.2008, 18:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А группы могут пересекаться?
Выбор членов группы произвольный или только из ближайших друзей/врагов (т.е. если говоря в терминах графов, то сколько ребер может быть между 2мя людьми, входящими в одну группу)?

А то задача сводится к элементарному перебору и граф тут нафиг не нужен. Он граф, только если расссматривать информацию о друзьях/врагах, а для нахождения групп достаточно простого перебора.
Ответить с цитированием
  #3  
Старый 05.07.2008, 16:45
Аватар для Koshka669
Koshka669 Koshka669 вне форума
Прохожий
 
Регистрация: 04.07.2008
Адрес: Москва
Сообщения: 2
Репутация: 10
По умолчанию

Точно в задании ничего не указывется.
По решению задачи есть только это:
Математическая постановка задачи 3.
Задача может быть сформулирована в графовой постановке следующим образом: найти простой цикл в графе (т.е. без повторяющихся вершин), проходящий через все вершины графа. В общем случае не существует эффективного алгоритма решения этой задачи. Однако в данном случае задачу можно решить эффективно.
Предположим, что уже построен некоторый простой путь (x[1],x[2],...x[k]) Множество вершин, вошедших в путь, будем считать пройденными, остальные не пройденные. Возможны 3 ситуации.
1. Одна из вершин x[1],x[k] смежна одной из не пройденных еще вершин. В этом случае путь можно очевидным образом удлинить на одну вершину.
2. Ни одна из вершин x[1],x[k] не смежна одной из не пройденных еще вершин, а вершины x[1] и x[k] смежны. В этом случае понятно, что k>N/2, так как вершины x[1] и x[k] смежны N/2 вершинам. Следовательно количество не пройденных вершин не больше N/2. Следовательно любая вершина у из них смежна одной из пройденных вершин, например x[i]. Но тогда можно получить более длинный путь (у,x[i],x[i+1],...,x[k],x[1],x[2],...x[i-1]).
3. В этом случае степеней вершин нетрудно показать, что в пути (x[1],x[2],...x[k]) существует такой индекс i, что x[1] смежна x[i], а x[i-1] смежна x[k]. Следовательно, рассмотрев путь (x[i],x[i+1],...,x[k],x[i-1],x[i-2],...x[1]) мы имеем ситуацию 2., поэтому можно получить более длинный путь.
Применяя описанный выше способ начиная с пути длины 1, построим простой цикл, включающий все вершины.
__________________
Ответить с цитированием
  #4  
Старый 06.07.2008, 10:17
voron_paa voron_paa вне форума
Прохожий
 
Регистрация: 26.01.2008
Сообщения: 49
Репутация: 10
По умолчанию Помнится...

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


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025