![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Здравствуйте.
Надо решить задачку. Есть массив структур. В структуре определено начало и конец периода.
Периоды пересекаются на оси времени. Надо определить есть ли разрывы во множестве. Можно ли реализовать алгоритм решения данной задачи с использованием boost graph library? Какими шаблонами/алгоритмами удобнее воспользоваться? (Я только начинаю изучать boost graph library, поэтому буду дополнять список вопросов новыми постами) |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
можно. но не нужно. где в этой задаче собственно граф?
всё что нужно - отсортировать массив и пройтись по нему, проверяя условие max_to >= array[i]. from, где max_to - максимальное значение array[j].to, где j=(0,1...i-1) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
1) Отсортировать по from, если from одинаковы, то по to
2) Пройтись, сравнивая соседние элементы на предмет from[i+1] > to[i] Но можно и графом (если вдруг задание такое): узлы - элементы структуры, ребра соединяют элементы с пересекающимися периодами. Нужно посчитать число связных компонент: если их > 1, то разрывы есть (в количестве N-1). Алгоритм так и называется connected_components. -------------------- ... |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
после сортировки возможна ситуация: i-1 i i+1 from 4 5 10 to 11 9 12 потому и предлагается вычислять максимальное и сравнивать с ним. а граф тут совершенно излишен.
только построение такого графа означает выполнить работы больше, чем нужно для решения задачи |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
да, верно. Или просто выкидывать вложенные интервалы.
если задача заключается только в том, что написал автор, то безусловно. Однако граф может помочь решить какие-то смежные задачи, скажем, построить какие-нибудь разветвленные Work Flow... Не от балды же он про граф сказал... Хотя... -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |