2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задача "Круги"
Сообщение21.09.2011, 09:58 


08/09/08
40
Не могу найти алгоритм решения следующей задачи:

На плоскости заданы N кругов. Какое минимальное число кругов нужно переместить,
чтобы ни одна пара кругов не имела ни одной общей точки.
Ограничение времени – 2 секунды.

$1\leq N\leq 100$. Координаты и радиусы кругов натуральные числа меньшие 10000.

Замечание. Жадный алгоритм (удаляет круг с которым пересекается наибольшее число кругов и т.д.) не работает.

Подскажите, пожалуйста, идею.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 13:18 


26/01/10
959
sasha-parazit в сообщении #484738 писал(а):
Не могу найти алгоритм решения следующей задачи

Мне кажется, вы несколько преувеличиваете проблему поиска алгоритма нахождения максимального паросочетания в двудольном графе.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 13:48 


14/01/11
3037
Zealint в сообщении #484785 писал(а):
sasha-parazit в сообщении #484738 писал(а):
Не могу найти алгоритм решения следующей задачи

Мне кажется, вы несколько преувеличиваете проблему поиска алгоритма нахождения максимального паросочетания в двудольном графе.

По-моему, больше похоже на задачу нахождения вершинной связности графа.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 14:28 
Заблокирован
Аватара пользователя


11/09/11

650
Смотря как круги разбросаны. Может быть такая ситуация, когда нужно перемещать N-1 кругов, например в таком случае:

Изображение

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 16:14 


26/01/10
959
Sender в сообщении #484800 писал(а):
По-моему, больше похоже на задачу нахождения вершинной связности графа.

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

Цитата:
Смотря как круги разбросаны.

В этом, собственно, и состоит задача. Ваш пример можно было изобразить проще - все круги совпадают.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 16:47 


08/09/08
40
Zealint в сообщении #484785 писал(а):
Мне кажется, вы несколько преувеличиваете проблему поиска алгоритма нахождения максимального паросочетания в двудольном графе.

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

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение21.09.2011, 20:52 


26/01/10
959
sasha-parazit в сообщении #484882 писал(а):
Zealint в сообщении #484785 писал(а):
Мне кажется, вы несколько преувеличиваете проблему поиска алгоритма нахождения максимального паросочетания в двудольном графе.

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

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

PS. Я, кстати, ещё не доказал, является ли моя идея правильной, поэтому оставляю место для сомнения. Если докажите или опровергните, пните меня здесь, самому интересно стало.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение22.09.2011, 09:11 


14/01/11
3037
Zealint в сообщении #484865 писал(а):
Если вы отыщите наименьшее число вершин, которые нужно удалить, чтобы граф перестал быть связным, то это не гарантирует, что какие-то два круга перестанут иметь общую точку.


Именно гарантирует, если в качестве вершин графа рассматривать круги, причём две вершины соединены ребром тогда и только тогда, когда соответствующие круги пересекаются.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение22.09.2011, 12:59 


08/09/08
40
Sender в сообщении #485122 писал(а):
Zealint в сообщении #484865 писал(а):
Если вы отыщите наименьшее число вершин, которые нужно удалить, чтобы граф перестал быть связным, то это не гарантирует, что какие-то два круга перестанут иметь общую точку.


Именно гарантирует, если в качестве вершин графа рассматривать круги, причём две вершины соединены ребром тогда и только тогда, когда соответствующие круги пересекаются.

Zealint прав. Несвязный граф может имееть ребера.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение22.09.2011, 13:23 


14/01/11
3037
sasha-parazit в сообщении #485194 писал(а):
Zealint прав. Несвязный граф может имееть ребера.


Прошу прощения, и впрямь глупость написал. :? Тут задача поиска не вершинной связности графа, а максимального независимого множества. Только ведь она NP-полна, разве можно гарантированно уложиться в пару секунд на 100 вершинах?

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение22.09.2011, 13:32 


08/09/08
40
А где можно посмотреть что она NP-полна?

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение22.09.2011, 13:38 


14/01/11
3037
sasha-parazit в сообщении #485202 писал(а):
А где можно посмотреть что она NP-полна?


Да вот хоть в википедии.

 Профиль  
                  
 
 Re: Задача "Круги"
Сообщение24.09.2011, 08:19 


08/09/08
40
Да, действительно задача NP-полная. Sender, спасибо за ссылку.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group