Необходим собственный алгоритм сортировки - PullRequest
1 голос
/ 07 апреля 2011

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

  • Списки для сортировки не имеют одинакового количества элементов.
  • Значения, по которым сортируются элементы, непосредственно не наблюдаются.
  • Операция сравнения двух элементов стоит дорого.
  • Вы можете параллельно выполнять столько операций сравнения, сколько пожелаете, без увеличения расходов.
  • Каждый элемент может одновременно участвовать только в одной операции сравнения.
  • Результат операции сравнения дает только больше, меньше или равно.
  • Существует вероятность того, что операция сравнения приведет к неправильному значению, которое является динамическим, учитывая разницу в скрытых значениях элементов.
  • У нас нет никаких указаний, когда сравнение дает неверное значение.
  • Мы можем предположить, что динамическая частота ошибок сравнения обычно распределяется.
    Элементы могут периодически быть недоступны для сравнения.

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

1 Ответ

0 голосов
/ 07 апреля 2011

Я бы посмотрел на сети компараторов.Одним из допущений является возможность параллельного выполнения нескольких сравнений, а обычной целью является минимизация количества «слоев» сравнений.Таким образом, так называемая сеть AKS может достичь времени O (log n).

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

Начальная точка: Википедия

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

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