Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
7
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

Методы разработки алгоритмов

35

Обратите внимание, что Jupyter Notebook состоит из ряда блоков, называемых

ячейками.

МЕТОДЫ РАЗРАБОТКИ АЛГОРИТМОВ

Алгоритм — это математическое решение реальной проблемы. При разработке и настройке алгоритма мы должны задавать себе следующие вопросы:

zz Вопрос 1. Даст ли алгоритм тот результат, который мы ожидаем?

zz Вопрос 2. Является ли данный алгоритм оптимальным способом получения этого результата?

zzВопрос 3. Как алгоритм будет работать с большими наборами данных?

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

zz Алгоритмы c интенсивным использованием данных. Такие алгоритмы предъявляют относительно простые требования к обработке. Примером является алгоритм сжатия, применяемый к огромному файлу. В таких случаях размер данных обычно намного больше, чем объем памяти про­ цессора (одной ноды или кластера), поэтому для эффективной обработки данных в соответствии с требованиями может потребоваться итеративный подход.

zz Вычислительноемкие алгоритмы. Такие алгоритмы предъявляют значи­ тельные требования к обработке, но не задействуют больших объемов данных. Пример — алгоритм поиска очень большого простого числа. Чтобы добиться максимальной производительности, нужно найти способ разделить алгоритм на фазы так, чтобы хотя бы некоторые из них были распаралле­ лены.

zzВычислительноемкие алгоритмы с интенсивным использованием данных. Хорошим примером здесь служат алгоритмы, используемые для анализа эмоций в видеотрансляциях. Такие алгоритмы являются наиболее ресурсо­ емкими алгоритмами и требуют тщательной разработки и разумного рас­ пределения доступных ресурсов.

Чтобы определить сложность и ресурсоемкость задачи, необходимо изучить параметры данных и вычислений, чем мы и займемся в следующем разделе.

36

Глава 1. Обзор алгоритмов

Параметры данных

Чтобы классифицировать параметры данных задачи, мы рассмотрим ее объем, скорость и разнообразие (часто называемые «три V» — Volume, Velocity, Variety):

zz Объем (Volume). Ожидаемый размер данных, которые будет обрабатывать алгоритм.

zz Скорость (Velocity). Ожидаемая скорость генерации новых данных при ис­ пользовании алгоритма. Она может быть равна нулю.

zzРазнообразие (Variety). Количество различных типов данных, с которым, как ожидается, будет работать алгоритм.

На рис. 1.5 эти параметры показаны более подробно. В центре диаграммы рас­ положены максимально простые данные с небольшим объемом, малым разно­ образием и низкой скоростью. По мере удаления от центра сложность данных возрастает. Она может увеличиваться по одному или нескольким из трех пара­ метров. К примеру, на векторе скорости располагается пакетный процесс как самый простой, за ним следует периодический процесс, а затем процесс, близкий

Рис. 1.5

Методы разработки алгоритмов

37

к реальному времени. Наконец, мы видим процесс в реальном времени, который является наиболее сложным для обработки в контексте скорости передачи данных.

Например, если входные данные представляют собой простой csv-файл, то объ­ ем, скорость и разнообразие данных будут низкими. С другой стороны, если входные данные представляют собой прямую трансляцию с камеры видеонаблю­ дения, то объем, скорость и разнообразие данных будут довольно высокими, и эту проблему следует иметь в виду при разработке соответствующего алгоритма.

Параметры вычислений

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

Практический пример

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

 

0

1

1

 

 

 

 

 

1

1

2

2

 

 

 

 

2

 

 

2

 

3

3

 

 

 

 

 

 

Phase 1

 

Phase 2

Рис. 1.6