3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

8 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Задачки по алгоритмам на MAXScript, интереса ради
Темы задачек
Вы не можете просмотреть результаты опроса, не проголосовав в нем. Пожалуйста, авторизуйтесь и проголосуйте, чтобы увидеть результаты этого опроса.
Всего голосов: 42
Гости не могут голосовать 
kolts
сообщение 06/02/2012, 14:28
Сообщение #16


Эксперт
Иконка группы

Группа: Пользователи
Сообщений: 694
Регистрация: 11/04/2009
Пользователь №: 69 180



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

Сообщение отредактировал kolts - 06/02/2012, 14:39
Go to the top of the page
 
+Quote Post
SIL
сообщение 06/02/2012, 14:33
Сообщение #17


Master
Иконка группы

Группа: Участник
Сообщений: 3 036
Регистрация: 11/06/2003
Пользователь №: 2 458



Ну понятно, что задача не перехитрить задачу а решить ее smile.gif
Go to the top of the page
 
+Quote Post
Karba
сообщение 06/02/2012, 22:09
Сообщение #18


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



QUOTE (1асс @ 06/02/2012, 12:31) *
Это пока без приза, а просто для привлечения внимания, НО, если будет много участников, можно будет подумать и о награждении (но это уже потом). Насчет С++ - отрицательно, ибо конкурс только по макскрипту. Так что придется ломать голову насчет миллиона, сишный брутфорс недопустим)


Тогда я вне конкурса. Я все равно скрипт не знаю.
В Си это не обязательно тупой перебор. Там гораздо шире поле для алгоритма.
Go to the top of the page
 
+Quote Post
1асс
сообщение 07/02/2012, 01:05
Сообщение #19


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 1 956
Регистрация: 08/01/2005
Из: Нижний Новгород
Пользователь №: 9 336



А никто тут не занимается демагогией. У меня есть мой старый неоптимизированный алгоритм этой задачи, на миллионе он помрет, да собсна не для мну эта задача (ну т.е. я озадачиваю, но сам не соревнуюсь).

2 Karba: это пока еще не конкурс, а предвариловка, участие добровольное, собственно делать C++ никто не запрещает, но сравнивать со скриптом смысла нет. Кто хочет и есть время - сделайте на С, потом сравним производительность.
Go to the top of the page
 
+Quote Post
1асс
сообщение 07/02/2012, 20:20
Сообщение #20


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 1 956
Регистрация: 08/01/2005
Из: Нижний Новгород
Пользователь №: 9 336



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

Сообщение отредактировал 1асс - 07/02/2012, 20:21
Go to the top of the page
 
+Quote Post
Aperon
сообщение 07/02/2012, 23:49
Сообщение #21


Учитель
Иконка группы

Группа: Пользователи
Сообщений: 323
Регистрация: 08/04/2009
Пользователь №: 69 072



В макскрипте 2 дня отроду, как должен выглядеть код не знаю. Предполагаю, что самый простой и не факт, что рабочий вариант решения будет следующим:
надо отсортировать точки по одной из осей например по "Y". Взять точку с самым большим значением "Y" и от неё начать строить, исключая точки с меньшим значением по "X" и так для каждой последющей точки по "Y". Должна получиться 1\4 часть облака. Нужно будет отсортировать подобным образом оставшиеся 3/4.
Go to the top of the page
 
+Quote Post
[Vitus]
сообщение 08/02/2012, 10:09
Сообщение #22


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 280
Регистрация: 30/05/2006
Пользователь №: 32 013



Не утерплю и приведу в качестве спойлера следующее утверждение: "Если имеется диаграмма Вороного множества из N точек на плоскости, то выпуклая оболочка этого множества может быть найдена за линейное время." Да опять Вороной, которым мы тут сильно увлекались одно время. Впрочем это характерно для прикладных задач, когда известные алгоритмы вылезают в самых неожиданных местах. И конечно есть готовые оптимальные решения, но не стану давать ссылок, а то будет совсем неинтересно.
Go to the top of the page
 
+Quote Post
Karba
сообщение 09/02/2012, 05:28
Сообщение #23


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



QUOTE ([Vitus] @ 08/02/2012, 10:09) *

Не утерплю и приведу в качестве спойлера следующее утверждение: "Если имеется диаграмма Вороного множества из N точек на плоскости, то выпуклая оболочка этого множества может быть найдена за линейное время." Да опять Вороной, которым мы тут сильно увлекались одно время. Впрочем это характерно для прикладных задач, когда известные алгоритмы вылезают в самых неожиданных местах. И конечно есть готовые оптимальные решения, но не стану давать ссылок, а то будет совсем неинтересно.


Осталось только вороного по быстрому пощитать для миллиона точек и дело в шляпе laugh.gif
Go to the top of the page
 
+Quote Post
ECXIMER
сообщение 09/02/2012, 09:11
Сообщение #24


пишу на С++ за еду
Иконка группы

Группа: Пользователи
Сообщений: 7 292
Регистрация: 08/12/2003
Из: компилятора
Пользователь №: 3 739



вброшу для размышления http://matlab.exponenta.ru/spline/book1/9.php
Go to the top of the page
 
+Quote Post
[Vitus]
сообщение 09/02/2012, 11:13
Сообщение #25


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 280
Регистрация: 30/05/2006
Пользователь №: 32 013



Цитата(Karba @ 09/02/2012, 05:28) *
Осталось только вороного по быстрому пощитать для миллиона точек и дело в шляпе laugh.gif

Андрей, в том-то и дело, что посчитать вороного для миллиона точек не есть проблема. По крайней мере для 2D случая это будет быстро.
В том же matlab-e используется qhull, с открытыми исходниками.
Есть ещё прекрасная библиотека CGAL (Computational Geometry Algorithms Library). В ней не только вороной, но и несколько очень интересных штук. Полюбопытствуй, с твоими возможностями, её использование может породить новые мощные плагины.
Go to the top of the page
 
+Quote Post
Karba
сообщение 09/02/2012, 21:59
Сообщение #26


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



QUOTE ([Vitus] @ 09/02/2012, 12:13) *

Андрей, в том-то и дело, что посчитать вороного для миллиона точек не есть проблема. По крайней мере для 2D случая это будет быстро.
В том же matlab-e используется qhull, с открытыми исходниками.
Есть ещё прекрасная библиотека CGAL (Computational Geometry Algorithms Library). В ней не только вороной, но и несколько очень интересных штук. Полюбопытствуй, с твоими возможностями, её использование может породить новые мощные плагины.


Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного.

Сообщение отредактировал Karba - 09/02/2012, 22:01
Go to the top of the page
 
+Quote Post
Karba
сообщение 13/02/2012, 02:40
Сообщение #27


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



Куча желающих с готовой реализацией задачи на max script.
Тема сдохла неуспев появиться.

Первая подсказка.
Найти самую крайнюю точку (непример самую правую, у которой x координата самая большая).
Это точка будет гарантировано принадлежать внешнему контуру.

Вторая подсказака.
Какими свойствами должна обладать следующая точка контура по отношению к первой?

Сообщение отредактировал Karba - 13/02/2012, 02:41
Go to the top of the page
 
+Quote Post
[Vitus]
сообщение 13/02/2012, 03:59
Сообщение #28


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 280
Регистрация: 30/05/2006
Пользователь №: 32 013



Цитата(Karba @ 09/02/2012, 21:59) *
Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного.

Дилетанту сложно спорить с профессионалом )
Те алгоритмы, о которых ты упомянул, если не ошибаюсь, имеют сложность O(log(N)*N). Не всегда верно, но порядок такой.
Современные алгоритмы для нахождения вороного, если не изменяет память, имеют такую-же сложность.
Go to the top of the page
 
+Quote Post
Karba
сообщение 13/02/2012, 04:16
Сообщение #29


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



QUOTE ([Vitus] @ 13/02/2012, 03:59) *

QUOTE (Karba @ 09/02/2012, 21:59) *
Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного.

Дилетанту сложно спорить с профессионалом )
Те алгоритмы, о которых ты упомянул, если не ошибаюсь, имеют сложность O(log(N)*N). Не всегда верно, но порядок такой.
Современные алгоритмы для нахождения вороного, если не изменяет память, имеют такую-же сложность.


Смысла нет вычислять сначала вороного, если можно посчитать напрямую. Алгоритм будет проще, быстрее и стабильнее.
Go to the top of the page
 
+Quote Post
1асс
сообщение 13/02/2012, 11:06
Сообщение #30


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 1 956
Регистрация: 08/01/2005
Из: Нижний Новгород
Пользователь №: 9 336



2 Karba: у вектора, направленного из крайней правой в эту точку должен быть минимальный угол с вертикальной осью

Еще моя оптимизация такая - найти 4 крайних точки (верх, низ, лево, право), выкинуть из расчета все точки, лежащие внутри треугольников с этими точками в вершинах. Потом можно приниматься за обход контура.
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






8 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25/04/2024 - 02:34