#sorting #ranking
#сортировка #Рейтинг
Вопрос:
Это общий «алгоритмический» вопрос, а не программный.
Предположим, у нас есть таблица записей в следующем виде:
S/N Cost Profit Review
1 5 9 4
2 10 6 5
3 8 11 6
4 12 5 9
и мы хотим каким-то образом сортировать и ранжировать эти записи в соответствии с несколькими критериями (атрибутами); например, стоимость и прибыль.
Существует ли какой-либо известный процесс или алгоритм, который может помочь в этом?
Я знаю, что это многоцелевая проблема, но я пытаюсь выяснить, есть ли альтернатива сортировке записей в таблице с несколькими атрибутами.
Заранее спасибо.
Комментарии:
1. Размещайте вопросы по математике на Maths stack exchange.
2. @NewWorld это алгоритмический вопрос. Таким образом, я думаю, что он подходит и здесь. Спасибо.
3. Моя ошибка; этот вопрос больше подходит для обмена стеками компьютерных наук, чем SO.
Ответ №1:
Абсолютно! В вашей задаче вы хотите отсортировать в зависимости от одного или нескольких атрибутов. Здесь я предполагаю, что атрибут имеет большее значение, чем другой атрибут, поэтому, например, если вы cost
сначала упорядочиваете по, и в итоге получаете три одинаковых элемента cost
, вы попадаете в сортировку в зависимости от другого менее значимого атрибута: profit
например.
Алгоритм:
- Сортировка с помощью эффективного алгоритма сортировки — скажем: быстрая сортировка
- Извлеките дубликаты (если таковые имеются), затем отсортируйте их, используя другой (менее значимый) атрибут
- Объедините оба массива <- это зависит от того, какой вы хотите получить окончательную сортировку.
- Печать
Этот алгоритм должен составлять O(2nLogn) => O(nLogn)
Комментарии:
1. @AK, большое спасибо за ваше предложение. Это одно из возможных решений проблемы. Однако знаете ли вы о какой-либо технике / подходе, которые можно использовать для ранжирования записей путем одновременного применения нескольких критериев?
2. На самом деле вы не можете заказать что-то в двух кафетериях одновременно, даже будучи человеком, есть критерии, которые в какой-то момент будут стоить больше, чем другие.. Другим решением было бы объединение этих двух кафетериев в одно, скажем:
total-criteria = 90% criteria-1 10% criteria-2
затем сортировка на основеtotal-criteria
3. @AK, я согласен, что это возможное решение этой проблемы. Что ж, проблема в данном случае заключается в том, что если вы хотите выбрать запись, которая удовлетворяет этим критериям и минимизирует функцию полезности, боюсь, вам не избежать грубой силы. Вот почему я пытаюсь выяснить, есть ли альтернативный способ сделать это.