Показаны сообщения с ярлыком сложность. Показать все сообщения
Показаны сообщения с ярлыком сложность. Показать все сообщения

Распределенные алгоритмы и их сложность

Для синхронных распределенных алгоритмов обычно рассматриваются два типа сложности:
  • временная сложность (time complexity)
  • коммуникационная сложность (communication complexity)
Временная сложность синхронной системы измеряется количество проходов пока не будут получены все требуемые выходные данные или пока все процессы не остановятся.
Коммуникационная сложность обычно измеряется общим количеством отправленных непустых сообщений. Иногда также берется в расчет количество битов в сообщениях.
Временная оценка более важна на практике не только для синхронных распределенных алгоритмов, но и вообще для всех распределенных алгоритмов.  Коммуникационная сложность представляется существенной только в случаях, когда она образует достаточную перегрузку чтобы замедлить обработку. Такое предположение позволяет игнорировать коммуникационную сложность и рассматривать только временную сложность. Однако воздействие коммуникационной нагрузки на временную сложность это не просто функция какого-нибудь конкретного распределенного алгоритма. В обычной сети много распределенных алгоритмов работают одновременно и совместно используют одну и ту же полосу пропускания. Нагрузка конкретного сообщения, добавленная на связь любым одним алгоритмом добавляется к полной нагрузке сообщений на этой связи и таким образом способствует перегрузке, которая замечается всеми алгоритмами. Так как трудно определить степень влияния сообщений какого-нибудь алгоритма на временную производительность других алгоритмов, мы будем использовать простой анализ (и попытаемся минимизировать) количества сообщений генерируемых каждым конкретным алгоритмом.



Заметки о тестировании программ

Основная идея — не пытаться программировать сразу. Пошаговая детализация автоматически заставляет формировать понятную структуру программы. При этом требуется отслеживать правильность детализации, создавая набор контрольных точек и просчитывая значения данных в них. Выбор представления данных — один из фундаментальных аспектов разработки программы. Н. Вирт так определял критерии этого действия: естественность, структуры данных обязаны «вытекать» из специфики задачи; привычность, структуры данных выбираются так, чтобы программирование приближалось к утверждению «как говорю, так и пишу программу, ничего лишнего»; оптимальность, структуры данных выбираются так, чтобы была возможность построения эффективного алгоритма.
Следует придерживаться правила о том, что любой фрагмент программного кода (логики) должен иметь одну точку входа и одну точку выхода (пусть даже в ущерб эффективности использования памяти).
Временная сложность(t). Обычно на время решения задачи накладываются определенные ограничения. Размерность задачи опишем величиной N. Временная сложность алгоритма является линейной при t~O(N), полиномиальной при t~O(Nq), где q равно обычно 2 или 3, и экспоненциальной при t~O(qN).


OZON.ru - Книги | Программирование в алгоритмах | С. Окулов | Купить книги: интернет-магазин / ISBN 978-5-94774-689-1OZON.ru - Книги | Программирование в алгоритмах | С. Окулов | Купить книги: интернет-магазин / ISBN 978-5-94774-689-1