嚴格弱序再理解

2021-10-02 05:26:03 字數 957 閱讀 3453

嚴格弱序

是二元謂詞bool = f(x,y)的特性。

如果對於f(x,y),總是有以下三個條件滿足:

1)非自反性

f(x,x) == false

2) 非對稱性

f(x,y) == !f(y,x)

3) 傳遞性

若f(x,y)==true , f(y,z)==true; 則f(x,z)==true

我們稱f(x,y)這個謂詞是嚴格弱序的。

我們考察c++的操作符 < 。這個操作符有左右兩個運算元,可以認為是乙個二元謂詞。

1<1 == false

1<2 == !(2<1)

若1<2, 2<3;則1<3

可見,《是嚴格弱序的

我們再考察c++的操作符 <= 。

1<=1  ==  true  違反性質1

1<=2  ==  2<=1  違反性質2

可見,<= 不是嚴格弱序的

考察 大於運算子》,它是嚴格弱序的。

嚴格弱序的用途:

若 f(x,y)==true, 則x在y的"前面"

若 f(y,x)==true, 則x在y的"後面"

若 !f(x,y) && !f(y,x), 則x,y等價。或者x,y並列。

若 !f(x,y)==true, 則x在y的"後面"或者x,y並列。

若 !f(y,x)==true, 則x在y的"前面"或者x,y並列。

乙個f(x,y)謂詞能表達所有可能的前後關係計算方法。

stl容器和演算法(例如map容器的key,sort演算法的比較器。),需要用到比較器時,是假設了比較器是滿足嚴格弱序的。

如果違反,則行為未定義(程式crash,破壞行為)。

int a=;

std::sort(a,a+13,std::less_equal());

在vsdebug模式下,報錯。原因是std::less_equal()違反嚴格弱序

嚴格劣勢策略和弱劣勢策略

link 1,嚴格劣勢策略與弱劣勢策略 嚴格劣勢策略的定義是什麼?弱劣勢策略的定義是什麼?請用乙個包含兩個人參與的博弈矩陣來舉例說明,要求其中乙個參與者有三個策略且三者之一為嚴格劣勢策略,另乙個參與者有三個策略但三者之一為弱劣勢策略,請指出你所舉例子中的劣勢策略。2,迭代剔除 弱 劣勢策略 請看下面...

再理解敏捷

2009年1月24日 2008年春,專案做的對敏捷有了點興趣,花了兩個晚上瀏覽了 敏捷迭代開發 管理者指南 理念式的書,看起來比較輕鬆,摘錄一些自己的體會。有些需求在開始的時候是提不出來的,或者說沒法細化的,強行的過渡需求分析是浪費時間的行為,到後來多半還是要改。瀑布 其實royce大大提出的瀑布模...

遞迴再理解

其實關於遞迴,我也是比較模糊的,至今能理解和能用的遞迴演算法,基本是靠記憶和經驗,要是讓我自己設計乙個遞迴,估計又得難半天,很早都想總結一下,喜歡瀏覽技術網 站,總是能找到好東西,現在將遞迴演算法總結如下,也不是多麼深刻,多麼高大上,可以說還是拙見吧 定義遞迴演算法 基本思想 那麼什麼是遞迴演算法呢...