Блинная сортировка

Блинная сортировка
Одна операция блинной сортировки (вариант с подгоревшими блинами)

Блинная сортировка (от англ. pancake sorting) — алгоритм сортировки. Единственная операция, допустимая в алгоритме — переворот элементов последовательности до какого-либо индекса. В отличие от традиционных алгоритмов, в которых минимизируют количество сравнений, в блинной сортировке требуется сделать как можно меньше переворотов. Процесс можно визуально представить как стопку блинов, которую тасуют путём взятия нескольких блинов сверху и их переворачивания.

Содержание

Алгоритм

Простейший алгоритм (вариант сортировки выбором) даёт не более 2n-3 переворотов, однако требует поиска наибольшего элемента[1]. В 1979 году Билл Гейтс и Христос Пападимитриу представили свой алгоритм и доказали достаточность (5n+5)/3 переворотов и необходимость 17n/16[2]. В 1997 году Хейдари и Судборог показали нижнюю границу в 15n/14. Они представили точные значения вплоть до N=13, для которого требуется 15 переворотов[3]. Значительно превзойти (до 18n/11) результат Гейтса и Пападимитриоу получилось только в 2008 году у группы исследователей из университета Техаса в Далласе под руководством Судборога[4][5].

Задача о подгоревших блинах

Усложнённый вариант представляет собой блинную сортировку последовательности, элементы которой содержат дополнительный бинарный параметр. Эту задачу предложили Билл Гейтс и Христос Пападимитриу в 1979 году[2]. Она стала известна как «задача о подгоревших блинах» (англ. burnt pancake problem):

Каждый блин в стопке подгорел с одной стороны. Требуется отсортировать блины по возрастанию (убыванию) диаметра так, чтобы они все лежали на тарелке подгоревшей стороной вниз.

В 2007 году группа студентов создала биологический компьютер на основе генетически модифицированной кишечной палочки (E. coli), который решал задачу о подгорелых блинах. Роль блинов играли фрагменты дезоксирибонуклеиновой кислоты (3’ и 5’ концы которых были разными сторонами блина). Бактерия, выстроив фрагменты в нужном порядке, приобретала устойчивость к антибиотику и не погибала. Время, затраченное на поиск правильной комбинации, показывало минимально необходимое число переворотов фрагмента[6][7].

Примечания

  1. Douglas B. West The Pancake Problems (1975, 1979, 1973)  (англ.). Архивировано из первоисточника 6 апреля 2012. Проверено 16 августа 2009.
  2. 1 2 William H. Gates; Christos H. Papadimitriou Bounds for sorting by prefix reversal (англ.) // Discrete Mathematics. — 1979. — В. 27. — С. 47—57.
  3. Mohammad H. Heydari; I. Hal Sudborough On the diameter of the pancake network (англ.) // Journal of Algorithms. — Дулут: Academic Press, Inc, 1997. — В. 1. — Т. 25. — С. 67—94.
  4. Team Bests Young Bill Gates With Improved Answer to So-Called Pancake Problem in Mathematics  (англ.) (17.09.2008). Архивировано из первоисточника 6 апреля 2012. Проверено 16 августа 2009.
  5. B. Chitturi, W. Fahle, Z. Meng, L. Morales, C. O. Shields, I. H. Sudborough, W. Voit An (18/11)n upper bound for sorting by prefix reversals (англ.) // Theoretical Computer Science. — Эссекс: Elsevier Science Publishers Ltd., 2009. — В. 36. — Т. 410. — С. 3372—3390.
  6. Karmella A Haynes, Marian L Broderick, Adam D Brown и др. Engineering bacteria to solve the Burnt Pancake Problem (англ.) // Journal of Biological Engineering. — 2008. — В. 8. — Т. 2.
  7. Анимационный ролик, объясняющий решение задачи биологическим компьютером  (англ.). Архивировано из первоисточника 6 апреля 2012. Проверено 16 августа 2009.

См. также

Ссылки

  • Weisstein, Eric W. Pancake Sorting  (англ.). MathWorld. Проверено 16 августа 2009.
  • Alexander Bogomolny Flipping pancakes  (англ.). Архивировано из первоисточника 6 апреля 2012. Проверено 16 августа 2009.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Блинная сортировка" в других словарях:

  • Сортировка Шелла — (англ. Shell sort)  алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными… …   Википедия

  • Сортировка выбором — (Selection sort)  алгоритм сортировки. Может быть реализован и как устойчивый и как неустойчивый. На массиве из n элементов имеет время выполнения в худшем, среднем и лучшем случае Θ(n2), предполагая что сравнения делаются за постоянное… …   Википедия

  • Сортировка вставками — Сортировка вставками  простой алгоритм сортировки. Хотя этот алгоритм сортировки уступает в эффективности более сложным (таким как быстрая сортировка), у него есть ряд преимуществ: эффективен на небольших наборах данных, на наборах данных до …   Википедия

  • Сортировка пузырьком — Сортировка простыми обменами, сортировка пузырьком (англ. bubble sort)  простой алгоритм сортировки. Для понимания и реализации этот алгоритм  простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²).… …   Википедия

  • Сортировка подсчётом — алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют (или их можно отобразить в)… …   Википедия

  • Сортировка перемешиванием — (Шейкерная сортировка) (англ. Cocktail sort) разновидность пузырьковой сортировки. Анализируя метод пузырьковой сортировки можно отметить два обстоятельства. Во первых, если при движении по части массива перестановки не происходят, то эта… …   Википедия

  • Сортировка расчёской — (англ. comb sort)  это довольно упрощённый алгоритм сортировки, изначально спроектированный Влодзимежом Добосиевичем в 1980 г. Позднее он был переоткрыт и популяризован в статье Стивена Лэйси и Ричарда Бокса в журнале Byte Magazine …   Википедия

  • Сортировка слиянием — Действие алгоритма на примере сортировки случайных точек. Сортировка слиянием (англ. merge sort) алгоритм сортировки, который упорядочивает списки (или другие структуры данных, доступ к элементам которых можно получать только п …   Википедия

  • Сортировка с помощью двоичного дерева — Пример двоичного дерева Сортировка с помощью двоичного дерева (сортировка двоичным деревом, сортировка деревом, древесная сортировка, сортировка с помощью бинарного дерева, англ. …   Википедия

  • Устойчивая сортировка — Устойчивая (стабильная) сортировка  сортировка, которая не меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи. Устойчивость является очень важной характеристикой алгоритма сортировки, но, тем не менее, она… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»