Задачки по алгоритмам на MAXScript, интереса ради |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Задачки по алгоритмам на MAXScript, интереса ради |
06/02/2012, 14:28
Сообщение
#16
|
|
Эксперт Группа: Пользователи Сообщений: 694 Регистрация: 11/04/2009 Пользователь №: 69 180 |
Про открытый код я сразу подумал, но не будет интереса, тем более вариантов конечное количество. Не факт что кто то воспользовался чьим-то кодом, может просто совпалось. И тут не докажешь. Поэтому наверное генерация должна быть в открытом коде, а построение сплайна в закрытом и уже в конце конкурса окрыть и его код тоже.
Сообщение отредактировал kolts - 06/02/2012, 14:39 |
|
|
06/02/2012, 14:33
Сообщение
#17
|
|
Master Группа: Участник Сообщений: 3 036 Регистрация: 11/06/2003 Пользователь №: 2 458 |
Ну понятно, что задача не перехитрить задачу а решить ее
|
|
|
06/02/2012, 22:09
Сообщение
#18
|
|
Creator Группа: AWARD Сообщений: 3 749 Регистрация: 08/12/2002 Пользователь №: 1 252 |
Это пока без приза, а просто для привлечения внимания, НО, если будет много участников, можно будет подумать и о награждении (но это уже потом). Насчет С++ - отрицательно, ибо конкурс только по макскрипту. Так что придется ломать голову насчет миллиона, сишный брутфорс недопустим) Тогда я вне конкурса. Я все равно скрипт не знаю. В Си это не обязательно тупой перебор. Там гораздо шире поле для алгоритма. |
|
|
07/02/2012, 01:05
Сообщение
#19
|
|
Рыцарь форума Группа: Пользователи Сообщений: 1 956 Регистрация: 08/01/2005 Из: Нижний Новгород Пользователь №: 9 336 |
А никто тут не занимается демагогией. У меня есть мой старый неоптимизированный алгоритм этой задачи, на миллионе он помрет, да собсна не для мну эта задача (ну т.е. я озадачиваю, но сам не соревнуюсь).
2 Karba: это пока еще не конкурс, а предвариловка, участие добровольное, собственно делать C++ никто не запрещает, но сравнивать со скриптом смысла нет. Кто хочет и есть время - сделайте на С, потом сравним производительность. |
|
|
07/02/2012, 20:20
Сообщение
#20
|
|
Рыцарь форума Группа: Пользователи Сообщений: 1 956 Регистрация: 08/01/2005 Из: Нижний Новгород Пользователь №: 9 336 |
А я так и понял, что под демагогией подразумевается отсутствие действий) Я бы первым делом искал способы исключить из расчета внутренние точки, а потом уже ускорять что останется любыми подручными средствами. Скоро кто-нибудь предложит способы исключения, надо полагать.
Сообщение отредактировал 1асс - 07/02/2012, 20:21 |
|
|
07/02/2012, 23:49
Сообщение
#21
|
|
Учитель Группа: Пользователи Сообщений: 323 Регистрация: 08/04/2009 Пользователь №: 69 072 |
В макскрипте 2 дня отроду, как должен выглядеть код не знаю. Предполагаю, что самый простой и не факт, что рабочий вариант решения будет следующим:
надо отсортировать точки по одной из осей например по "Y". Взять точку с самым большим значением "Y" и от неё начать строить, исключая точки с меньшим значением по "X" и так для каждой последющей точки по "Y". Должна получиться 1\4 часть облака. Нужно будет отсортировать подобным образом оставшиеся 3/4. |
|
|
08/02/2012, 10:09
Сообщение
#22
|
|
Мастер Группа: Участник Сообщений: 1 280 Регистрация: 30/05/2006 Пользователь №: 32 013 |
Не утерплю и приведу в качестве спойлера следующее утверждение: "Если имеется диаграмма Вороного множества из N точек на плоскости, то выпуклая оболочка этого множества может быть найдена за линейное время." Да опять Вороной, которым мы тут сильно увлекались одно время. Впрочем это характерно для прикладных задач, когда известные алгоритмы вылезают в самых неожиданных местах. И конечно есть готовые оптимальные решения, но не стану давать ссылок, а то будет совсем неинтересно.
|
|
|
09/02/2012, 05:28
Сообщение
#23
|
|
Creator Группа: AWARD Сообщений: 3 749 Регистрация: 08/12/2002 Пользователь №: 1 252 |
Не утерплю и приведу в качестве спойлера следующее утверждение: "Если имеется диаграмма Вороного множества из N точек на плоскости, то выпуклая оболочка этого множества может быть найдена за линейное время." Да опять Вороной, которым мы тут сильно увлекались одно время. Впрочем это характерно для прикладных задач, когда известные алгоритмы вылезают в самых неожиданных местах. И конечно есть готовые оптимальные решения, но не стану давать ссылок, а то будет совсем неинтересно. Осталось только вороного по быстрому пощитать для миллиона точек и дело в шляпе |
|
|
09/02/2012, 09:11
Сообщение
#24
|
|
пишу на С++ за еду Группа: Пользователи Сообщений: 7 292 Регистрация: 08/12/2003 Из: компилятора Пользователь №: 3 739 |
вброшу для размышления http://matlab.exponenta.ru/spline/book1/9.php
|
|
|
09/02/2012, 11:13
Сообщение
#25
|
|
Мастер Группа: Участник Сообщений: 1 280 Регистрация: 30/05/2006 Пользователь №: 32 013 |
Осталось только вороного по быстрому пощитать для миллиона точек и дело в шляпе Андрей, в том-то и дело, что посчитать вороного для миллиона точек не есть проблема. По крайней мере для 2D случая это будет быстро. В том же matlab-e используется qhull, с открытыми исходниками. Есть ещё прекрасная библиотека CGAL (Computational Geometry Algorithms Library). В ней не только вороной, но и несколько очень интересных штук. Полюбопытствуй, с твоими возможностями, её использование может породить новые мощные плагины. |
|
|
09/02/2012, 21:59
Сообщение
#26
|
|
Creator Группа: AWARD Сообщений: 3 749 Регистрация: 08/12/2002 Пользователь №: 1 252 |
Андрей, в том-то и дело, что посчитать вороного для миллиона точек не есть проблема. По крайней мере для 2D случая это будет быстро. В том же matlab-e используется qhull, с открытыми исходниками. Есть ещё прекрасная библиотека CGAL (Computational Geometry Algorithms Library). В ней не только вороной, но и несколько очень интересных штук. Полюбопытствуй, с твоими возможностями, её использование может породить новые мощные плагины. Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного. Сообщение отредактировал Karba - 09/02/2012, 22:01 |
|
|
13/02/2012, 02:40
Сообщение
#27
|
|
Creator Группа: AWARD Сообщений: 3 749 Регистрация: 08/12/2002 Пользователь №: 1 252 |
Куча желающих с готовой реализацией задачи на max script.
Тема сдохла неуспев появиться. Первая подсказка. Найти самую крайнюю точку (непример самую правую, у которой x координата самая большая). Это точка будет гарантировано принадлежать внешнему контуру. Вторая подсказака. Какими свойствами должна обладать следующая точка контура по отношению к первой? Сообщение отредактировал Karba - 13/02/2012, 02:41 |
|
|
13/02/2012, 03:59
Сообщение
#28
|
|
Мастер Группа: Участник Сообщений: 1 280 Регистрация: 30/05/2006 Пользователь №: 32 013 |
Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного. Дилетанту сложно спорить с профессионалом ) Те алгоритмы, о которых ты упомянул, если не ошибаюсь, имеют сложность O(log(N)*N). Не всегда верно, но порядок такой. Современные алгоритмы для нахождения вороного, если не изменяет память, имеют такую-же сложность. |
|
|
13/02/2012, 04:16
Сообщение
#29
|
|
Creator Группа: AWARD Сообщений: 3 749 Регистрация: 08/12/2002 Пользователь №: 1 252 |
Дело в том, что посчитать контур напрямую без вороного можно гораздо быстрее (причем как минимум 3мя разными алгоритмами), чем считать вороного. Дилетанту сложно спорить с профессионалом ) Те алгоритмы, о которых ты упомянул, если не ошибаюсь, имеют сложность O(log(N)*N). Не всегда верно, но порядок такой. Современные алгоритмы для нахождения вороного, если не изменяет память, имеют такую-же сложность. Смысла нет вычислять сначала вороного, если можно посчитать напрямую. Алгоритм будет проще, быстрее и стабильнее. |
|
|
13/02/2012, 11:06
Сообщение
#30
|
|
Рыцарь форума Группа: Пользователи Сообщений: 1 956 Регистрация: 08/01/2005 Из: Нижний Новгород Пользователь №: 9 336 |
2 Karba: у вектора, направленного из крайней правой в эту точку должен быть минимальный угол с вертикальной осью
Еще моя оптимизация такая - найти 4 крайних точки (верх, низ, лево, право), выкинуть из расчета все точки, лежащие внутри треугольников с этими точками в вершинах. Потом можно приниматься за обход контура. |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 25/04/2024 - 02:34 |