![]() |
|
|
![]()
|
|
| Breed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Можно в принципе искать участки выпуклости(вниз) ломаной, тогда из всех точек такого участка будет гарантированная видимость до его конца. Потом можно соседние участки(конечная точка первого участка это есть первая точка второго) объединять: если из какой - либо точки первого участка выпуклости видно вторую точку следующего участка, то из нее видно весь следующий участок, в противном случае область видимости ограничивается концом первого участка...
Для остальных точек(не входящих в участки) можно обычным образом(углами) проверять видимость до ближайшего участка выпуклости, а дальше так же как и описано выше... Только вот будут ли полезны подобные ухищрения?... |
|||
|
||||
| nostromo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: 5 Всего: 10 |
То maxim1000:
Насколько я понимаю, задача состоит в нахождении максимальной области видимости при фиксированном положении наблюдателя. При этом Ваш первоначальный алгоритм имел квадратичную сложность, а я предложил модификацию линейной сложности. Как понимать выражение: "когда мы спускаемся в точку 2"? Если наблюдатель находится в точке 2, то, согласно моему алгоритму нужно последовательно проверять точки 3, 4, 5, ..., следя лишь за тем, чтобы угол не именьшался. --------------------
На пыльных тропинках далеких планет останутся наши следы. |
|||
|
||||
| Breed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
||||
|
||||
| nostromo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: 5 Всего: 10 |
Что-то мне опять неповезло
-----------------------------------------------
Мне кажется, что вполне нормальный алгоритм. --------------------
На пыльных тропинках далеких планет останутся наши следы. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
нет-нет-нет для фиксированного наблюдателя мой алгоритм имеет линейную сложность - это же простой перебор точек после него и проверка какого-то условия (которая требует постоянное количество операций) а вот алгоритм вычисления этого значения для всех возможных позиций наблюдателя уже получается квадратичным... ну порядок сложности в общем случае они не сократят, но могут сократить его на некоторы участках плюс выпуклых участков - углы там изменяются монотонно, т.е. не может быть холмиков посередине, а всякий поиск в массивах упорядоченных уже значительно быстрее можно сделать (вместо линейного, логарифмический) -------------------- qqq |
|||
|
||||
| Breed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Вообще, если имеется вогнутая ломаная (вверх) А[i..k], то найдя область видимости для А[i](например она есть до точки А[l], l<k), можно для точки A[i+1] начинать поиск с l-той точки, так как все точки до l будут гарантированно видны из А[i+1], так что в принципе видимость находится за линейное время.
при переходе от вогнутой области к выпуклой, если из точки вогнутой области видна вторая точка выпуклой области, то вся выпуклая область видна из нее. Здесь вроде тоже линейно. Осталось придумать, что делать с переходами от выпуклой области к вогнутой. И с ломаными типа /\/\/\/\/\/\... хы... :-) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |