Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Медианы 
:(
    Опции темы
redrick
Дата 19.9.2004, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: нет
Всего: 5



задача произвольная (под n! мы ведь понимаем гарантированное, т. е. в худшем случае решение, а не среднее время вычисления) - соответственно - если вы как-то упорядочиваете комбинацию, то достачно привести пример, когда такое упорядочиние невозможно...

такие вот мысли


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
maxim1000
Дата 19.9.2004, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
нет уверенности - просто полным перебором как то неинтересно, да и хочется верить что можно решить задачу не за N! переборов

разве речь идет о n! ???
если тупым перебором - n^3
если немного оптимизированным - n^2


--------------------
qqq
PM WWW   Вверх
dargaard
Дата 19.9.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: нет
Всего: 25



maxim1000
а как ты собираешься переберать за n^3? напиши решение - интересно посмотреть.


--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 19.9.2004, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
а как ты собираешься переберать за n^3? напиши решение - интересно посмотреть.

я думал, будет интересно, как это сделать за n^2 smile.gif...
тогда для начала 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...
----
вот, даже рисуночек изобразил smile.gif
user posted image


--------------------
qqq
PM WWW   Вверх
redrick
Дата 19.9.2004, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: нет
Всего: 5



Цитата
2.6. немного поворачиваем прямую (например, по часовой стрелке) - выбираем следующую точку на окружности так, чтобы поворот был минимален (она может быть с одной стороны или с другой стороны от предыдущей), обновляем количества точек справа/слева


при таком алгоритме мы, возможно, будем болтаться между 2-мя точками (они ближайшие друг для друга) - так что наверно запоминать придется.


Цитата
вот и получается, что для проверки на "медианность" при повороте не надо каждый раз пересчитывать количества точек справа/слева


что пудово - если новая точка будет лежать на том же радиусе, что и старая, то суммы изменятся на 1, если на противоположном - не изменятся.


но первый аргумент остается в силе - нужно обеспечить проверку всех вариантов... или там не может быть такой ситуации о которой я говорю ?

+ проецирование - для квадрата не существенно, а вот если до линейного доберемся - косяк будет =)



--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
maxim1000
Дата 19.9.2004, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
при таком алгоритме мы, возможно, будем болтаться между 2-мя точками (они ближайшие друг для друга) - так что наверно запоминать придется.

это я плохо выразился:
Цитата
немного поворачиваем прямую (например, по часовой стрелке)

направление вращения выбирается один раз навсегда
если начали вращаться по часовой стрелке, то так и будет вращать
Цитата
+ проецирование - для квадрата не существенно, а вот если до линейного доберемся - косяк будет =)

а это как? если можно, примерчик smile.gif

Это сообщение отредактировал(а) maxim1000 - 19.9.2004, 20:28


--------------------
qqq
PM WWW   Вверх
maxim1000
Дата 19.9.2004, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



упс... заметил один пробой...
для того, чтобы быстро находить следующую точку, надо, чтобы они были отсортированы, а для этого нужно n*log(n)
так что получается n*n*log(n)...



--------------------
qqq
PM WWW   Вверх
redrick
Дата 19.9.2004, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: нет
Всего: 5



мои вопросы сняты =)


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.