|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.09.2012, 15:09 | #21 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
В развитие
Цитата:
Если элементом массива сделать запись, то кроме значений проверок туда можно добавить и другие величины зависящие только от p и q, в т.ч. сами значения p и q. Код:
А теперь мы можем безболезненно превратить массив в одномерный Цитата:
Код:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.09.2012 в 15:14. |
||
07.09.2012, 15:28 | #22 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 234
|
evg_m
x и y нельзя добавлять как поле, так как: при картинке 100х100 mas будет иметь 100^2 элементов, а значений x и y должно быть 100^4. Последний раз редактировалось BleStaR; 07.09.2012 в 15:58. |
07.09.2012, 18:49 | #23 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
Цитата:
Код:
Внутри остается Код:
Код:
Цитата:
q =0..N j=0..N => x = -N (0-N) .. N(N-0) итого (2N+1) значениий учитваая разные добавки (+0.5 +0) получаем 4N+2 вариантов осталость придумать как это вынести за скобки (из цикла) y = p - l; аналогично y = -M M 4M+2 вариантов
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.09.2012 в 19:17. |
||
07.09.2012, 20:27 | #24 | |
Пользователь
Регистрация: 15.04.2007
Сообщений: 20
|
обсуждая данную задачу с Evg_m
Цитата:
вводится дополнитеьный массив XY, и аналогичный ему xy2, для второй ветки ифа Код:
Код:
Последний раз редактировалось Ivan_Susanin; 07.09.2012 в 20:52. |
|
11.09.2012, 11:07 | #25 |
Форумчанин
Регистрация: 02.06.2011
Сообщений: 282
|
я в программе не разбирался ибо не знаю алгоритма, но правильно заметили ранее, приведите алгоритм? что вообще делаете? может вы и правда, как было замечено, 99% времени тратите впустую на влияние нуля на далеко лежащие клетки?
а вообще, если ваш алгоритм имеет сложность, скажем N^5 хоть наизнанку вывернитесь, он так же будет занимать N^5, может подобрать другой алгоритм? и хотелось бы всетаки узнать, на сколько программа ускорилась от начального момента до последней редакции? я не зря написал N^5, так как у вас 5 вложенных друг в друга циклов. Последний раз редактировалось Kukurudza; 11.09.2012 в 11:10. |
06.10.2015, 20:09 | #26 | |
Новичок
Джуниор
Регистрация: 06.10.2015
Сообщений: 2
|
Как уже сказали выше, двумерные массивы - это зло, используйте одномерные. Можете даже не отказываться от вложенных циклов, а вычислять индекс каждый раз - все равно будет быстрее.
В приведенном коде есть new и нет delete - у вас так будет утечка памяти. Лучше пользоваться уже изобретенными велосипедами типа std::vector и забыть о проблеме с утечкой памяти. Если вы работаете с изображениями, то целесообразно посмотреть в готовые свободно распространяемые библиотеки типа OpenCV - над ней долго и упорно трудилось много людей, вы вряд ли в обозримом будущем на коленке придумаете что-то более быстрое и надежное для работы с изображениями. Объявите переменные, по которым бегают циклы, над ними, а не в циклах - вы избежите многократного выделения памяти и удаления этих переменных по каждому проходу внешних циклов Промежуточные переменные тоже не всегда способствуют ускорению - запихнуть значение по какому-то адресу в памяти, извлечь оттуда - все это тоже требует времени. Цитата:
++i в циклах предпочтительнее, чем i++ Ну и наконец, основное ускорение вы получите, если не будете решать задачу в лоб, а проанализируете, расстояние, на котором какое-то влияние еще есть. С ростом Rad у вас очень быстро стремится к 0 B1 и S1. Для изображения, которое строится с точностью 8 бит добавки даже в 5-ом знаке после запятой ни на что не повлияют, а это значит, что вместо пробегания по 5000х5000 точек вам, возможно, хватит какой-нибудь окрестности типа 11х11 (зависит от значения v) - то есть сразу ускоритесь примерно в 200000 раз. Даже если окрестность будет 101х101 все равно выиграете больше чем в 2000 раз, но я сильно сомневаюсь, что при экспоненциальном убывании влияния понадобится рассматривать расстояния больше чем на 10-20 точек. Последний раз редактировалось photon82; 06.10.2015 в 20:17. |
|
06.10.2015, 20:17 | #27 | |
Новичок
Джуниор
Регистрация: 06.10.2015
Сообщений: 2
|
Цитата:
При N > R, как в нашем случае, влияние R станет константным и сложность алгоритма станет O(N^3) - это совсем не то, что O(N^5) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация кода | LatuSerge | Общие вопросы Delphi | 10 | 27.12.2011 01:51 |
Оптимизация кода в си | dampirik | Помощь студентам | 4 | 07.07.2009 11:30 |
Оптимизация кода | nusik | Общие вопросы Delphi | 2 | 21.05.2009 17:55 |
Оптимизация кода | Terran | Общие вопросы Delphi | 6 | 01.11.2008 16:57 |
Оптимизация кода | [Smarik] | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 9 | 20.08.2008 15:00 |