![]() |
|
|
![]()
|
|
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
задача произвольная (под n! мы ведь понимаем гарантированное, т. е. в худшем случае решение, а не среднее время вычисления) - соответственно - если вы как-то упорядочиваете комбинацию, то достачно привести пример, когда такое упорядочиние невозможно...
такие вот мысли -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
разве речь идет о n! ??? если тупым перебором - n^3 если немного оптимизированным - n^2 -------------------- qqq |
|||
|
||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: нет Всего: 25 |
maxim1000
а как ты собираешься переберать за n^3? напиши решение - интересно посмотреть. -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
я думал, будет интересно, как это сделать за n^2 тогда для начала n^3, а потом - n^2: ---- всего возможных прямых n*(n-1)/2 для каждой прямой проверяем, является ли она медианой - (n-2) операций воти получаем n*(n-1)*(n-2)/2 операций, т.е. n^3 ---- если немного модифицировать, можно делать так: 1. выбираем одну точку, находим для нее все медианы 2. как находить медианы с фиксированным концом: 2.1. проектируем все остальные точки на окружность с центром в выбранной точке (т.к. расстояния абсолютно неважны, важны только направления) 2.2. выбираем от фонаря одну из точек, спроектированных на окружность 2.3. строим прямую из центра окружности к выбранной 2.4. считаем количество точек справа/слева 2.5. если совпало - добавляем медиану в список 2.6. немного поворачиваем прямую (например, по часовой стрелке) - выбираем следующую точку на окружности так, чтобы поворот был минимален (она может быть с одной стороны или с другой стороны от предыдущей), обновляем количества точек справа/слева 2.7. jump 2.5. вот и получается, что для проверки на "медианность" при повороте не надо каждый раз пересчитывать количества точек справа/слева сложность получается порядка n^2... ---- вот, даже рисуночек изобразил -------------------- qqq |
|||
|
||||
| redrick |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
при таком алгоритме мы, возможно, будем болтаться между 2-мя точками (они ближайшие друг для друга) - так что наверно запоминать придется.
что пудово - если новая точка будет лежать на том же радиусе, что и старая, то суммы изменятся на 1, если на противоположном - не изменятся. но первый аргумент остается в силе - нужно обеспечить проверку всех вариантов... или там не может быть такой ситуации о которой я говорю ? + проецирование - для квадрата не существенно, а вот если до линейного доберемся - косяк будет =) -------------------- Имею Мнение Хрен Оспоришь |
||||
|
|||||
| maxim1000 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
это я плохо выразился:
направление вращения выбирается один раз навсегда если начали вращаться по часовой стрелке, то так и будет вращать
а это как? если можно, примерчик Это сообщение отредактировал(а) maxim1000 - 19.9.2004, 20:28 -------------------- qqq |
||||||
|
|||||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
упс... заметил один пробой...
для того, чтобы быстро находить следующую точку, надо, чтобы они были отсортированы, а для этого нужно n*log(n) так что получается n*n*log(n)... -------------------- qqq |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
мои вопросы сняты =)
-------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |