Jump to content

Гибридный алгоритм

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

«Гибридный алгоритм» не относится к простому объединению нескольких алгоритмов для решения другой проблемы — многие алгоритмы можно рассматривать как комбинации более простых частей — а только к объединению алгоритмов, которые решают одну и ту же проблему, но различаются по другим характеристикам, особенно по производительности.

Примеры [ править ]

В информатике гибридные алгоритмы очень распространены в оптимизированных реальных реализациях рекурсивных алгоритмов , особенно реализациях в Алгоритмы «разделяй и властвуй» или «уменьшай и властвуй» , где размер данных уменьшается по мере углубления в рекурсию. В этом случае для общего подхода (на больших данных) используется один алгоритм, но в глубине рекурсии он переключается на другой алгоритм, который более эффективен на небольших данных. Типичным примером являются алгоритмы сортировки , где сортировка вставкой, которая неэффективна для больших данных, но очень эффективна для небольших данных (скажем, от пяти до десяти элементов), используется в качестве последнего шага после первоначального применения другого алгоритма, такого как сортировка слиянием или быстрая сортировка . Сортировка слиянием и быстрая сортировка асимптотически оптимальны для больших данных, но накладные расходы становятся значительными, если применять их к небольшим данным, поэтому в конце рекурсии используется другой алгоритм. Высоко оптимизированный алгоритм гибридной сортировки — Timsort , который сочетает в себе сортировку слиянием, сортировку вставкой и дополнительную логику (включая двоичный поиск ) в логике слияния.

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

Другим примером гибридных алгоритмов по соображениям производительности являются introsort и introselect , которые объединяют один алгоритм для быстрого усреднения производительности с использованием другого алгоритма для обеспечения (асимптотически) оптимальной производительности в худшем случае. Интросорт начинается с быстрой сортировки , но переключается на сортировку кучей, если быстрая сортировка не продвигается хорошо; аналогично introselect начинается с fastselect , но переключается на медиану медиан, если быстрый выбор не выполняется должным образом.

Централизованные распределенные алгоритмы часто можно рассматривать как гибридные алгоритмы, состоящие из отдельного алгоритма (выполняемого на каждом распределенном процессоре) и комбинированного алгоритма (выполняемого на централизованном распределителе) – они соответствуют соответственно запуску всего алгоритма на одном процессоре или запуску все вычисления на распределителе, объединяющие тривиальные результаты (одноэлементный набор данных от каждого процессора). Базовым примером этих алгоритмов являются сортировки по распределению , особенно используемые для внешней сортировки , которые делят данные на отдельные подмножества, сортируют подмножества, а затем объединяют подмножества в полностью отсортированные данные; примеры включают сегментную сортировку и флэш-сортировку .

Однако в целом распределенные алгоритмы не обязательно должны быть гибридными алгоритмами, поскольку отдельные алгоритмы или алгоритмы объединения или связи могут решать разные проблемы. Например, в таких моделях, как MapReduce , этапы Map и Reduc решают разные проблемы и объединяются для решения другой, третьей проблемы.

См. также [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 72d6a5e77ae121cf9d7860b3824a2684__1675450980
URL1:https://arc.ask3.ru/arc/aa/72/84/72d6a5e77ae121cf9d7860b3824a2684.html
Заголовок, (Title) документа по адресу, URL1:
Hybrid algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)