Форум программистов, компьютерный форум CyberForum.ru

Непонятная разница в производительности - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Высота бинарного дерева поиска http://www.cyberforum.ru/cpp/thread415798.html
Что неправильно в программе? Полное условие #include <iostream> #include <cstdio> #pragma comment (linker, "/stack:250000000") using namespace std;
C++ метод группового учета аргументов никак не могу разобраться хотел бы применить этот метод для прогнозирования сигналов которые состоят из координат времени и значения функции. кто реализовывал уже такое..? Добавлено через 2 часа 11 минут тоесть грубо говоря предсказать координаты следующей точки,имея в распоряжении проиндексированный массив точек. http://www.cyberforum.ru/cpp/thread415481.html
Covert chanell/DNS C++
Помогите!прогу делать на сях, ось Линух задание - через DNS передача скрытых пакетов по каналу Covert Chanell. Проверять работу надо прогой WiresShark - тестировать будет на ней,пакеты должны быть инвалидными. Ребят кто нибудь откликнитесь пожалуйста, сдавать уже в субботу, просто жизненно необходимо, за мной не заржавеет!
C++ Что хотел сказать автор?
Код C++ #define MAX_SIZE (8192) signed char buf; почему нельзя записать: signed char buf; точнее, чем они могут различаться? MAX_SIZE используется только в одном месте, больше в коде нигде не используется.
C++ Моделирование страничной виртуальной памяти и алгоритмов свопинга http://www.cyberforum.ru/cpp/thread412017.html
Господа, в общем есть задание Написать программу, реализующую, согласно варианту (табл. 2), один из алгоритмов выгрузки страниц. В программе должны присутствовать два глобальных массива, один из которых олицетворяет оперативную память, а другой, – внешний носитель. Размер каждого из массивов должен быть не менее чем 256 байт. Использование других глобальных переменных в программе запрещено (то...
C++ Системный таймер Нужно измерить время между пакетами, которые передаются по rs-232!!! Нужно использовать системный таймер и конкретно буфер OL!!! если есть разбирающиеся люди - отпишитесь пожалуйста!!! подробнее

Показать сообщение отдельно
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
27.12.2011, 21:56  [ТС]     Непонятная разница в производительности
Цитата Сообщение от niXman Посмотреть сообщение
ValeryLaptev, теперь еще расскажи, что нужно сделать чтоб это дело скомпилить и выполнить?
Вот тебе постановка...
В лаборатории математического моделирования Астраханского государственного университета давно и успешно занимаются исследованиями влияния беспорядка на фи-зические свойства частично неупорядоченных конденсированных сред. С использова-нием методов теории перколяции изучены системы неупорядоченных, частично и пол-ностью упорядоченных линейных k-меров на квадратной решетке, в частности получе-ны зависимости порога перколяции и порога джамминга от степени упорядочения k-меров на решетке.

Для моделирования системы линейных k-меров на квадратной решетке была реали-зована программа на языке программирования С. Для сбора статистических данных и расчета разнообразных средних требуется выполнять программу примерно 1000 раз для одного набора исходных данных, поэтому время выполнения одного прогона весьма критично. Однако при всей своей полезности программа оказалась недостаточно эф-фективна по времени выполнения для решеток большого размера и длинных k-меров. Поэтому возникла потребность в более эффективной реализации.

Содержательная по-становка задачи для программирования состоит в следующем.

Имеется дискретная квадратная решетка с линейным размером L узлов, L > 1000. На решетке случайным образом по горизонтали или вертикали размещаются линейные объекты размером k узлов – k-меры, k ≈ L/100. Относительная доля горизонтальных и вертикальных k-меров задается параметром S (степень анизотропии):
S = (ng – nv)/(ng + nv),
где ng — количество горизонтальных k-меров, nv — количество вертикальных k-меров.
При |S| = 1 все k-меры размещаются либо по горизонтали, либо по вертикали. Если |S| ≠ 1, то одно из направлений по соглашению считается доминирующим. Условимся, что при S < 1 доминирующей является горизонтальная ориентация k-меров, соответст-венно при S > 1 доминирует вертикальное направление. Степень анизотропии S = 0 соответствует изотропному заполнению решетки — оба направления равновероятны.

Количество размещаемых k-меров и их ориентация заранее неизвестны, процесс продолжается до тех пор, пока на решетке не останется места для размещения ни одно-го k-мера доминирующей ориентации. При этом на решетке может остаться достаточ-но свободных узлов для размещения k-меров альтернативной ориентации.

Таким образом, основная часть алгоритма — цикл размещения k-меров на решетке. На каждом шаге цикла с помощью датчика случайных чисел генерируются текущая ориентация k-мера и координаты узла решетки, используемые для размещения. Эти ко-ординаты могут интерпретироваться двумя способами:
• текущий узел считается начальным или конечным узлом k-мера;
• текущий узел считается внутренним узлом k-мера.

Отметим, что димеры (k = 2) не имеют внутренних узлов, поэтому для общности выби-рается первый вариант интерпретации координат. В существующей версии программы текущий узел считается начальным узлом: при горизонтальной ориентации k-меров размещается вправо, при вертикальной ориентации — вниз (начало отсчета — в левом верхнем углу решетки, узел с координатами (0,0)). При размещении используются пе-риодические граничные условия, то есть k-меры могут пересекать границы решетки. При программировании это означает, что вычисления координат выполняются по мо-дулю L.

Схема алгоритма в существующей С-реализации выглядит так:
Пока возможно размещение в доминантной ориентации
Генерировать текущую ориентацию
Если возможно размещение в текущей ориентации
Генерировать координаты узла
Пока НЕ возможно разместить к_мер в текущей ориентации
Генерировать координаты узла
Конец_цикла
Разместить к_мер
Увеличить счетчики
Конец_если
Конец_цикла
В данной версии программы решетка преобразована в граф, каждая вершина которого имеет 4 соседей: левый, верхний, правый, нижний.
Заполнение решетки выполняется сразу на графе.
Надо выяснить, при каком S появляется опоясывающий кластер. То есть компонента связности, вершины которой присутствуют в каждой строке-столбце или в обоих направлениях.

Чтобы это работало, надо написать прогу которая считает некую конфигурацию занятых узлов из текстового файла (берем размер, например, 10*10. И по ней - отлаживать.
А для больших L = 1000-30000 надо заполнять в соответствии с алгоритмом.
Тут еще и датчик случайных чисел используется - Вихрь Мерсенна.

Поэтому создание минимального примера после того, как проблема решена - не вижу смысла.
А если интересны задачи по перколяции - aspu.ru и там найти ссылку на Лабораторию математического моделирования. Тарасевич Юрий Юрьевич руководитель.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru