Это очень простой исследовательский вопрос, который меня интересует. Есть ли некоторые примеры алгоритмов или просто какой-то код, который можно реализовать последовательно последовательно, но не поддерживает эффективную распараллеливание?Существуют ли некоторые алгоритмы, которые не поддерживают эффективную параллельную реализацию?
ответ
Уверены, что существует множество алгоритмов, которые просто не могут быть распараллелены из-за его последовательного характера. У вас есть несколько хороших примеров в криптографии.
Хорошими примерами являются алгоритм цепочки блоков шифрования (CBC), распространение цепочки блоков шифрования (PCBC), обратная связь с шифрованием и обратная связь с выходом. Посмотрите на страницу wikipedia о режимах блочного шифрования; для каждого режима есть небольшой прямоугольник в правом верхнем углу, говорящий о том, что процесс шифрования и дешифрования является параллелизуемым: http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
В общем, любой алгоритм, на котором следующий шаг зависит от результата предыдущего шага, нельзя распараллелить, наименее эффективно. У вас всегда может быть много потоков, но это было бы не очень полезно, вам придется подождать, пока предыдущий шаг не закончится, прежде чем двигаться дальше, так что у вас никогда не будет истинного параллелизма.
Существует, конечно, несколько других примеров, криптография - это лишь один из них, и я мог сразу подумать.
Простой алгоритм смены двух чисел не может быть параллельным, на самом деле большинство базовых алгоритмов невозможно сделать параллельными. Следовательно, любой алгоритм, состоящий из последовательности зависимых шагов, сделанных из этих простых алгоритмов, не может быть параллельным.
Непоследовательность в этом рассуждении. Предположим, что алгоритм A "1. Обмен номерами A и B. 2. Обмен номерами C и D". Составлен базовый непараллельный алгоритм (ваш пример), но его можно легко распараллелить. – Voo
@Voo Алгоритм должен быть составлен из последовательности простого алгоритма здесь означает 2. должен зависеть от 1. например 1. swap (A, B) 2. swap (B, C). –
Да, это моя мысль: вы не можете распараллелить последовательность зависимых шагов, но вы, безусловно, можете распараллелить алгоритм, состоящий из нераспараллеливаемых частей. – Voo
- 1. Некоторые алгоритмы округления поддерживают в .NET
- 2. android/java - ищет эффективную параллельную циклическую очередь
- 3. Существуют ли алгоритмы генерации цвета?
- 4. Существуют ли алгоритмы сортировки данных (приблизительно?), Которые могут быть изменены?
- 5. Существуют ли алгоритмы для увеличения разрешения изображения?
- 6. Какие продукты NoSQL поддерживают параллельную обработку запросов?
- 7. Некоторые устройства, которые не поддерживают приложение в игровом магазине
- 8. Как создать эффективную реализацию стека в javascript?
- 9. Напишите наиболее эффективную реализацию функции RemoveDuplication()
- 10. Где можно найти эффективную реализацию R-Tree?
- 11. Существуют ли «алгоритмы» в функциональном программировании?
- 12. Существуют ли онлайн-алгоритмы для тестирования планарности?
- 13. Что делает эффективную реализацию сопоставления URL и почему?
- 14. Существуют ли какие-либо платформы, которые не поддерживают рекурсивные блокировки рекурсивно или рекурсивно?
- 15. Существуют ли алгоритмы для генерации текстур с использованием векторных примитивов?
- 16. Существуют ли какие-либо средства проверки производительности mosquitto, которые поддерживают протокол TLS Pre-shared key?
- 17. PHP, некоторые эффективные алгоритмы
- 18. PHP + fgetcsv не поддерживают некоторые специальные символы
- 19. Составители, которые поддерживают C11
- 20. Существуют ли там ORM Python, которые поддерживают несколько независимых баз данных одновременно?
- 21. Существуют ли шаблоны/алгоритмы для работы с локализуемыми мнемониками?
- 22. Существуют ли какие-либо алгоритмы для удаления освещения из видео?
- 23. Какие «точные» алгоритмы сбора мусора существуют?
- 24. Существуют ли другие алгоритмы, такие как дерево LSM?
- 25. BouncyCastle не находит алгоритмы, которые он предоставляет?
- 26. Существуют ли какие-либо солидные библиотеки трассировки строк/алгоритмы?
- 27. Существуют ли какие-либо .NET-системы автоматизации веб-сайтов, которые поддерживают выполнение теста без головок?
- 28. mod_spdy: браузеры, которые не поддерживают протокол SPDY
- 29. Есть ли какие-нибудь BundleTransformer JS, которые поддерживают ES6?
- 30. Внешние ключи, которые не существуют
Этот вопрос не соответствует теме, поскольку речь идет об алгоритмах вообще, а не о проблеме программирования. –
Неизвестно, является ли NC = P (т. Е. Может быть (или нет) некоторый алгоритм в P, который не находится в NC и, следовательно, неэффективно распараллеливается), если это то, что вы просите (что неясно). – harold