簡體   English   中英

PartialOrdering,StrictWeakOrdering,TotalOrdering,應用程序的主要區別是什么

[英]PartialOrdering, StrictWeakOrdering, TotalOrdering, what's the main difference in application

[SGI正式文件]

由於缺乏自反性和傳遞性,operator <始終滿足部分排序的定義。 嚴格弱排序的定義更嚴格,而總排序的定義也更嚴格。

我還閱讀了文檔中的嚴格弱排序的定義: StrictWeakOrdering

前三個公理,不自反性,反對稱性和可傳遞性,是部分有序的定義; 嚴格弱序的定義要求等價的可傳遞性。 完全排序是一種滿足甚至更高條件的命令:等價必須等於等價。

我對這些定義不太確定。 一些主要問題:

1, 偏序是否隱式定義了等價關系?

2. 嚴格的弱排序總排序如何?

3.STL在排序算法中要求嚴格的弱排序,為什么不是部分排序或全部排序? 對於這個問題,我已經閱讀了一些教科書,這些教科書通過證明該規則滿足三個公理來證明該比較規則是有效的:不反身性,反對稱性和可傳遞性(這是部分排序的定義),並且文檔中指出operator <始終滿足該定義,因此為什么我們不能僅使用部分排序或等效地使用運算符來比較對象

本質上,部分排序為<= 如果a <= bb <= a都可以說a等於b 但是也有可能a <= bb <= a兩者都不可比。 結果,您不能在具有部分排序關系的集合上強加總順序(如std::sort會需要)-充其量您可以進行拓撲排序。 您也無法得出等價關系-同樣,可能存在不可比的元素。

嚴格的弱排序就像< 它不允許同時a < bb < a ,並且如果a < bb < a a < b沒有,則可以將ab等同地發音。

總排序只是嚴格的弱排序,其中兩個元素僅當且僅當它們相等時才等效(這僅在您具有小於小於謂詞的相等比較謂詞且沒有C ++標准庫算法同時使用這兩個元素時才有意義)同時,因此在這種情況下,該問題很大程度上沒有解決)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM