Анализировать промежуток - две параллели для - PullRequest
1 голос
/ 10 мая 2011

Если у меня есть алгоритм с двумя параллелями для и я хочу проанализировать диапазон алгоритма, что мне делать?

Например

parallel for a=2 to n
    parallel for b=1 to a-1

Я предполагаю, что промежуток - это тета (lg (n) * lg (n)), но я не уверен. :) Кто-то, кто может помочь или дать подсказку?

1 Ответ

0 голосов
/ 30 августа 2011

Я предполагаю, что вы хотите сложность времени этого алгоритма. Поскольку временная сложность - это НЕ сколько времени на самом деле занимает алгоритм, а сколько операций требуется для него (следует цитата, подтверждающая это утверждение), временная сложность этого алгоритма равна O(n^2), как если бы он не был параллельным ,

со страницы вики: Time complexity is commonly estimated by counting the number of elementary operations performed by the algorithm, where an elementary operation takes a fixed amount of time to perform

Почему нас не волнует тот факт, что алгоритм параллелен?
Обычно размер нашего кластера фиксирован и не зависит от ввода [n]. пусть размер кластера будет k [это означает, что мы можем выполнять k операций одновременно, а алгоритм равен O(n^2) [для простоты предположим, что точно n^2]
предположим, что у нас есть вход размером 100, тогда это займет "1017 * время. если бы он был размером 1000, это заняло бы (1000^2)/k, а для n элементов: (n^2)/k, как вы можете видеть, k является константой, и тот факт, что программа параллельна, не меняет сложности. Возможность одновременно выполнять k операций не лучше [и даже не стоит, но это для другого потока], чем компьютер * на 1021 * раз быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...