PartialOrdering, StrictWeakOrdering, TotalOrdering, в чем основное отличие приложения

[Официальный документ SGI]

Из-за нерефлексивности и транзитивности оператор< всегда удовлетворяет
определение частичного упорядочения. Определение строгого слабого
порядок является более строгим, и определение общего порядка
еще строже.

И я также прочитал определение строгого слабого порядка в документе: StrictWeakOrdering

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

Я не совсем уверен в этом определении. Некоторые основные вопросы:

1.Is частичный заказ неявно определить эквивалентность?

2. Как насчет строгий слабый порядок а также общий заказ?

3.STL требует строгого слабого упорядочения в алгоритмах сортировки, почему не частичное или полное упорядочение?
Для этого вопроса я прочитал некоторые учебники, которые доказывают, что правила сравнения действительны, доказывая, что правило удовлетворяет трем аксиомам: нерефлексивность, антисимметрия, транзитивность, которая является определением для частичного упорядочения, и документ ссылается на этот оператор< всегда удовлетворяет этому определению, так почему же мы не можем просто сравнивать объекты, используя частичное упорядочение, или эквивалентно, используя оператор

4

Решение

Частичное упорядочение, по сути, <=, Если оба a <= b а также b <= a тогда вы можете сказать, что a эквивалентно b, Но также возможно, что ни a <= b ни b <= a — эти два элемента несопоставимы. В результате вы не можете навязать общий заказ (например, std::sort потребуется) на множестве с частичным отношением порядка — в лучшем случае вы можете сделать топологическую сортировку. Вы также не можете вывести отношение эквивалентности — опять же, могут быть элементы, которые несопоставимы.

Строгий слабый порядок как <, Это не позволяет иметь оба a < b а также b < aи если нет a < b ни b < aВы можете просто произнести a а также b эквивалент.

Полное упорядочение — это просто строгое слабое упорядочение, когда два элемента эквивалентны тогда и только тогда, когда они равны (что имеет смысл только в том случае, если у вас есть предикат сравнения равенства в дополнение к предикату less-than, и нет стандартного алгоритма библиотеки C ++, который использует оба в то же время, поэтому проблема в значительной степени спорная в этом контексте).

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]